基于PIC单片机的数据采集系统设计

(4)HID设备的读写

在取得了HID设备的路径全面后,即可开始对HID设备进行读写,对设备的读写也是通过调用相应的函数来实现的。

控制下位机进行数据采集

上位机向下位机发送命令,控制下位机进行数据采集,并从下位机获取数据,在这个过程中,要处理好两个线程的同步的问题,即数据采集线程和数据处理线程能够协调工作,保正系统能正确稳定的工作。具体的解决方法是实现对某些数据访问的原子操作,即一个线程在对公共数据进行访问时,另一个线程不能打扰,直到操作线程操作完成,放弃对数据的使用权,另一个线程才能够访问数据。

下位机获取了关于采集的有关参数后,即可开始采集,每隔一定时间采集一个数据,当采集数据数目达到限制值个数后,本次采集完成,此时下位机才开始将采集数据发送给上位机。

基于PIC单片机的数据采集系统设计

上位机对采集的数据的处理

上位机在将数据采集命令发送给下位机后,所要做的就是等待下位机采集完成并接收数据,因此上位机将循环查询下位机工作状态,一旦检测到下位机采集结束的标志,上位机就开始对数据进行处理。

数据处理分为三种:

(1)绘制波形图

绘制波形图的要求有两点:第一是不能频繁闪烁,影响观察;二是波形图是动态的,因为绘制区域有限,而所采集的数据是源源不断增加的,因此要求波形图能够动态的更新。

(2)添加到列表显示

可直观地查看目前所采集的所有数据。

(3)保存到文件

运用功能强大的数据处理软件对数据进行更深的处理。

界面显示

采集单极性正弦波工作界面

基于PIC单片机的数据采集系统设计

代码:

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);