|
1Qter豆
本帖最后由 Tom_Chen 于 2018-6-6 21:54 编辑
怎么实现串口上位机实时 发送与接收数据? 想实现的功能如下:向单片机发送指令(0x7f) , 单片机接收到0x7f后,会返回个应答信号(0x79)。串口工具在发送完0x7f 指令后,就开始等待应答信号的到来,接收到应答信号后 才开始执行接下来的任务。 每一小块任务都还要判断是否接收到了应答信号 ,如中途无应答 即要报错。
我写的工具是单线程 ,我在发送0x7f指令后 便开始判断接收 buff中是否有0x79(函数中使用 QByteArray .contains('y') 判断 是否接收到0x79 。0x79对应ASIIC码‘y’ )。 开始以为自己的逻辑很正确,但运行程序后 发现存在很大的问题 :发送指令后 ,单片机也相应返回了ACK信号 ,但是!!! Qserialport::readyRead信号并没有立即触发槽函数Read_Data( )进行串口数据的读取, 还是说槽函数在单线程中,当信号到来时 不能直接的被调用 ,需要等该部分函数执行完后 再进行调用? 信号与槽函数的连接类型采用Qt::DirectConnection直接连接方式 ,看文档的意思是立马调用啊 实际运行时为什么不是这样的 啊
说的有点乱 ,简单来说:我想向下位机发送指令0x7f,等待返回的应答信号0x79 判断是否接收到应答 ,再进行接下来的操作。我现在写的工具,在等待应答信号的时间周期里,未能对串口进行数据的读取 也就是信号到来时 槽函数未被调用 是不是单线程原因呢? 求大神帮忙解答
|
|