(4)HID设备的读写
在取得了HID设备的路径全面后,即可开始对HID设备进行读写,对设备的读写也是通过调用相应的函数来实现的。
控制下位机进行数据采集
上位机向下位机发送命令,控制下位机进行数据采集,并从下位机获取数据,在这个过程中,要处理好两个线程的同步的问题,即数据采集线程和数据处理线程能够协调工作,保正系统能正确稳定的工作。具体的解决方法是实现对某些数据访问的原子操作,即一个线程在对公共数据进行访问时,另一个线程不能打扰,直到操作线程操作完成,放弃对数据的使用权,另一个线程才能够访问数据。
下位机获取了关于采集的有关参数后,即可开始采集,每隔一定时间采集一个数据,当采集数据数目达到限制值个数后,本次采集完成,此时下位机才开始将采集数据发送给上位机。
上位机对采集的数据的处理
上位机在将数据采集命令发送给下位机后,所要做的就是等待下位机采集完成并接收数据,因此上位机将循环查询下位机工作状态,一旦检测到下位机采集结束的标志,上位机就开始对数据进行处理。
数据处理分为三种:
(1)绘制波形图
绘制波形图的要求有两点:第一是不能频繁闪烁,影响观察;二是波形图是动态的,因为绘制区域有限,而所采集的数据是源源不断增加的,因此要求波形图能够动态的更新。
(2)添加到列表显示
可直观地查看目前所采集的所有数据。
(3)保存到文件
运用功能强大的数据处理软件对数据进行更深的处理。
界面显示
采集单极性正弦波工作界面
代码:
1 HID设备通信模块实现代码/*hid.h头文件*/
2 #ifndef HID_H
3 #define HID_H
4 #include
5 #include
6 #include
7 #include “commonuse.h”
8 using std::string;
9 #pragma comment( lib, “setupapi.lib” )
10 extern “C” {
11 #include “hidsdi.h”
12 }
13 #pragma comment( lib, “hid.lib” )
14
15
16 class Hid
17 {
18
19 public:
20 Hid(const string &DeviceIdStr = MY_DEVICE_ID);