首页| 论坛| 消息
主题:自用封装类——线程中使用QSerialPort串口类代码
realfan发表于 2015-01-30 23:57
原来类中用了QWaitCondition,在某些情况下,会有问题,更新为QSemaphore。更新代码如下,请下载新代码:

20160301更新
=============================================================
相信很多Qter在多线程中使用通迅类,如QTcpSocket,QSerialPort类等,会遇到
QObject: Cannot create children for a parent that is in a different thread
这类提示吧。
关于Qt对象,线程已经有不少文章介绍了。
本人在编写程序时,用到串口通迅,也涉及线程调用问题,故封装了一个类。使用这个类,在使用串口通迅时,不必再考虑这个线程问题,不管在哪个线程,随意调用读写函数。
类接口:
MySerialPort(const QString strComName = "")
构造函数,可以直接传入串口名,Windows下,如 MySerialPort mycom("COM1");

bool setCOM(const QString strCOM, const int iBautRate=9600, const int iDataBits=8, const char chParity='N', const char chStopBits=1);
打开串口

qint64 write(const QByteArray & byteArray);
qint64 write(const char * data, qint64 maxSize = -1);
向串口写数据

void close();
关闭串口

void clear();
清除缓冲区

bool EchoCommand(const QString & strCmd, const QString& strExpectReply ="", QString * pstrReply = 0);
同步发送应答(此函数使用都可以按需要更改)

void sigDataReady(QByteArray)
非同步应答模式下,收到数据会发的信号
===================================================
下面这两个文件是老的,请下载前面更新的文件
附件: myserialport.cpp (10 K) 下载次数:310
附件: myserialport.h (3 K) 下载次数:263
描述:20160301更新
附件: myserialport.cpp (11 K) 下载次数:945
描述:20160301更新
附件: myserialport.h (3 K) 下载次数:931
回帖(28):
28楼:
27楼:
26楼:epoll

全部回帖(28)»
最新回帖
收藏本帖
发新帖