Windows 下,操作串口,如何 获取 DTR 引脚的信号?
串口 DTR
------解决方案--------------------
在 comm 事件里 就没有 DTR :
#define EV_RXCHAR 0x0001 // Any Character received
#define EV_RXFLAG 0x0002 // Received certain character
#define EV_TXEMPTY 0x0004 // Transmitt Queue Empty
#define EV_CTS 0x0008 // CTS changed state
#define EV_DSR 0x0010 // DSR changed state
#define EV_RLSD 0x0020 // RLSD changed state
#define EV_BREAK 0x0040 // BREAK received
#define EV_ERR 0x0080 // Line status error occurred
#define EV_RING 0x0100 // Ring signal detected
#define EV_PERR 0x0200 // Printer error occured
#define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
#define EV_EVENT1 0x0800 // Provider specific event 1
#define EV_EVENT2 0x1000 // Provider specific event 2
------解决方案--------------------
你这代码有点不对的地方:
代码中 CreateEvent 创建的事件对象是手动置信号的,初始为无信号,而在二级线程里有 ResetEvent,但是,没有看到哪里有 SetEvent。这肯定不对。
------解决方案--------------------
你代码中有几处逻辑错误:
我看了一下:
WaitCommEvent 第一个参数是串口句柄,不应该是事件句柄,而且,我个人感觉,楼主没有必要再增加一个事件对象了,因为 SetCommMask就是针对串口事件的呀。
还有,你一个hCom ,在主线程中是 COM3,在二级线程中怎么又CreateFile COM4了呢? 这根本就没有打开两个串口呀……
楼主应该再多努力练习呀
------解决方案--------------------
其实,我在你的帖子中,看到 schlafenhamster 这位朋友已经帮你把代码贴出来了,我看了一下他的代码,没发现什么问题,但是我再看你的代码,发现了一些问题,只是把你们之间的差异说出来而已,真正帮助你决绝问题的,是 schlafenhamster 这位朋友。