www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]基本功能  在本設計中,數據的處理可以使用PC機的MATLAB等功能強大的軟件,但是這類現有的數據處理軟件并不能對特有的數據采集系統(tǒng)的下位機采集模塊進行直接控制,因此需要針對特定的數據采集系統(tǒng)編寫對應的上位機

基本功能

  在本設計中,數據的處理可以使用PC機的MATLAB等功能強大的軟件,但是這類現有的數據處理軟件并不能對特有的數據采集系統(tǒng)的下位機采集模塊進行直接控制,因此需要針對特定的數據采集系統(tǒng)編寫對應的上位機軟件,上位機軟件是針對上述目的而設計與編寫的,是整個采集系統(tǒng)的控制前端和數據存儲及處理中心。控制功能主要包括控制下位機采集的開始與終止,采集的頻率等,數據處理功能主要包括繪制波形圖,將數據顯示于列表,將數據存儲于文件,其中將數據存儲于文件將便于使用現有的數據處理軟件對數據進行一些數值算法處理,以達到科學研究,結論驗證等目的。

開發(fā)環(huán)境

  C++程序設計語言可以很好地實現面向對象的編程思想,采用C++編寫上位機程序,可以將每一個功能模塊封裝成一個類,修改某個類的實現,增加類的功能不會影響整個程序的框架,這樣就很容易維護和擴展功能;加之我們要實現的軟件功能中需要調用大量的windows API函數庫,所以采用VC++6.0作為上位機的開發(fā)環(huán)境。

程序功能模塊劃分

  總的功能模塊主要包括三個模塊,即HID設備讀寫模塊,數據采集模塊,數據處理模塊。

HID設備的查找與讀寫

(1)枚舉

USB主機在檢測到USB設備插入后,就要對設備進行枚舉了。枚舉就是從設備讀取一些信息,知道設備是什么樣的設備,如何進行通信,這樣主機就可以根據這些信息來加載合適的驅動程序。

(2)HID

人機接口設備(HID)是指直接和人進行互動的設備,如鼠標、鍵盤等. 在Windows 中,具有相似屬性和提供相似服務的設備被歸為一種設備類型,一種類型的設備可以使用一個通用的設備驅動程序. 在運行Windows 98 或更高版本的PC 機上,應用程序可以使用操作系統(tǒng)內置的HID 類驅動程序與HID 通信. 這樣使得符合HID 類的USB 設備很容易開發(fā)與運行.

(3)HID設備的查找

在Windows操作系統(tǒng)中內置很多與HID有關的API函數,調用這些函數,就可以開始對指定的HID設備進行查找,查找HID設備的最終目的是獲得該設備的路徑名,設備的存取容量等信息,為以后對該設備進行讀寫做好準備.

(4)HID設備的讀寫

在取得了HID設備的路徑全面后,即可開始對HID設備進行讀寫,對設備的讀寫也是通過調用相應的函數來實現的。

控制下位機進行數據采集

  上位機向下位機發(fā)送命令,控制下位機進行數據采集,并從下位機獲取數據,在這個過程中,要處理好兩個線程的同步的問題,即數據采集線程和數據處理線程能夠協調工作,保正系統(tǒng)能正確穩(wěn)定的工作。具體的解決方法是實現對某些數據訪問的原子操作,即一個線程在對公共數據進行訪問時,另一個線程不能打擾,直到操作線程操作完成,放棄對數據的使用權,另一個線程才能夠訪問數據。

  下位機獲取了關于采集的有關參數后,即可開始采集,每隔一定時間采集一個數據,當采集數據數目達到限制值個數后,本次采集完成,此時下位機才開始將采集數據發(fā)送給上位機。

上位機對采集的數據的處理

  上位機在將數據采集命令發(fā)送給下位機后,所要做的就是等待下位機采集完成并接收數據,因此上位機將循環(huán)查詢下位機工作狀態(tài),一旦檢測到下位機采集結束的標志,上位機就開始對數據進行處理。

數據處理分為三種:

(1)繪制波形圖

繪制波形圖的要求有兩點:第一是不能頻繁閃爍,影響觀察;二是波形圖是動態(tài)的,因為繪制區(qū)域有限,而所采集的數據是源源不斷增加的,因此要求波形圖能夠動態(tài)的更新。

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

21 //Hid(DWORD Vid, DWORD Pid) {}

22 ~Hid() ;

23 BOOL Connect() ;

24 //BOOL ChangeDevice() {}

25 BOOL WriteHid(const BYTE * WriteBuff);

26 BOOL ReadHid(BYTE * ReadBuff);

27 BOOL IsWriteValid() const { return m_WriteValid ; }

28 BOOL IsReadValid() const { return m_ReadValid ; }

29 BOOL IsConnected() const { return m_IsConnected; }

30 const string & GetDeviceIDDesc() const { return m_DeviceIdStr ;}

31 private:

32 BOOL GetWRHandle() ;

33 private:

34 HANDLE m_WriteHandle;

35 HANDLE m_ReadHandle ;

36 string m_DeviceIdStr;//設備描述字符串

37 DWORD m_PID;

38 DWORD m_VID;

39 BOOL m_IsConnected ;//是否已連接上

40 BOOL m_ReadValid;//是否可進行讀操作

41 BOOL m_WriteValid;//是否可進行寫操作

42 BYTE m_RWBuff[USB_BUFF_SIZE+1] ;//讀寫緩沖

43

44

45 } ;

46

47

48

49 #endif

50

51

52 /*hic.cpp源文件*/

53

54 #include "Hid.h"

55

56 Hid::Hid(const string &DeviceIdStr):

