【正文】
明 EasyD12庫一共有3個文件,。動態(tài)連接庫是Microsoft Windows的接口標(biāo)準(zhǔn),流行的軟件開發(fā)工具VC、VB、VF、Delphi、C++ Builder、Power Builder 等均可使用。用戶可以選用自己喜愛的工具輕松搞定USB開發(fā)。庫文件提供了4個函數(shù)給用戶程序調(diào)用。下面是這些子程序的定義和功能說明:(1) DWORD __stdcall ReadPort1 (BYTE* pData, size_t iLen);簡介:讀USB端點(diǎn)1。來源:說明:pData為指向接收數(shù)據(jù)緩沖區(qū)的指針,iLen為接收數(shù)據(jù)長度。D12端點(diǎn)1緩沖區(qū)為16字節(jié),iLen不大于16。如使用示例驅(qū)動,iLen不大于4。該函數(shù)主要用于讀取用戶的響應(yīng)。返回:0 錯誤=0 正確舉例:unsigned char databuff[4];DWORD st= ReadPort1 (databuff,4);從USB端點(diǎn)1讀出4個字節(jié)數(shù)據(jù)放入databuff中(2) DWORD __stdcall WritePort1 (BYTE* pData, size_t iLen);簡介:寫USB端點(diǎn)1。來源:說明:pData為指向發(fā)送數(shù)據(jù)緩沖區(qū)的指針,iLen為發(fā)送數(shù)據(jù)長度。D12端點(diǎn)1緩沖區(qū)為16字節(jié),iLen不大于16。如使用示例驅(qū)動,iLen不大于4。該函數(shù)主要用于傳送用戶的命令。返回:0 錯誤=0 正確舉例:unsigned char databuff[4]={’D’,’A’,’T’,’A’};DWORD st= WritePort1 (databuff,4);將databaff中前4個字節(jié)寫入U(xiǎn)SB端點(diǎn)1(3) DWORD __stdcall ReadPort2 (BYTE* pData, size_t iLen);簡介:讀USB端點(diǎn)2。來源:說明:pData為指向接收數(shù)據(jù)緩沖區(qū)的指針,iLen為接收數(shù)據(jù)長度。D12端點(diǎn)2緩沖區(qū)為64字節(jié),iLen不大于64。該函數(shù)主要用于讀取用戶發(fā)送的數(shù)據(jù)。返回:0 錯誤=0 正確舉例:unsigned char databuff[64];DWORD st= ReadPort2 (databuff,64);從USB端點(diǎn)2讀出64個字節(jié)數(shù)據(jù)放入databuff中 (4) DWORD __stdcall WritePort2 (BYTE* pData, size_t iLen);簡介:寫USB端點(diǎn)2。來源:說明:pData為指向發(fā)送數(shù)據(jù)緩沖區(qū)的指針,iLen為發(fā)送數(shù)據(jù)長度。D12端點(diǎn)2緩沖區(qū)為64字節(jié),iLen不大于64。該函數(shù)主要用于傳送用戶數(shù)據(jù)。返回:0 錯誤=0 正確舉例:unsigned char databuff[8]={’H’,’e’,’l’,’l’, ’!’,’D’,’1’,’2’};DWORD st= WritePort2 (databuff,);將databaff中前8個字節(jié)寫入U(xiǎn)SB端點(diǎn)2vb編程接口示例Public Declare Function ReadPort1 Lib (ByRef pData As Byte, ByVal iLen As Integer) As IntegerPublic Declare Function WritePort1 Lib (ByRef pData As Byte, ByVal iLen As Integer) As IntegerPublic Declare Function ReadPort2 Lib (ByRef pData As Byte, ByVal iLen As Integer) As IntegerPublic Declare Function WritePort2 Lib (ByRef pData As Byte, ByVal iLen As Integer) As Integer心血管實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊Private Sub Command1_Click() Dim sam As VariantDim Rebuffer(16) As ByteDim i As IntegerRebuffer(0) = 1 39。測試項(xiàng)目標(biāo)志 1:心血管功能sam = WritePort1(Rebuffer(0), 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfDo While (True)sam = ReadPort2(Rebuffer(0), 16) ’16一次讀取的字節(jié)數(shù)If sam 0 Then MsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit SubElseFor i = 0 To 15 ‘循環(huán)對Rebuffer(0)到Rebuffer(15)的數(shù)組的值在picturebox控件中顯示Next iEnd If‘如要結(jié)束通訊,向下位機(jī)發(fā)以下兩條命令Rebuffer(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(Rebuffer(0), 1) DoEventsLoopEnd sub肺功能實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊Private Sub Command1_Click() Dim sam As VariantDim Rebuffer(16) As ByteDim i As IntegerRebuffer(0) = 2 39。測試項(xiàng)目標(biāo)志 2:肺功能sam = WritePort1(Rebuffer(0), 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfDo While (True)sam = ReadPort2(Rebuffer(0), 16) ’16一次讀取的字節(jié)數(shù)If sam 0 Then MsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit SubElseFor i = 0 To 15 ‘循環(huán)對255Rebuffer(0)到255Rebuffer(15)的數(shù)組的值在picturebox控件中顯示Next iEnd If‘如要結(jié)束通訊,向下位機(jī)發(fā)以下兩條命令Rebuffer(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(Rebuffer(0), 1) DoEventsLoopEnd sub溫度實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊Private Sub Command1_Click() Dim sam As VariantDim Rebuffer(16) As ByteDim i As IntegerRebuffer(0) = 3 39。測試項(xiàng)目標(biāo)志 3:溫度sam = WritePort1(Rebuffer(0), 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfDo While (True)sam = ReadPort2(Rebuffer(0), 16) ’16一次讀取的字節(jié)數(shù)If sam 0 Then MsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit SubElseFor i = 0 To 15 ‘循環(huán)對Rebuffer(0)到Rebuffer(15)的數(shù)組的值在text控件中顯示Next iEnd If‘如要結(jié)束通訊,向下位機(jī)發(fā)以下兩條命令Rebuffer(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(Rebuffer(0), 1) DoEventsLoopEnd sub握力實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊Private Sub Command1_Click() Dim sam As VariantDim Rebuffer(16) As ByteDim i As IntegerRebuffer(0) = 4 39。測試項(xiàng)目標(biāo)志 4:握力sam = WritePort1(Rebuffer(0), 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfDo While (True)sam = ReadPort2(Rebuffer(0), 16) ’16一次讀取的字節(jié)數(shù)If sam 0 Then MsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit SubElseFor i = 0 To 15 ‘循環(huán)對Rebuffer(0)到Rebuffer(15)的數(shù)組的值在picturebox控件中顯示Next iEnd If‘如要結(jié)束通訊,向下位機(jī)發(fā)以下兩條命令Rebuffer(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(Rebuffer(0), 1) DoEventsLoopEnd sub血壓實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊Private Sub Command1_Click() Dim sam As VariantDim rec(2) As ByteDim tet(1) As Bytetet(0) = 6 39。測試項(xiàng)目標(biāo)志 6:血壓sam = WritePort1(tet(0) = 6, 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfEnd subPrivate Sub Command2_Click() ‘在USB燈重新點(diǎn)亮?xí)r,“數(shù)據(jù)”按鈕執(zhí)行以下命令rec(0) = 0rec(1) = 0 = rec(0) = rec(1)tet(0) = 5If WritePort1(tet(0), 1) 0 Then MsgBox ( 寫入數(shù)據(jù)出錯,請檢查USB驅(qū)動是否加載 !) Exit Sub End If If ReadPort2(rec(0), 2) 0 Then MsgBox ( 讀取數(shù)據(jù)出錯,請檢查USB驅(qū)動是否加載 !) Exit Sub End If = rec(0) = rec(1)tet(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(tet(0), 1)End Sub 心電實(shí)驗(yàn)在窗體命令按鈕進(jìn)行數(shù)據(jù)通訊‘單導(dǎo)聯(lián)VIPrivate Sub Command1_Click() Dim sam As VariantDim Rebuffer(16) As ByteDim i As IntegerRebuffer(0) = 0 39。單導(dǎo)測試標(biāo)志 0sam = WritePort1(Rebuffer(0), 1)If sam 0 ThenMsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit subEnd IfDo While (True)sam = ReadPort2(Rebuffer(0), 16) ’16一次讀取的字節(jié)數(shù)If sam 0 Then MsgBox 打開驅(qū)動失敗,請查看USB驅(qū)動是否加載 ! Exit SubElseFor i = 0 To 15 ‘循環(huán)對Rebuffer(0)到Rebuffer(15)的數(shù)組的值在picturebox控件中顯示Next iEnd If‘如要結(jié)束通訊,向下位機(jī)發(fā)以下兩條命令Rebuffer(0) = 10 39。結(jié)束數(shù)據(jù)sam = WritePort1(Rebuffer(0), 1) DoEventsLoopEnd sub‘三導(dǎo)聯(lián)(VI 、VII、VIII)通訊的基本模式同單導(dǎo)聯(lián)‘導(dǎo)聯(lián)之間的切換, VI導(dǎo)聯(lián) 轉(zhuǎn)到VII導(dǎo)聯(lián)Rebuffer(0) = 10 sam = WritePort1(Rebuffer(0), 1) If sam = 0 Then Rebuffer(0) = 7 sam = WritePort1(Rebuffer(0), 1) If sam 0 Then MsgBox ( 寫入數(shù)據(jù)錯誤一,請檢查USB驅(qū)動是否加載 !)End If End if‘VII導(dǎo)聯(lián) 轉(zhuǎn)到VIII導(dǎo)聯(lián)Rebuffer(1) = 10sam = WritePort1(Rebuffer(1), 1)If sam = 0 Then Rebuffer(1) = 5 sam = WritePort1(Rebuffer(1), 1) If sam 0 Then MsgBox ( 寫入數(shù)據(jù)錯誤三,請檢查USB驅(qū)動是否加載 !) End IfEnd if‘VIII導(dǎo)聯(lián) 轉(zhuǎn)到VI導(dǎo)聯(lián)Rebuffer(1) = 10 sam = WritePort1(Rebuffer(1), 1) If sam = 0 Then Rebuffer(1) = 0 sam = WritePort1(Rebuffer(1), 1)