查看完整版本: [-- QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号 --]

QTCN开发网 -> Qt应用版 -> QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

@longsheng@ 2020-06-22 08:03

QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号

QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号;Qextserialport使用了这个时按网上查阅的设置了事件驱动模式:QextSerialPort::EventDriven,也不行;

@longsheng@ 2020-06-22 08:07

clickto 2020-06-22 09:56
QSerialPort是可以的。Qextserialport没试过,不清楚。我们实际项目中,在dll中使用QSerialPort,是没问题的。

llong 2020-06-22 16:20
你可以更新下版本,有几个版本的Qt存在这个问题

@longsheng@ 2020-06-24 16:31
llong:你可以更新下版本,有几个版本的Qt存在这个问题 (2020-06-22 16:20) 

现在用的5.14版本,我发现要往串口里一直写数据,才会有触发的readyread信号,另外写的时候必须再加上waitwaitForBytesWritten()这个函数,要不然整个程序只能write()成功一次数据,再调用就发不出去数据了;如果只是打开串口,不写数据,那么这个串口也收不到数据;现在使用一对虚拟串口测试的。

@longsheng@ 2020-06-24 16:40
clickto:QSerialPort是可以的。Qextserialport没试过,不清楚。我们实际项目中,在dll中使用QSerialPort,是没问题的。
 (2020-06-22 09:56) 

要不断写才能触发,问下,DLL的消息循环你们是怎么处理的,用qtwinmigrate里的QMfcApp解决的么

clickto 2020-06-24 22:13
就正常使用,不用自己特别处理消息循环。我们使用的版本是5.11.2 MinGW版,Win7平台。

@longsheng@ 2020-07-06 13:54
clickto:就正常使用,不用自己特别处理消息循环。我们使用的版本是5.11.2 MinGW版,Win7平台。
 (2020-06-24 22:13) 

那DLL里有封装界面么

clickto 2020-07-06 15:08
[url=http://www.qtcn.org/bbs/u.php?username=@longsheng  @]@longsheng  @[/url]:那DLL里有封装界面么 (2020-07-06 13:54) 

有。读取串口数据并绘图

@longsheng@ 2020-07-08 09:57
clickto:有。读取串口数据并绘图 (2020-07-06 15:08) 

那就对了,我这个是无GUI的,没有消息循环。。。

clickto 2020-07-08 10:17
那你自己添加消息循环试试?

@longsheng@ 2020-07-08 19:23
clickto:那你自己添加消息循环试试? (2020-07-08 10:17) 

用的qtwinmigrate办法,所以就存在了上面我提的问题~

clickto 2020-07-08 21:15
你的串口信号收发处理在哪个线程里?

@longsheng@ 2020-07-09 15:05
[url=http://www.qtcn.org/bbs/u.php?username=@longsheng  @]@longsheng  @[/url]:用的qtwinmigrate办法,所以就存在了上面我提的问题~ (2020-07-08 19:23) 

没用线程,一个定时器100ms取队列的命令下发到串口,另一个定时器20ms去read;不过主动读的时候得加上 QApplication 的qApp.processevent(),否则会内存泄漏~

22133812 2021-11-27 10:12
[url=http://www.qtcn.org/bbs/u.php?username=@longsheng  @]@longsheng  @[/url]:没用线程,一个定时器100ms取队列的命令下发到串口,另一个定时器20ms去read;不过主动读的时候得加上 QApplication 的qApp.processevent(),否则会内存泄漏~ (2020-07-09 15:05) 

为什么用定时器做?数据量大很容易崩的,以前写代码时用过Qt自带的UDP类,大数据链丢包特别严重,那时还是4.8版


查看完整版本: [-- QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled