QT QSerialPort
QSerialPort只能在子线程中创建,操作放子类。
不同线程怎么跨线程操作不同变量?
不阻塞,事件响应实现同步。
同步操作:
send->recv->send->recv 也就是每一次需要等,并且以当前的状态不动。
响应不能改变当前状态。
电机转动->接收数据->下一次电机转动或是不转动
写在同步操作中,是一个函数,在线程中等接收。而电机转动或不转是函数写的逻辑决定的。
写在异步操作中,是主程序跑掉了,原来的程序状态没有了。再次接收到响应,回不到原来的逻辑。
结论是,需要像栈一样存储好原先的状态,功能响应仍然是回到这个功能函数中。
问题:主要功能调用子功能,子功能的进入会先响应子功能的状态,因为是异步的,执行完子函数,主函数也不会执行,卡在子函数的状态。
结束后,会直接结束,不恢复调用者的状态。故加上状态回复的功能。