国产一区二区免费精品无码精品亚洲中文免费_不卡无码免费视频一_国产精品无码色一区二涩欲区三区_亚洲欧洲成人精品一区二区综合精品区_2024无码视频中文字幕_又爽又大欧美视频_亚洲性色AV片在线播放_伦理片日本韩国电影三级在线观看_久久无码西西人体_91麻豆视频观看

汽車衡串口連續(xù)輸出數(shù)據(jù)的采集方法

時間:2017-08-19 04:34:41   點擊數(shù):

主要描述了8142 型稱重顯示儀表的串口數(shù)據(jù)的讀取方法, 在主要部分還使用了 U M L 軟件建模來輔助說明設計思路。

1.稱重顯示儀與計算機串口的連接方法

8142 型儀表具備 1 個串行口(9 ) 1 個并行口(25), 其中串行口與稱重傳感器連接接收稱重信號 , 并行口可與計算機或大屏顯示器連接輸出數(shù)據(jù)。計算機與儀表的具體接線方法如圖 1 所示。

云網(wǎng)客1.jpg

2.數(shù)據(jù)輸出格式

在串口連接之前 , 可根據(jù)儀表的使用手冊改變儀表的串口輸出設置 , 本文的儀表串口輸出設置為波特率(1200)、數(shù)據(jù)位(7bits)、無校驗 、停止位(1)、連續(xù)輸出 。儀表的連續(xù)輸出格式為 18 個字節(jié)(By tes)。具體輸出格式如表 1 所示 :

云網(wǎng)客2.jpg

其中 :<ST X > ASCII 起始符 (02H);狀態(tài)字A ,B ,C ;顯示重量 , 可能是毛重也可能是凈重 , 6 位不帶符號和小數(shù)點的數(shù)字 ;皮重 , 6 位不帶符號和小數(shù)點的數(shù)字 ;<CR > ASCII 回車符(ODH);<CKS > 可選的校驗和。

通過串口調(diào)試軟件接收的數(shù)據(jù)樣例 :

20202020202020202020200D02293C202020202020202 02020200D 稱重重量的讀取

2 .1  串口設置

在了解了 8142 型儀表的串口通信設備和輸出格式之后就可以開發(fā)相應的串口通信程序了 , 為了使串口通訊程序有一定的通用性 , 因此串口的波特率、數(shù)據(jù)位等將通過程序而不通過 Window s 設置。

要通過程序設置串口 , 首先應該在窗體的設計時插入一個 Serial Port 組件 , 然后在代碼窗口中輸入如下代碼 :

If N ot RS232 Is Nothing T hen RS232 =Nothing

Dim mBaudRate A s Integer  '傳輸速率

Dim mParity As Parity  '奇偶校驗

Dim mDataBit A s Integer  '數(shù)據(jù)位

Dim mStopBit A s StopBits  '停止位

Dim mPortN ame As String mPortN ame =Com1

mBaudRate =1200 mParity ="Parity .None"

mDataBit =7

mStopBit =StopBits .One T ry

RS232 = N ew  SerialPort (mPortN ame ,

mBaudRate , mParity , mDataBit , mStopBit) Catch ex A s Exception

MessageBox .Show ("串口設置失敗" + ex . Message , "提示", MessageBoxButtons .OK , Message-

BoxIcon .Warning)

End T ry End If

本文通過 XM L 文檔來保存串口設置的參數(shù) , 用于保存串口參數(shù)的 XM L 文檔命名為 XlComSet .xml , 具體格式如下 :

 

xml version ="1 .0"? > <ComSet >

<Com ComName ="COM1"Rate ="1200"Dat-aBit — 7 Parity — None StopBit — One ReceiveN ull —0 DataChar= Unicode ">

/Com>

< Count Date= '20101018 " Number - "2 ">

/Count>

/ComSet>

其中:

ComName為串口號、Rate為波特率、DataBit為數(shù)據(jù) 、Parity為奇偶校驗、StopBit為停止位、ReceiveNull 是否接收空字符DataChar為編碼方式。程序通過計時 Timer)與串口通信(SerialPort)組件配合讀取串口數(shù) 據(jù),經(jīng)測試Timer組件的時間間隔設置為600ms并且串 口的接收方式為按字節(jié)接收數(shù)據(jù)時,所接收的串口數(shù)據(jù)連 續(xù)可讀,且與表1所描述的數(shù)據(jù)格式一致。

2.2串口數(shù)據(jù)的接收

串口接收的字節(jié)數(shù)據(jù)保存在長度為501維數(shù)組 中,當數(shù)組長度等于50時,停止接收串口數(shù)據(jù),交給計時 器處理,在計時器事件中通過for循環(huán)在接收的數(shù)據(jù)中尋 找數(shù)字13 (ASCII碼對應0D),找到后截取從OD開始的 5到第10位,即重量數(shù)據(jù),再通過Chr函數(shù)將ASCII 轉(zhuǎn)換為字符型數(shù)據(jù),就可以得到正確的稱重數(shù)據(jù)。具體處 理過程的順序如圖2所示。

云網(wǎng)客3.jpg

根據(jù)圖3所示的過程處理順序,給出稱重數(shù)據(jù)截取的 實現(xiàn)代碼。具體代碼如下

Dim n As Integer

Dim Str(50) As Byte Dim Str1 (17) As Byte

Private Sub ComPort_ DataReceived (ByVal sender As ObjectByVal e As System. IO. Ports. SerialDataRe- ceivedEventArgs) Handles ComPort. DataReceived Dim Sy As Byte Sy = ComPort. ReadByte()

Str(n) = Sy n = n  1 If n > 50 Then n = 50 End If E nd Sub

Private Sub TimerCom_Tick (ByVal sender As Ob-ject 9 ByVal e As System. EventArgs ) Handles Timer-Com .Tick

txt Receive .Text = n =0

Dim i As Short For i = 0 To 50 IfStr(i) = 13 Then E xi t Fo r End If N ex t

Ifi< 30 Then

For j As Short = i  5 To i  10

txt Receive .Text += C hr ( St r (j))

N ex t End If E nd Su b

3汽車稱重窗體的設計思路

在稱重窗體中司鎊員首先選擇被稱重車輛的車牌號 碼,當顯示重量的標簽讀數(shù)穩(wěn)定不變時,司鎊員點擊[接收 毛重]按鈕,讀取到的重量應自動減去車輛的皮重,從而得 出車輛凈重,并且鎊單編號應根據(jù)當前日期自動加1,如 2010 10 10 001。為保證鎊單編號的唯一性,因此 其中001應在點擊打印按鈕之后自動加1。當司鎊員點 [接收皮重]按鈕,皮重Panel會被激活,皮重即空車重 量。點擊[保存]按鈕后,當前讀取的重量應替代之前保存 的皮重。具體操作方法應如圖3所示。

云網(wǎng)客6.jpg

4.結(jié)束語

本文所述的汽車的串口連續(xù)輸出數(shù)據(jù)的采集方法 已經(jīng)應用于實踐當中。經(jīng)實踐證明,本方法切實可行,讀 數(shù)穩(wěn)定可靠。本方法可以用于其他采用重數(shù)據(jù)采集,也可以為采用涉及到串 口通信的項目提供一定的技術(shù)參考。