首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CSerialPort串口类初始化Initport()总是失败,该怎么处理

2012-05-02 
CSerialPort串口类初始化Initport()总是失败代码如下serialport.InitPort(this,1,9600,0,8,1,EV_RXFLAG |

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

热点排行