最近要写个Win32控制台程序,主要是和一个串口设备通信,想发送命令到设备,然后收到设备返回的数据显示在控制台窗口上,找了些历程看,也大概知道了整个串口驱动、读写的流程,就是creatfile()配置啊,DCB配置啊之类的,但是发现readfile()和writeflie()都是在主函数中调用的,而我想一直不间断地进行串口的读写、数据的收发,因此我并不太理解数据的传递是怎么处理的,只知道数据从readfile()传到我的buff里,所以想问下一个数据要从设备经过串口通信打印到我的控制台上,究竟经过了什么?它缓冲到了哪里?程序在后台是通过中断方式读取数据的吗?
解决方案 »
- 怎么实现QQ2010版本的界面效果……
- 求助!!尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- 如下广播,在winXP下可正常运行,在win98下sendto后面输出10013的错误,请问如何解决呢?
- VC8编出的程序在有的机器上不能运行
- 在主窗口大小位置不变的情况下,如何得到其内控件大小改变的消息?
- 【【【【急救】】】】关于系统如何通过字库计算每个字符宽度?
- 我发现我用VC的程序怎么看都像是用纯c++写的,不知道什么原因,是不是学习VC/MFC用非常熟悉库函数阿
- 小弟今年刚学c语言--大家帮忙 帮我改改程序(c语言)(1)
- 求助!请高手帮做一个数据文件转换的工具,价格您定!急!
- PB调用COM的代码,如何转换为VC++调用?
- 请教一下API驱动串口设备通信,使用readfile(),writefile(),程序是怎么处理设备数据的读写的??
- Vassistx为什么不能把光标显示在两个字符之间
你在要发数据 建议你开个线程发送,接收的时候是自动接收的,只要串口有数据过来,自动会触发接收函数 这个比较方便。
Serial Communications in Win32
1)读下位机的代码一定要写在线程中,写下位机代码可以写在主程序中
2)要采用异步方式, 一般打开设备是这样写的 comm_reader_handle = CreateFile(
( LPCTSTR )"\\\\.\\COM12", // COM1
GENERIC_READ | GENERIC_WRITE,
0, //share mode: no share
NULL, //securiy attributes
OPEN_EXISTING, //Open disposition
FILE_FLAG_OVERLAPPED,
NULL );3)在线程中,要不停的去读取串口,读到一个缓冲区后,然后还要有程序对读到主机的数据进行分析,区分包头,包尾。