最近要写个Win32控制台程序,主要是和一个串口设备通信,想发送命令到设备,然后收到设备返回的数据显示在控制台窗口上,找了些历程看,也大概知道了整个串口驱动、读写的流程,就是creatfile()配置啊,DCB配置啊之类的,但是发现readfile()和writeflie()都是在主函数中调用的,而我想一直不间断地进行串口的读写、数据的收发,因此我并不太理解数据的传递是怎么处理的,只知道数据从readfile()传到我的buff里,所以想问下一个数据要从设备经过串口通信打印到我的控制台上,究竟经过了什么?它缓冲到了哪里?程序在后台是通过中断方式读取数据的吗?

解决方案 »

  1.   

    因为小弟刚从嵌入式方面转过来,所以比较熟悉单片机常用的    中断方式   读写串口,对windos编程的概念和程序的运行机制可能还不是很清楚。总觉得串口读写在main函数里执行貌似不能实现实时性和后台性。
      

  2.   

    用串口控件MSCOMM  百度下 MSCOMM编程 资料一大堆  
    你在要发数据 建议你开个线程发送,接收的时候是自动接收的,只要串口有数据过来,自动会触发接收函数 这个比较方便。
      

  3.   

    看 MSDN 文档  
    Serial Communications in Win32
      

  4.   

    要哭了大家都是这样直接看MSDN的么英语亚历山大
      

  5.   

    翻译的也很多啊   百度下http://blog.csdn.net/zcube/article/details/8591972
      

  6.   

    要想做到比较实时,
    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)在线程中,要不停的去读取串口,读到一个缓冲区后,然后还要有程序对读到主机的数据进行分析,区分包头,包尾。