网页建站如何保存分享,深圳社保,山西省网站建设制作,wordpress_ joomla_ drupalQt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述
接入串口#xff0c;配置串口顺序进行接收数据#xff1b;数据分成两个串口分别传入#xff0c;使用多线程并发接入#xff1b;时域数据有两个通道#xff08;I#xff0c;Q#xff09;#xff0c;分别以实… Qt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述
接入串口配置串口顺序进行接收数据数据分成两个串口分别传入使用多线程并发接入时域数据有两个通道IQ分别以实时波形展示频域数据有三个通道IQCC表示联合通道分别展示FFT波形状态数据列表实时展示时域可以配置时间窗口大小也就是展示的波形最大时间段频域可以配置频域段数据支持随时保存并可以打开查看
成品展示 实现难点
Qt多线程
Qt实现多线程有两种方式
一种是使用QThread定义个类继承QThread;然后重写类的run()方法;在主线程中通过类对象的start()方法启动线程一种是使用自定义类任务类继承QObject在任务类中定义公共任务方法实现具体的任务处理逻辑在主线程中创建QThread对象千万不要给创建对象指定父对象通过调用QObject类提供的moveToThread方法将任务类对象移动到创建的子线程对象QThread中调用子线程对象的start()方法子线程开始启动但是移动到子线程中的对象并没有工作通过调用自定义类对象的工作函数让这个函数开始执行这时候就是在移动到的子线程中执行的。
两种方式的区别
第一种由于run()方法不可以带参数所以如果要传参数需要把参数作为成员变量通过信号槽机制进行传递第二种没有这种限制在任务类中定义的任务函数可以带有参数所以更加灵活