QT4 USB串口设备打开出错的解决办法

来源:互联网 发布:unity ugui背包 数据 编辑:程序博客网 时间:2024/06/05 06:45

在 Windows 下只需要使用其中的6个文件:

qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win_qextserialport.cpp和win_qextserialport.h

如果在 Linux 下则是:qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,posix_qextserialport.cpp和posix_qextserialport.h。

 

Windows/Linux下的串口编程:

        由源码我们知道:串口类 Win_QextSerialPort (Linux下则是 Posix_Qextserialport,以下不再说明)是继承自类QextSerialBase ,而类 QextSerialBase  又继承自 QIODevice 。

 

定义类 Win_QextSerialPort  时:

Windows下是:myCom = new Win_QextSerialPort("com1", QextSerialBase::EventDriven);

Linux下则是:   myCom = new Posix_QextSerialPort("/dev/ttyS1", QextSerialBase::Polling);

有两处不同:一是类名不同,二是两个参数都不同。

 

一眼就能看出第一个参数是串口名称:

Windows下是 com1,com2,。。。。

Linux下是 /dev/ttyS0,/dev/ttyS1。。。。

需要说明的是:如果第一个参数直接使用"com1"这样的形式,那么当打开串口号大于10的串口时(如"com11","com12"),是无法成功打开的。据说是因为这个类库没有考虑串口号大于10的情况(不管是不是这个原因,我们找到解决办法就行了)。遇到这个问题,解决办法是:这么写 "\\\\.\\com11" 。打开串口就没有任何限制了。(Linux下不存在以上问题)

在PC机上,一般是用USB转串口,则应当是 "/dev/ttyUSB0" ,具体端口号是多少,自己去查看一下。如果是做嵌入式开发,在交叉编译的时候记得改回来。


0 0