當前位置:編程學習大全網 - 圖片素材 - vb串口通信程序實例

vb串口通信程序實例

我也是自己摸索開發出來的每壹款VBtoCOM通訊,有具體的思路如下:

給妳推薦壹個工具“com串口測試工具 ComTone V1.0 中文綠色版”

1、打開妳的噪音計的測試軟件,調整好串口號、通訊頻率等等,我用溫度計舉例說明。

開始查詢後有返回數值,這個Receive:就是返回的數值000304012200004b05,

打開串口監視精靈,監視軟件的com口事件:

這裏面的Write是測試軟件發出的查詢指令,read是設備返回的數據指令

Private?Sub?Command1_Click()?'發送指令

If?Not?MSComm1.PortOpen?Then

MSComm1.CommPort?=?7?'串口為7

MSComm1.Settings?=?"9600,n,8,1"

MSComm1.InBufferCount?=?0?'清除接收緩沖區

MSComm1.OutBufferCount?=?0?'清除發送緩沖區

MSComm1.InputMode?=?comInputModeBinary?'二進制接收

MSComm1.InputLen?=?0?'讀取接收緩沖區的所有字符

MSComm1.PortOpen?=?True?'打開串口

MSComm1.RTSEnable?=?False?'置為發送狀態

End?If

Dim?pu()?As?Byte

Dim?strdata?As?String

Dim?crc_js()?As?Byte

ReDim?pu(7)?'這個數組是8位的查詢指令

pu(0)?=?"&H00"?'溫度計地址

pu(1)?=?"&H03"?'查詢指令

pu(2)?=?"&H00"?'2、3為溫度計地址

pu(3)?=?"&H00"?'2、3為溫度計地址

pu(4)?=?"&H00"?'4、5為讀取寄存器長度

pu(5)?=?"&H02"?'4、5為讀取寄存器長度

pu(6)?=?"&HC5"?'6、7為CRC校驗碼?因為我們不知道設備的CRC校驗規則所以用測試軟件產生的校驗碼

pu(7)?=?"&HDA"?'6、7為CRC校驗碼

MSComm1.Output?=?pu

'不做任何事情,僅僅允許其它應用程序處理它們的事件。

DoEvents

MSComm1.InBufferCount?=?0?'清除接收緩沖區

MSComm1.RThreshold?=?9?'所要接收的數據長度,我們通過COM檢測精靈看到了回傳數據壹***是9字節

MSComm1.RTSEnable?=?True?'轉為接收狀態

End?Sub

Private?Sub?Command2_Click()

Timer1.Enabled?=?False

End?Sub

Private?Sub?Form_Unload(Cancel?As?Integer)

If?MSComm1.PortOpen?Then

MSComm1.PortOpen?=?False?'關閉串口

End?If

Timer1.Enabled?=?False

End?Sub

Private?Sub?MSComm1_OnComm()?'COM事件

Dim?PA()?As?Byte

Dim?PB?As?String

Select?Case?MSComm1.CommEvent

Case?comEvReceive

MSComm1.InputLen?=?0?'讀取接收緩沖區的所有字符

PB?=?MSComm1.Input

PA()?=?PB

For?i?=?0?To?UBound(PA())

'Print?"PA("?&?i?&?")";?PA(i)

If?Len(Hex(PA(i)))?=?1?Then

strdata?=?strdata?&?"0"?&?Hex(PA(i))

Else

strdata?=?strdata?&?Hex(PA(i))

End?If

Next

'回傳的數據串:000304012600000AC4,這9字節根據通訊協議我們進行拆分

'00為協議內回傳機號,03為讀命令,04為返回的數據長度?0126?為我要的溫度數據為十六進制表達,下面我進行數據處理

wd?=?CLng("&H"?&?Left(Right(strdata,?12),?4))?/?10?&?"℃"'根據通訊協議換算成溫度

Text1?=?Text1?&?vbCrLf?&?strdata?&?"?"?&?wd

strdata?=?""

MSComm1.PortOpen?=?False?'關閉串口

End?Select

End?Sub

Private?Sub?Timer1_Timer()

Call?Command1_Click

End?Sub

這是我的測試結果。

下面是通訊協議

這個是我的軟件用檢測精靈檢測的結果

  • 上一篇:c語言是計算機的什麽語言是高級還是低級?
  • 下一篇:《老九門》電視劇全集高清無刪減百度雲360網盤資源迅雷種子下載
  • copyright 2024編程學習大全網