CSerialPort串口类初始化Initport()总是失败
代码如下
serialport.InitPort(this,1,9600,0,8,1,EV_RXFLAG | EV_RXCHAR,512)
不知为什么总是失败,是不是有什么服务没有打开,请高手帮助!
[解决办法]
COM1后面不要加“:”
hCom = CreateFile ((LPCWSTR)"COM1:",GENERIC_WRITE |GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,NULL);
[解决办法]
CSerialPort没用过不敢说,看一下GetLastError返回什么错误吧。
但是CreateFile的用法显然是错误的,首先不要把ASCII字符串强制为UNICODE字符串,正常用
CreateFile(_T("COM1")...
即可适应不同编码,
一定要用UNICODE就用
CreateFile(L"COM1"...//或许会报错,那就用上面的。
但是决不能对不同编码用直接强制类型转换。
[解决办法]
把InitPort函数里面
sprintf(szPort, "COM%d", portnr);
改为
sprintf(szPort, "\\\\.\\COM%d", portnr);