【发布时间】:2011-07-23 08:22:52
【问题描述】:
我正在帮助一位朋友完成他的电气工程项目。他正在构建一种设备,该设备将使用串行端口与某些软件进行通信。在 Windows 平台(Win7)上,如何直接读取和写入串行端口上的特定引脚? Windows 是否为此类事情公开了 API?
【问题讨论】:
标签: c++ c winapi serial-port
我正在帮助一位朋友完成他的电气工程项目。他正在构建一种设备,该设备将使用串行端口与某些软件进行通信。在 Windows 平台(Win7)上,如何直接读取和写入串行端口上的特定引脚? Windows 是否为此类事情公开了 API?
【问题讨论】:
标签: c++ c winapi serial-port
您可以使用 WaitCommEvent 函数来监控特定引脚。假设电压变化触发CTS信号,可以是这样的
hCommn = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
......
WaitCommEvent(hCommn, EV_CTS, NULL);
......
【讨论】:
是的,本质上您打开一个具有特殊名称的串行端口设备,例如COM1,然后像读取文件一样对其进行读写。使用的引脚(自然)将是串行发送和接收引脚。
如果您想控制特定引脚但不一定以串行方式控制,则最好使用 parallel 端口。并口电压通常对TTL电平逻辑更友好,通常可以直接驱动。
更新:如果您只需要根据您的评论切换一个引脚,您可以使用 DTR 线来完成此操作。请参阅EscapeCommFunction 函数文档了解如何执行此操作。
【讨论】: