如何从串口发送文件?

crackerlee 2003-06-09 08:11:58
有一pc通过串口连接单片机,通讯设置为:
波特率 115200
数据缓存 32k
流量控制 硬件、CTS 信号侦测
超时设置 60秒
数据位 8位
停止位 缺省为2位
奇偶校验 无

要求发送一个文件给单片机,程序应如何写?
...全文
620 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AthlonxpX86 2003-06-12
  • 打赏
  • 举报
回复
用CSerialPort要注意的问题在下面的贴子里面,是我修改的,但还不是很完善,注意内存泄漏

http://expert.csdn.net/Expert/topic/1851/1851932.xml?temp=.9822657
http://expert.csdn.net/Expert/topic/1505/1505867.xml?temp=.2344019
crackerlee 2003-06-12
  • 打赏
  • 举报
回复
应该怎样修改呢?能给出发送文件的程序片段吗?
AthlonxpX86 2003-06-11
  • 打赏
  • 举报
回复
crackerlee说的CSerialPort类确实不错,但是在传输大文件的时候要适当的修改一下
crackerlee 2003-06-10
  • 打赏
  • 举报
回复
我有CSerialPort类,但我对串口编程不熟悉,我只要求发送不要求接收,我觉得困惑的地方是发送时如何检测缓冲区的状态?谁有这方面的程序片段呢?
gileber 2003-06-10
  • 打赏
  • 举报
回复
一般来说有两种:
1、用MS的控件MSCOMM
2、用串行通信类Cserial
3、直接用Win32api函数
4、利用端口函数直接操作

1 MSComm控件的属性

CommPort:设置串口号,类型 short :1-comm1 2-comm2.
Settings:设置串口通信参数,类型 CString :B波特率,P奇偶性(N无校验,E偶校验,O奇校验),D字节有效位数,S停止位。
PortOpen:设置或返回串口状态,类型 BOOL:TURE打开,FALSE关闭。
InputMode:设置从接收缓冲区读取数据的格式,类型 long: 0-Text 1-Bin。
Input:从接收缓冲区读取数据,类型 VARIANT。
InBufferCount:接收缓冲区中的字节数,类型:short。
InBufferSize:接收缓冲区的大小,类型:short。
Output:向发送缓冲区写入数据,类型:VARIANT。
OutBufferCount:发送缓冲区中的字节数,类型:short。
OutBufferSize:发送缓冲区的大小,类型:short。
InputLen:设置或返回Input读出的字节数,类型:short。
CommEvent:串口事件,类型:short。

程序示例

串口初始化

if (!m_comm.GetPortOpen())m_comm.SetPortOpen(TURE); /*打开串口*/

m_comm.SetSettings("4800,n,8,1"); /*串口参数设置*/
m_comm.SetInputMode(0); /*设置TEXT缓冲区输入方式*/
m_comm.SetRthresHold(1); /*每接收一个字符则激发OnComm()事件*/

接收数据

m_comm.SetInputLen(1); /*每次读取一个字符
VARINAT V1=m_comm.GetInput();

/*读入字符*/

m_V1=V1.bstrval;

发送字符
m_comm.SetOutput(Colevariant ("Hello"); /*发送 “Hello” */
2、Cserial 是由MuMega Technologies公司提供的一个免费的VC++类,可方便地实现串行通信。

3、Windows API通信函数方法

这个在msdn里面讲的很清楚标题:Communication Reference

4、利用端口函数直接操作

这种方式主要是采用两个端口函数_inp(), _outp()实现对串口的读写,其中读端口函数的原型为:

int _inp(unsigned shot port)

该函数从端口读取一个字节,端口号为0~65535。

写端口的函数原型为:

int _outp(unsigned shot port, int databyte)

该函数向指定端口写入一个字节。

不同的计算机串口地址可能不一样,通过向串口的控制及收发寄存器进行读写,可以实现灵活的串口通信功能,由于涉及具体的硬
件电路讨论比较复杂
crackerlee 2003-06-10
  • 打赏
  • 举报
回复
up
FAICHEN 2003-06-09
  • 打赏
  • 举报
回复
你找一个现成的串口类吧!

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