C++ Windows下的串口编程

C++ Windows下的串口编程,c++,c,winapi,serial-port,C++,C,Winapi,Serial Port,我在帮一个朋友做电气工程项目。他正在制造一种设备,该设备将使用串行端口与某些软件进行通信。在windows平台(Win7)上,如何直接读取和写入串行端口上的特定pin?Windows是否为这类事情公开了一个API?是的,基本上您打开一个具有特殊名称的串行端口设备,例如COM1,并像读取文件一样对其进行读写。使用的引脚(自然)将是串行传输和接收引脚 如果您想要控制特定的管脚,但不一定是串行方式,那么最好使用并行端口。并行端口电压通常对TTL级逻辑更友好,并且通常可以直接驱动 更新:如果您只需要根据

我在帮一个朋友做电气工程项目。他正在制造一种设备,该设备将使用串行端口与某些软件进行通信。在windows平台(Win7)上,如何直接读取和写入串行端口上的特定pin?Windows是否为这类事情公开了一个API?

是的,基本上您打开一个具有特殊名称的串行端口设备,例如
COM1
,并像读取文件一样对其进行读写。使用的引脚(自然)将是串行传输和接收引脚

如果您想要控制特定的管脚,但不一定是串行方式,那么最好使用并行端口。并行端口电压通常对TTL级逻辑更友好,并且通常可以直接驱动


更新:如果您只需要根据您的评论切换一个pin码,您可以使用DTR线路进行切换。有关如何执行此操作,请参阅函数文档。

您可以使用WaitCommEvent函数监视特定pin。假设电压变化触发CTS信号,它可以是这样的

hCommn = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
......
 WaitCommEvent(hCommn, EV_CTS, NULL);
......

电压不是问题,因为试验板电路能够处理3到25V的电压。理想情况下,我想做的是使用引脚向电路发送持续+3V信号。我仍然可以使用串行端口执行此操作,还是需要切换到并行端口?另外,你能给我指出一些代码参考吗?除了CreateFile(…Com1…)之外,MSDN还有其他功能吗?@user318811:Greg的权利:对于类似的事情,您几乎肯定希望使用并行端口。串行端口上的管脚几乎完全由UART驱动,它主要在时钟下驱动,因此通常不可能在给定的时间段内(基本上,以您选择的任何速度传输一个字节的时间)保持给定的状态。您可以降低串行端口的速度(例如,降低到300波特),使其保持更长的状态,但这也会限制最大转换速率(例如,降低到300/秒)。您可以将DTR线路用作单位控制,当您打开端口时(在正确模式下)它会变高,当您关闭itDTR时,它会变低,RTS将工作。你需要一个二极管来保护电路不受它输出的负电压的影响。在并行端口编程方面,可以给我一些参考资料(记住我想要具体的引脚控制)。