xwjzc.cn-人妻在线日韩免费视频,久久久精品人妻一区二区三区蜜桃,丰满老熟好大BBB,日韩无码专区

您當前的位置:首頁>>新聞中心>>行業動態

VB編程技術在汽車衡管理軟件上的應用

時間:2017-06-27 03:34:23   點擊數:

本文通過對一個汽車衡管理系統軟件的編程過程,介紹了用VB6.0編程軟件在汽車衡管理系統中的技術應用

1.引言

Visual Basic (簡稱VB)Win- dows環境下簡單、易學、高效的編 程語言開發系統,以其所見即所得 的可視化界面設計風格和32位面向 對象的程序設計等特點,已廣泛地應 用于各個領域,是很多計算機軟件開 發人員采用的開發工具。VB提供了良 好的界面設計能力,提供了強大的 數據庫訪問功能和微機串口通信功 能。完全能夠滿足汽車衡管理系統 的數據采集、處理和存儲要求。下 面以SCS微機汽車衡稱重軟件為例敘述VB軟件對系統中幾個重要功能 程序的設計。

2.管理軟件功能需求

SCS微機汽車衡稱重系統主要 通過計算機串口連接汽車衡稱重儀 表,處理儀表所獲取的汽車重量信 息,達到管理汽車稱重數據的目的。 系統軟件要求達到的功能主要有:

1設置管理權限,達到操作 人員分級登錄操作。

2記錄、貯存并打印每一次 稱重結果。包括車號、貨物名稱、運 貨單位、駕駛員、毛皮重、凈重、進 出廠過磅時間、司磅員等內容。

3查詢打印功能。可按車 號、時間范圍、司磅員、貨物種類、 駕駛員等或任意組合查詢過去稱重 記錄,并可打印輸出。

4統計打印功能。可對稱重 結果自動進行統計,并打印各種報 表,如月報、年報、分類報表等。

5數據維護功能。包括記錄

限制修改和刪除,數據備份和導出。

在這個系統軟件中,重點是編寫數據采集的串口通信模塊和數據庫 操作訪問功能程序。用Visual Ba- sic編程語言來編制這些程序,也就 要充分理解串口通信和數據庫訪問 相關的控件特點和應用技術。

3.數據采集程序模塊的設計

3.1選擇MSComm控件實現串口 通信

VB開發串口通信程序常用兩 種方法,一種是利用WINDOWS的通 API函數實現,另一種是采用VB 內集成的MSComm通信控件實現。在 實例中選用MSComm控件實現串口通 信的編程,該控件具有豐富的與串 口通信密切相關的屬性和事件,提 供了對串口的各種操作。在通信過 程中,當發送數據、收到數據或產 生傳輸錯誤時,觸發MSComm控件的 OnComm事件,然后可以通過判斷 CommEvent屬性值獲得事件類型,再 根據事件類型進行相應數據處理。 因此用其實現微機串口的數據通信 相當簡單,以很少的程序代碼就可 以輕松實現串口的訪問和數據通信。

