读书人

CSerialPort串口类初始化Initport()

发布时间: 2012-05-02 15:36:04 作者: rapoo

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);

读书人网 >VC/MFC

热点推荐