1。連續方式:所傳送的數據為儀表顯示的當前稱重(毛重或凈重)。每幀數據由12組數據組成。格式如下:
第X字節 內容及註釋
1 02(XON) 開始
2 +或- 符號位
3 稱重數據 高位
4 稱重數據 ..
5 稱重數據 ..
6 稱重數據 ..
7 稱重數據 ..
8 稱重數據 低位
9 小數點位數 從右到左(0—4)
10 異或校驗 高四位
11 異或校驗 低四位
12 03(XOFF) 結束
異或:2異或3異或....8異或9
本程序是從網上下載的(稍作改動),調試環境為Windows Xp Professional SP2,VB6.0,在VB中與串口通訊需要引入控件MSComm串口通訊控件在Microsoft Comm Control 6.0中)。具體程序如下:控件簡稱:MSC
Dim Out(12) As Byte '接收var中的值
Dim var As Variant '接收MSC.input中的數值
Dim i As Integer, j As Integer '隨即變量,計算循環
Private Sub cmdOk_Click()
With MSC
.InputMode = comInputModeBinary '設置數據接收模式為二進制形式
.InBufferCount = 0 '清除接收緩沖區
If Not .PortOpen Then
.PortOpen = True '打開通信端口
End If
End With
End Sub
Private Sub Form_Load()
With MSC
.CommPort = 2 '設置Com1為通信端口
.Settings = "9600,N,8,1" '設置通信端口參數 9600赫茲、無校驗、8個數據位、1個停止位.
.InBufferSize = 40 '設置緩沖區接收數據為40字節
.InputLen = 1 '設置Input壹次從接收緩沖讀取字節數為1
.RThreshold = 1 '設置接收壹個字節就產生OnComm事件
End With
End Sub
Private Sub SwichVar(ByVal nNum As Integer)
Text4.Text = Text4.Text & nNum
var = Null
var = MSC.Input
Out(nNum) = var(0)
End Sub
Private Sub Form_Resize()
Text1.Width = Me.Width
Text4.Width = Me.Width
End Sub
Private Sub MSC_OnComm()
With MSC
Select Case .CommEvent '判斷通信事件
Case comEvReceive: '收到Rthreshold個字節產生的接收事件
SwichVar 1
Text1.Text = Text1.Text & Chr(Out(1))
If Out(1) = 2 Then '判斷是否為數據的開始標誌
.RThreshold = 0 '關閉OnComm事件接收
End If
Do
DoEvents
Loop Until .InBufferCount >= 3 '循環等待接收緩沖區>=3個字節
For i = 2 To UBound(Out)
SwichVar i
Text1.Text = Text1.Text & Chr(Out(i))
Next
Text1.Text = LTrim(Text1.Text)
.RThreshold = 1 '打開MSComm事件接收
Case Else
'.PortOpen = False
End Select
End With
End Sub
運行結果:
當儀表顯示:0 時
壹直重復顯示
+00000001B+00000001B+00000001B+00000001B+00000001B+00000001B+00000001B+00000001B+00000001B+00000001B
或:出現下列錯誤:
實時錯誤:'9' 下標越界
由於本人沒有接觸過硬件通訊編程,加之時間緊,麻煩哪位高手幫助壹下!!!!或者副少許費用也可!!!!!
怎樣把顯示正確的數據,而且顯示格式為“-+9999.99”