3.2儀表參數及其數據通信協議 以微機管理系統連接汽車衡XK3 190-A9稱重顯示器為例。該儀表可 連接8350 012700 0的高精度稱 重傳感器,用于測量汽車重量數據。 儀表測量準確度為IIIN=3000) 按顯示分度值設置不同,測量范圍 最大值100噸。該儀表具有RS-232/ RS422 (選配串行通訊接口,能與 微機進行串口數據通信,實時傳送 檢測數據。

該儀表串口數據通信協議是:數 據傳輸速率為600/1200/2400/9600bps (可選,數據格式10位):1 開始位,8位數據位ASCII編碼1位停止位,無奇偶校驗位。通訊方 式有連續方式和指令方式兩種,這里 只列舉連續通訊方式中的格式。

所傳送的數據為儀表顯示的當 前稱量(毛重或凈重)。每幀數據由 10組數據組成。格式如表1

云網客1.jpg

3.3部分參數的技術說明

1為滿足各種儀表參數和計 算機不同運行環境的需要,把串口 通信的一些參數用數據庫的表進行 存放,程序通過讀取表數據來進行 通信環境參數的設置。這樣做用戶 可以修改數據表的數據來改變運行 參數,以滿足實際需要。

2為了提高接收數據的讀 取速度,實現實時監測功能,設置 MSComm1的屬性RThreshold=4 收緩沖區收到四個字節產生OnComm 事件;InputLen=1每次讀取一個 字節。設置接收數據模式采用二進制形式,即InputMode=comInputM odeBinary設置InBufferSize=50 (設置接收緩沖區為50字節), OutBufferSize=2 (設置發送緩沖區 為2字節)。

(3)定義一個Byte類型數組變 量來存放重量數據值。注意用Input 屬性讀取數據時,還要看儀表輸出 數據位格式的編碼方式。壓縮的BCD 碼存入Byte類型變量,VB系統只按 十進制數處理,這要通過一個簡單 算法換算,解壓BCD碼才能還原成十 進制表示數值。本例ASCII編碼直接 賦值給數組Byte類型變量。

3.4源程序代碼 系統數據庫dbl. mdb建立一個名 ‘‘串口的表,字段分別為串口、 波特率、校驗、停止位、數據位、 流控制,記錄串口運行參數設置信 息。在窗體中添加名為MSComml MSComm控件,名為Label7顯示重量 數據的標簽控件,名為Text3Text4存貯毛重、皮重的文本框控件等。 串口初始化模塊:

云網客2.jpg

Private Sub Form—Load() MSComml.CommPort = rec(“ 賦值串口端口號,本例為COM1 MSComml.Settings = rec(“ 特率)& ",n, 8,1" ‘無奇偶校 驗,8位數據位,1位停止位 MSComml.InputLen = 1 MSComml.RThreshold = 4 If MSComml.PortOpen = False Then ‘判斷串口端口是否打開 MSComml.PortOpen = True ‘打開端口 Else

MsgBox ‘‘串行端口號已被占用, 請選擇其它端口!”, vbCritical + vbOKOnly, 系統信息

Exit Sub

數據讀取、轉換及顯示模塊: Private Sub MSComml_OnComm() Dim buf() As Byte ‘定義一個數據變量 If MSComml. CommEvent = 2 Then ‘判斷接收緩沖區內字符數 達到Rthreshold指定的值 buf = MSComml.Input ‘讀取一個字節 If buf(0) = 2 Then 判斷是否為開02(XON)開始 c2 = buf

‘以下讀取各位重量數據分別賦值 c3 = bufc4 = bufc5 = buf(4) c6 = buf(5) c7 = buf(6) c8 = buf(7)

以下為對各位字節數據進行轉 換和組合顯示

shuju = Chr (c2) + Chr (c3) + Chr(c4) + Chr (c5) + Chr (c6) + Chr (c7) + Chr (c8) Label7. Caption =shuju ‘賦值顯示

If Optionl.Value=True Then ‘Optionl為毛重選項。判斷是 Optionl被選中

Text3. Text = Val(Label7. Caption) ‘賦值給毛重文本控件 End If

I f Opti on2 . Val ue = True Then ‘Option2l為皮重選

項。判斷是否Option2被選中

Text4. Text = Val(Label7. Caption) ‘賦值給皮重文本控件 End If

LabellO. Caption= 數據穩定!Else

LabellO. Caption = “連接正 常,但數據不穩定...!〃

MSComml. PortOpen = False ‘重新關閉和開啟串口端口 MSComml.PortOpen = True

End If End If End Sub

4.數據庫程序模塊設計

4.1數據庫表結構設計 本例以Microsoft Access數據 庫進行稱重數據的管理,建立db1. mdb數據庫。汽車衡完成一個稱重過 程一般是某車號汽車稱毛重,再過皮 重(或者稱重順序反調得出凈重 后,數據存入數據表,打印報表。在 實際稱重中稱毛重和過皮重的過程并 不連續,有時要連續稱幾臺汽車的毛 重或皮重,因此必須建立一個用于存 貯稱重暫存數據的表。在db1.mdb 據庫中建立報頭、帳戶、本地表、稱 重、單位設置、歷史皮重、串口、物 質類別等數據表。本地表”用于存 貯歷史稱重數據,稱重”表存貯 稱重暫存數據,本例重點介紹“本 地表稱重”兩個關鍵表的結 構設計,如表2,表3所示

4.2數據庫編程

系統登錄稱重管理”、“報 表管理等多個窗體,都涉及到對 db1.mdb數據庫的編程,主要應用了 Visual BasicAccess數據庫操作 的編程語言。如:

dim conn as new adodb. connec-tion

dim rs as new adodb. recordset

連接數據庫

with conn

If . StateOadstateclosed Then .Close

.ConnectionString = “pro -vider=Microsoft.Jet.0LEDB.4.0; Data Source=” & App.path & 數據庫名.mdb;Mode=ReadWrite; Persist Security Info=False” .Open End With 查詢記錄

if rs. stateOadstateclosed then rs.close

rs.open “select * from connadopenkeysetadlockre adonly

set mshflexgrid1.datasource

=rs

rs.close 新增記錄

conn. execute “insert into 表名...values(...)”

修改記錄

conn. execute “update 表名 set ... where ...”

刪除記錄

conn. execute “delete from where... 等等,鑒于論文篇幅 的限制本例數據庫編程源代碼略