57 m_DeviceIdStr(DeviceIdStr)

58 {

59

60 m_WriteHandle = INVALID_HANDLE_VALUE ;

61 m_ReadHandle = INVALID_HANDLE_VALUE ;

62 m_PID = 0;

63 m_VID = 0;

64 m_IsConnected = FALSE ;

65 m_ReadValid = FALSE ;

66 m_WriteValid = FALSE;

67 strcpy((char *)m_RWBuff,"") ;

68 }

69

70 BOOL Hid::GetWRHandle()

71 {

72 GUID InterfaceClassGuid =

73 {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30};

74 HDEVINFO DeviceInfoTable = INVALID_HANDLE_VALUE;

75 PSP_DEVICE_INTERFACE_DATA InterfaceDataStructure = new SP_DEVICE_INTERFACE_DATA;

76 PSP_DEVICE_INTERFACE_DETAIL_DATA DetailedInterfaceDataStructure = new SP_DEVICE_INTERFACE_DETAIL_DATA;

77 SP_DEVINFO_DATA DevInfoData;

78

79 DWORD InterfaceIndex = 0;

80 DWORD StatusLastError = 0;

81 DWORD dwRegType;

82 DWORD dwRegSize;

83 DWORD StructureSize = 0;

84 PBYTE PropertyValueBuffer;

85 bool MatchFound = false;

86 DWORD ErrorStatus;

87 DeviceInfoTable = SetupDiGetClassDevs(&InterfaceClassGuid, NULL, NULL, DIGCF_PRESENT " DIGCF_DEVICEINTERFACE);

88 while(true)

89 {

90 InterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);

91 if(SetupDiEnumDeviceInterfaces(DeviceInfoTable, NULL, &InterfaceClassGuid, InterfaceIndex, InterfaceDataStructure))

92 {

93 ErrorStatus = GetLastError();

94 if(ERROR_NO_MORE_ITEMS == ErrorStatus)

95 {

96 SetupDiDestroyDeviceInfoList(DeviceInfoTable);

97 return FALSE;

98 }

99 }

100 else

101 {

102

103 ErrorStatus = GetLastError();

104 SetupDiDestroyDeviceInfoList(DeviceInfoTable);

105 return FALSE;

106 }

107

108 DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);

109 SetupDiEnumDeviceInfo(DeviceInfoTable, InterfaceIndex, &DevInfoData);

110

111 SetupDiGetDeviceRegistryProperty(DeviceInfoTable, &DevInfoData, SPDRP_HARDWAREID, &dwRegType, NULL, 0, &dwRegSize);

112 Pr

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

分布式數據采集系統(tǒng)(Distributed data acquisition system)是相對于集中式數據采集系統(tǒng)而言的。

關鍵字: 數據采集系統(tǒng)

隨著大數據時代的到來,數據的采集、處理和分析已經成為各行各業(yè)的必備技能。而對于許多企業(yè)而言,高效的數據采集是保證數據質量和準確性的關鍵所在。在實際操作中,傳統(tǒng)的手工采集方法已經無法滿足大量數據的需求,因此智能化數據采集系...

關鍵字: 數據采集系統(tǒng) 采集

2024 年 3 月 - 全球領先的工業(yè)稱重和檢測技術制造商之一茵泰科推出了Midrics? 1 Ex防爆稱重顯示器,為危險區(qū)域的稱重結果顯示提供了新的解決方案。以更優(yōu)惠的價格向客戶提供可靠、操作直觀簡便的產品。

關鍵字: 顯示器 數字通信接口 數據采集系統(tǒng)

上位機串口通信是指在上位機(通常是計算機或微控制器)與外部設備之間通過串行通信協議進行數據傳輸和通信的過程。在串口通信中,數據以位為單位按順序傳送,通常使用一個或兩個物理線路(通常是兩條線)來實現數據的發(fā)送和接收。

關鍵字: 上位機 串口通信

在廣泛應用中實現精確測量-從原型機測試,到設備與工廠監(jiān)控的絕佳工具

關鍵字: 數據采集 傳感器 數據采集系統(tǒng)

pic單片機應用很多,生活中到處都有pic單片機的身影。小編個人也是從事pic單片機開發(fā)的人員之一,對于pic單片機有一定的理解。今天,小編將帶領大家一起看一下pic單片所具備的8大優(yōu)勢。

關鍵字: pic 單片機 寄存器

北京2023年1月26日 /美通社/ -- 微云全息公司(納斯達克:HOLO)(以下簡稱為"HOLO"或"公司"),一家提供全息數字孿生技術服務提供商,今日宣布推出全息腦機接口數據...

關鍵字: NAS 數據采集系統(tǒng) 腦機接口 DAQ

摘要:以地鐵BAS實訓系統(tǒng)為研究對象,按照集中管理、分散控制的設計思想,基于Niagara軟件平臺設計和搭建了一套3層分布式地鐵BAS實訓系統(tǒng),分為管理層、控制層、現場層,包含空調送回風和智能照明兩個監(jiān)控子系統(tǒng)。首先建立...

關鍵字: BAS實訓系統(tǒng) 上位機 監(jiān)控

摘要:研究一類基于STM32的數據采集系統(tǒng),采集并儲存有軌電車車載超級電容的電壓/電流數值。首先介紹該數據采集系統(tǒng)中硬件部分的各個功能區(qū)域,隨后設計了數據采集系統(tǒng)的軟件部分,編寫了ADC采集的程序并通過GPRS4G無線通...

關鍵字: STM32 數據采集系統(tǒng) 壽命預測
關閉