• 3664阅读
  • 14回复

QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号 [复制链接]

上一主题 下一主题
离线@longsheng@
 

只看楼主 倒序阅读 楼主  发表于: 2020-06-22
QT 在DLL里的Qextserialport/QSerialPort都不能触发readyread信号;Qextserialport使用了这个时按网上查阅的设置了事件驱动模式:QextSerialPort::EventDriven,也不行;
离线@longsheng@

只看该作者 1楼 发表于: 2020-06-22
本帖提到的人: @liudianwu @liulin188 @dafei2015
离线clickto

只看该作者 2楼 发表于: 2020-06-22
QSerialPort是可以的。Qextserialport没试过,不清楚。我们实际项目中,在dll中使用QSerialPort,是没问题的。
离线llong

只看该作者 3楼 发表于: 2020-06-22
你可以更新下版本,有几个版本的Qt存在这个问题
离线@longsheng@

只看该作者 4楼 发表于: 2020-06-24
回 llong 的帖子
llong:你可以更新下版本,有几个版本的Qt存在这个问题 (2020-06-22 16:20) 

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

只看该作者 5楼 发表于: 2020-06-24
回 clickto 的帖子
clickto:QSerialPort是可以的。Qextserialport没试过,不清楚。我们实际项目中,在dll中使用QSerialPort,是没问题的。
 (2020-06-22 09:56) 

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

只看该作者 6楼 发表于: 2020-06-24
就正常使用,不用自己特别处理消息循环。我们使用的版本是5.11.2 MinGW版,Win7平台。
离线@longsheng@

只看该作者 7楼 发表于: 2020-07-06
回 clickto 的帖子
clickto:就正常使用,不用自己特别处理消息循环。我们使用的版本是5.11.2 MinGW版,Win7平台。
 (2020-06-24 22:13) 

那DLL里有封装界面么
离线clickto

只看该作者 8楼 发表于: 2020-07-06
回 @longsheng@ 的帖子
[url=http://www.qtcn.org/bbs/u.php?username=@longsheng  @]@longsheng  @[/url]:那DLL里有封装界面么 (2020-07-06 13:54) 

有。读取串口数据并绘图
本帖提到的人: @longsheng
离线@longsheng@

只看该作者 9楼 发表于: 2020-07-08
回 clickto 的帖子
clickto:有。读取串口数据并绘图 (2020-07-06 15:08) 

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

只看该作者 10楼 发表于: 2020-07-08
那你自己添加消息循环试试?
离线@longsheng@

只看该作者 11楼 发表于: 2020-07-08
回 clickto 的帖子
clickto:那你自己添加消息循环试试? (2020-07-08 10:17) 

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

只看该作者 12楼 发表于: 2020-07-08
你的串口信号收发处理在哪个线程里?
离线@longsheng@

只看该作者 13楼 发表于: 2020-07-09
回 @longsheng@ 的帖子
[url=http://www.qtcn.org/bbs/u.php?username=@longsheng  @]@longsheng  @[/url]:用的qtwinmigrate办法,所以就存在了上面我提的问题~ (2020-07-08 19:23) 

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

只看该作者 14楼 发表于: 2021-11-27
回 @longsheng@ 的帖子
[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版
本帖提到的人: @longsheng
快速回复
限100 字节
 
上一个 下一个