2请教一下API驱动串口设备通信,使用readfile(),writefile(),程序是怎么处理设备数据的读写的??

opopop456456exx 2016-10-24 12:32:36
最近要写个Win32控制台程序,主要是和一个串口设备通信,想发送命令到设备,然后收到设备返回的数据显示在控制台窗口上,找了些历程看,也大概知道了整个串口驱动、读写的流程,就是creatfile()配置啊,DCB配置啊之类的,但是发现readfile()和writeflie()都是在主函数中调用的,而我想一直不间断地进行串口的读写、数据的收发,因此我并不太理解数据的传递是怎么处理的,只知道数据从readfile()传到我的buff里,所以想问下一个数据要从设备经过串口通信打印到我的控制台上,究竟经过了什么?它缓冲到了哪里?程序在后台是通过中断方式读取数据的吗?
...全文
758 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LittleNumb 2016-10-31
  • 打赏
  • 举报
回复
引用 6 楼 zgl7903 的回复:
翻译的也很多啊 百度下 http://blog.csdn.net/zcube/article/details/8591972
这里已经给出了方法了。 需要不间断发送数据的话需要启动线程,主线程接收信令,子线程发送数据!
用户 昵称 2016-10-31
  • 打赏
  • 举报
回复
要想做到比较实时,
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)在线程中,要不停的去读取串口,读到一个缓冲区后,然后还要有程序对读到主机的数据进行分析,区分包头,包尾。

zgl7903 2016-10-25
  • 打赏
  • 举报
回复
opopop456456exx 2016-10-24
  • 打赏
  • 举报
回复
我比较想要实现那种功能。。。控制台程序,然后输入指令,设备接受到指令后就不断向主机发送数据,控制台界面就刷刷刷地源源不断冒出这些数据……
opopop456456exx 2016-10-24
  • 打赏
  • 举报
回复
因为小弟刚从嵌入式方面转过来,所以比较熟悉单片机常用的 中断方式 读写串口,对windos编程的概念和程序的运行机制可能还不是很清楚。。。。总觉得串口读写在main函数里执行貌似不能实现实时性和后台性。。。。
三岁、就很帅 2016-10-24
  • 打赏
  • 举报
回复
用串口控件MSCOMM 百度下 MSCOMM编程 资料一大堆 你在要发数据 建议你开个线程发送,接收的时候是自动接收的,只要串口有数据过来,自动会触发接收函数 这个比较方便。
opopop456456exx 2016-10-24
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
看 MSDN 文档 Serial Communications in Win32
要哭了。。。大家都是这样直接看MSDN的么。。。英语亚历山大
zgl7903 2016-10-24
  • 打赏
  • 举报
回复

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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