gpt4 book ai didi

不同COM串口无法通讯

转载 作者:行者123 更新时间:2023-11-30 15:01:33 31 4
gpt4 key购买 nike

我在与 Windows 串行端口通信时遇到问题。

我有一个用 C 编写的 Windows 服务。该服务已准备好监听来自应用程序的请求以与 Pinpad 进行通信。非常简单。

问题出现在分配Pinpad的Com时,有时会分配COM4,COM5,COM9(这些com都工作正常),所以当Pinpad的com获取COM10或更高版本时,我会收到错误,并且无法通信用密码键盘。它向我发送了一个错误,该错误已经定义,但我无法弄清楚问题是什么,原因是在函数 CreateFileA 中。一切都很完美,我的意思是,它返回一个句柄,但在下一个函数中:GetCommState,我收到错误。

int srlOpen(char * szCOM)
{
DCB dcbSrlParms;
COMMTIMEOUTS timeouts;
int inRetVal = P_SUCCESS;
memset(&dcbSrlParms, 0x00, sizeof(dcbSrlParms));
memset(&timeouts, 0x00, sizeof(timeouts));

if(inRetVal > P_ERROR)
{
hSerial = CreateFileA(szCOM, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,0);
//hSerial = CreateFileA("COM21", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_ALWAYS,
// FILE_ATTRIBUTE_NORMAL,0);
if(hSerial == INVALID_HANDLE_VALUE)
{
if(GetLastError() == ERROR_FILE_NOT_FOUND)
{
inRetVal = ERR_PORT_NOT_FOUND;
}
}
}

if(inRetVal > P_ERROR)
{
dcbSrlParms.DCBlength = sizeof(dcbSrlParms);
if(!GetCommState(hSerial, &dcbSrlParms))
{
inRetVal = ERR_GET_PORT_CONFIG;
}
}

if(inRetVal > P_ERROR)
{
dcbSrlParms.BaudRate = CBR_19200;
dcbSrlParms.ByteSize = 8;
dcbSrlParms.Parity = NOPARITY;
dcbSrlParms.StopBits = ONESTOPBIT;

if(!SetCommState(hSerial, &dcbSrlParms))
{
inRetVal = ERR_SET_PORT_CONFIG;
}
}

if(inRetVal > P_ERROR)
{
timeouts.ReadIntervalTimeout = COMM_READ_INT_TMEOUT;
timeouts.ReadTotalTimeoutConstant = COMM_READ_TOTAL_TIMEOUT;
timeouts.ReadTotalTimeoutMultiplier = COMM_READ_TOTAL_MULTI;
timeouts.WriteTotalTimeoutConstant = COMM_WRITE_TOTAL_TIMEOUT;
timeouts.WriteTotalTimeoutMultiplier = COMM_WRITE_TOTAL_MULTI;

if(!SetCommTimeouts(hSerial, &timeouts))
{
inRetVal = ERR_SET_TIMEOUT_CONFIG;
}
}

pdebug (("inRetVal=%x", inRetVal));
return inRetVal;
}

最佳答案

com 端口名称无效。

com 端口过去 "COM9"需要不同的字符串格式。
请参阅Specify Serial Ports Larger than COM9

srlOpen("COM9");         //OK
srlOpen("COM10"); //Not OK
srlOpen("\\\\.\\COM9"); //OK
srlOpen("\\\\.\\COM10"); //OK

关于不同COM串口无法通讯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41349909/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com