黄页网站一区_天堂av中文在线观看_亚洲精品亚洲人成人网_欧美亚洲国产精品久久

您當(dāng)前的位置:首頁>>新聞中心>>行業(yè)動態(tài)

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

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

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

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

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

云網(wǎng)客1.jpg

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

在串口連接之前 , 可根據(jù)儀表的使用手冊改變儀表的串口輸出設(shè)置 , 本文的儀表串口輸出設(shè)置為波特率(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  串口設(shè)置

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

要通過程序設(shè)置串口 , 首先應(yīng)該在窗體的設(shè)計時插入一個 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 ("串口設(shè)置失敗" + ex . Message , "提示", MessageBoxButtons .OK , Message-

BoxIcon .Warning)

End T ry End If

本文通過 XM L 文檔來保存串口設(shè)置的參數(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組件的時間間隔設(shè)置為600ms并且串 口的接收方式為按字節(jié)接收數(shù)據(jù)時,所接收的串口數(shù)據(jù)連 續(xù)可讀,且與表1所描述的數(shù)據(jù)格式一致。

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

串口接收的字節(jié)數(shù)據(jù)保存在長度為501維數(shù)組 中,當(dāng)數(shù)組長度等于50時,停止接收串口數(shù)據(jù),交給計時 器處理,在計時器事件中通過for循環(huán)在接收的數(shù)據(jù)中尋 找數(shù)字13 (ASCII碼對應(yīng)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è)計思路

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

云網(wǎng)客6.jpg

4.結(jié)束語

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

 

 


主站蜘蛛池模板: 大足县| 汤原县| 林州市| 壤塘县| 鹿泉市| 奉化市| 房产| 浠水县| 永州市| 安龙县| 巫山县| 安丘市| 台南市| 五家渠市| 丹阳市| 葵青区| 荥经县| 望都县| 馆陶县| 武胜县| 岳阳县| 萍乡市| 长垣县| 白山市| 台南市| 赞皇县| 福清市| 湘阴县| 凤翔县| 井陉县| 石狮市| 阿瓦提县| 将乐县| 罗平县| 卓尼县| 黄浦区| 玉田县| 呼和浩特市| 秦安县| 灵丘县| 大英县|