- 主题:qt子线程监听串串口
我在ui里通过按钮搜索机器串口并打开
打开后串口不进行操作
接着通过一个按钮创建子线程想在这个子线程里对串口进行读写
通过另一个按钮控制这个线程的死亡
这个思路有问题 发现通过按钮启动子线程然后用一个while来监听串口
导致这个按钮无法执行到结束
所以其它按钮也就无法点击
请教下怎么修改
--
FROM 120.244.24.*
qt 有串口操作的模块,你用的是 Qt 的还是第三方的?
如果是 Qt 的,你可以看一下 Qt 的文档。它使用 signal/slot 机制,异步单线程,基本原理就是针对每次操作,你都生成一个状态机:
struct WriteData: public QObject {
public:
void writeData();
private:
int state;
QByteArray data;
};
使用 signal/slot 连接 QSerialPort::byteWritten 到 writeData(),根据内部状态和数据决定要写入数据还是结束。这么干的话,你就可以在中途销毁这个 WriteData 对象,相当于结束你现在做的线程。
【 在 scanworld (臭蛋超人) 的大作中提到: 】
: 我在ui里通过按钮搜索机器串口并打开
: 打开后串口不进行操作
: 接着通过一个按钮创建子线程想在这个子线程里对串口进行读写
: ...................
--
FROM 110.81.15.*
感谢回复 多线程反而多事了
又学习了
【 在 hgoldfish 的大作中提到: 】
: qt 有串口操作的模块,你用的是 Qt 的还是第三方的?
: 如果是 Qt 的,你可以看一下 Qt 的文档。它使用 signal/slot 机制,异步单线程,基本原理就是针对每次操作,你都生成一个状态机:
: struct WriteData: public QObject {
: ...................
--
FROM 120.244.24.*