您好stackoverflow用户!
我需要在Windows环境中轮询串行端口的CTS线,
我已经成功打开了COM端口,
HANDLE hSerialIn;
const char* pcCommPort = TEXT("COM3");
hSerialIn = CreateFile(pcCommPort, GENERIC_READ | GENERIC_WRITE, \
0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
那我想吃点这样的东西
DCB dcb = { 0 };
while (GetCommState(hSerialIn, &dcb)) {
if (dcb.fOutxCtsFlow)
;
else
;
}
我对COM端口感兴趣的背景是,在那里,我有一个USB-> UART转换器,该转换器连接到测量设备的触发输出,该设备每秒触发一次输出,我想将其包含在程序中。当我通过Hercules(终端应用程序)连接到COM端口时,它可以工作,我看到我的CTS线路每秒都在变化。那么如何检查CTS线路的状态呢?
提前致谢。
最佳答案
DWORD dwModemStatus;
BOOL fCTS = 0;
if (!SetCommMask(hSerialIn, EV_CTS))
{
DWORD err = GetLastError();
printf("\nHandle creation error code: %x\n", err);
}
DWORD dwCommEvent;
while(1)
{
if (!WaitCommEvent(hSerialIn, &dwCommEvent, NULL)) // An error occurred waiting for the event.
printf("");
else
{
if (!GetCommModemStatus(hSerialIn, &dwModemStatus)) // Error in GetCommModemStatus;
return;
fCTS = MS_CTS_ON & dwModemStatus;
if(fCTS)
printf("%x ", fCTS);
}
}
关于c - 在Windows中轮询CTS线路的状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43392508/