gpt4 book ai didi

c - 为什么我的程序可以打开 COM1 而不能打开 COM11?

转载 作者:行者123 更新时间:2023-12-01 12:43:06 25 4
gpt4 key购买 nike

我试图从传感器读取数据。传感器 Controller 使用 db9 头 (com1),因为我将使用 com1,我使用 db9 到 USB 转换器并获得 com 11。

我有串口读写程序,我用com1的时候可以用,但是当我改成com 11时,程序打开com失败,因为到了ERROR_FILE_NOT_FOUND
这是我的串口编程程序:

Serial::Serial(char *portName)

{

this->connected = false;

wchar_t wcPort[64];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcPort, strlen(portName), portName, _TRUNCATE);

this->hSerial = CreateFile(wcPort,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

//Check if the connection was successfull
if(this->hSerial==INVALID_HANDLE_VALUE)
{
//If not success full display an Error
if(GetLastError()==ERROR_FILE_NOT_FOUND){

//Print Error if neccessary
printf("ERROR: Handle was not attached. Reason: %s not available.\n", portName);

}
else
{
printf("ERROR!!!");
}
}
else
{

DCB dcbSerialParams = {0};


if (!GetCommState(this->hSerial, &dcbSerialParams))
{

printf("failed to get current serial parameters!");
}
else
{


dcbSerialParams.BaudRate=CBR_38400;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
dcbSerialParams.fOutX=TRUE;
dcbSerialParams.fInX=TRUE;



if(!SetCommState(hSerial, &dcbSerialParams))
{
printf("ALERT: Could not set Serial Port parameters");
}
else
{

this->connected = true;


}
}
}

}

是因为软件/程序还是硬件问题?

当我尝试使用 super 终端时,它可以读写 com 11。

最佳答案

要打开编号为 10 及更高的 COM 端口,您需要在名称前加上 \\.\ .

现在,在 C 中,您必须避开所有这些反斜杠。所以你需要打开的端口是"\\\\.\\COM11" .

关于c - 为什么我的程序可以打开 COM1 而不能打开 COM11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495150/

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