2
我试图从传感器读取数据。传感器控制器使用db9头(com1),因为我会用com1,我用db9转换usb转换器并得到com 11.为什么我的程序打开COM1而不是COM11?
我有程序读写串口,它工作的时候我用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;
}
}
}
}
难道是因为软件/程序或硬件问题LEM?
,当我尝试使用超级终端,它可以读取和写入COM 11
谢谢,我没有意识到C无法接受Com超过9 – Limavolt
@Limavolt这与C无关。它只是Win32 API的工作方式。请参阅http://support.microsoft.com/kb/115831 – paddy
谢谢,我的程序可以识别com 11,但它无法读写com端口。并且如果我将连接更改为com 1,并且仍然使用“\\\\。\\ COM11”并正常工作(但连接仍在com1中) – Limavolt