產(chǎn)品列表
聯(lián)系方式

杭州易測(cè)計(jì)量設(shè)備有限公司

地 址:杭州市余杭區(qū)北沙西路152號(hào)

聯(lián)系人:王經(jīng)理

電 話(huà):0571-85108155

傳 真:0571-85105122

手 機(jī):18094712401

行業(yè)資訊
?

VB編程技術(shù)在地磅管理軟件上的應(yīng)用

本文通過(guò)對(duì)一個(gè)地磅管理系統(tǒng)軟件的編程過(guò)程,介紹了用VB6.0編程軟件在地磅管理系統(tǒng)中的技術(shù)應(yīng)用。 
  1.引言 
  Visual Basic(簡(jiǎn)稱(chēng)VB)是Win- 
  dows環(huán)境下簡(jiǎn)單、易學(xué)、高效的編程語(yǔ)言開(kāi)發(fā)系統(tǒng),以其所見(jiàn)即所得的可視化界面設(shè)計(jì)風(fēng)格和32位面向?qū)ο蟮某绦蛟O(shè)計(jì)等特點(diǎn),已廣泛地應(yīng)用于各個(gè)領(lǐng)域,是很多計(jì)算機(jī)軟件開(kāi)發(fā)人員采用的開(kāi)發(fā)工具。VB提供了良好的界面設(shè)計(jì)能力,提供了強(qiáng)大的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)功能和微機(jī)串口通信功能。完全能夠滿(mǎn)足地磅管理系統(tǒng)的數(shù)據(jù)采集、處理和存儲(chǔ)要求。下面以SCS微機(jī)地磅稱(chēng)重軟件為例,敘述VB軟件對(duì)系統(tǒng)中幾個(gè)重要功能程序的設(shè)計(jì)。 
  2.管理軟件功能需求 
  SCS微機(jī)地磅稱(chēng)重系統(tǒng)主要通過(guò)計(jì)算機(jī)串口連接地磅稱(chēng)重儀表,處理儀表所獲取的汽車(chē)重量信息,達(dá)到管理汽車(chē)稱(chēng)重?cái)?shù)據(jù)的目的。系統(tǒng)軟件要求達(dá)到的功能主要有: 
 ?。?)設(shè)置管理權(quán)限,達(dá)到操作人員分級(jí)登錄操作。 
 ?。?)記錄、貯存并打印每一次稱(chēng)重結(jié)果。包括車(chē)號(hào)、貨物名稱(chēng)、運(yùn)貨單位、駕駛員、毛皮重、凈重、進(jìn)出廠過(guò)磅時(shí)間、司磅員等內(nèi)容。 
 ?。?)查詢(xún)打印功能。可按車(chē)號(hào)、時(shí)間范圍、司磅員、貨物種類(lèi)、駕駛員等或任意組合查詢(xún)過(guò)去稱(chēng)重記錄,并可打印輸出。 
 ?。?)統(tǒng)計(jì)打印功能??蓪?duì)稱(chēng)重結(jié)果自動(dòng)進(jìn)行統(tǒng)計(jì),并打印各種報(bào)表,如月報(bào)、年報(bào)、分類(lèi)報(bào)表等。 
  (5)數(shù)據(jù)維護(hù)功能。包括記錄限制修改和刪除,數(shù)據(jù)備份和導(dǎo)出。 
  在這個(gè)系統(tǒng)軟件中,重點(diǎn)是編寫(xiě)數(shù)據(jù)采集的串口通信模塊和數(shù)據(jù)庫(kù)操作訪(fǎng)問(wèn)功能程序。用Visual Basic編程語(yǔ)言來(lái)編制這些程序,也就要充分理解串口通信和數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)相關(guān)的控件特點(diǎn)和應(yīng)用技術(shù)。 
  3.數(shù)據(jù)采集程序模塊的設(shè)計(jì) 
  3.1 選擇MSComm控件實(shí)現(xiàn)串口通信 
  用VB開(kāi)發(fā)串口通信程序常用兩種方法,一種是利用WINDOWS的通信API函數(shù)實(shí)現(xiàn),另一種是采用VB內(nèi)集成的MSComm通信控件實(shí)現(xiàn)。在實(shí)例中選用MSComm控件實(shí)現(xiàn)串口通信的編程,該控件具有豐富的與串口通信密切相關(guān)的屬性和事件,提供了對(duì)串口的各種操作。在通信過(guò)程中,當(dāng)發(fā)送數(shù)據(jù)、收到數(shù)據(jù)或產(chǎn)生傳輸錯(cuò)誤時(shí),觸發(fā)MSComm控件的OnComm事件,然后可以通過(guò)判斷CommEvent屬性值獲得事件類(lèi)型,再根據(jù)事件類(lèi)型進(jìn)行相應(yīng)數(shù)據(jù)處理。因此用其實(shí)現(xiàn)微機(jī)串口的數(shù)據(jù)通信相當(dāng)簡(jiǎn)單,以很少的程序代碼就可以輕松實(shí)現(xiàn)串口的訪(fǎng)問(wèn)和數(shù)據(jù)通信。 
  3.2 儀表參數(shù)及其數(shù)據(jù)通信協(xié)議 
  以微機(jī)管理系統(tǒng)連接汽車(chē)衡XK3 
  190-A9稱(chēng)重顯示器為例。該儀表可連接8個(gè)350Ω或12個(gè)700Ω的高精度稱(chēng)重傳感器,用于測(cè)量汽車(chē)重量數(shù)據(jù)。儀表測(cè)量準(zhǔn)確度為Ⅲ級(jí)(N=3000)按顯示分度值設(shè)置不同,測(cè)量范圍最大值100噸。該儀表具有RS-232/RS422(選配)串行通訊接口,能與微機(jī)進(jìn)行串口數(shù)據(jù)通信,實(shí)時(shí)傳送檢測(cè)數(shù)據(jù)。 
  該儀表串口數(shù)據(jù)通信協(xié)議是:數(shù)據(jù)傳輸速率為600/1200/2400/9600bps 
 ?。蛇x),數(shù)據(jù)格式(10位):1位開(kāi)始位,8位數(shù)據(jù)位(ASCⅡ編碼),1位停止位,無(wú)奇偶校驗(yàn)位。通訊方式有連續(xù)方式和指令方式兩種,這里只列舉連續(xù)通訊方式中的格式。 
  所傳送的數(shù)據(jù)為儀表顯示的當(dāng)前稱(chēng)量(毛重或凈重)。每幀數(shù)據(jù)由10組數(shù)據(jù)組成。格式如表1。 
  3.3 部分參數(shù)的技術(shù)說(shuō)明 
 ?。?)為滿(mǎn)足各種儀表參數(shù)和計(jì)算機(jī)不同運(yùn)行環(huán)境的需要,把串口通信的一些參數(shù)用數(shù)據(jù)庫(kù)的表進(jìn)行存放,程序通過(guò)讀取表數(shù)據(jù)來(lái)進(jìn)行通信環(huán)境參數(shù)的設(shè)置。這樣做用戶(hù)可以修改數(shù)據(jù)表的數(shù)據(jù)來(lái)改變運(yùn)行參數(shù),以滿(mǎn)足實(shí)際需要。 
 ?。?)為了提高接收數(shù)據(jù)的讀取速度,實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)功能,設(shè)置MSComm1的屬性RThreshold=4,接收緩沖區(qū)收到四個(gè)字節(jié)產(chǎn)生OnComm事件;InputLen=1,每次讀取一個(gè)字節(jié)。設(shè)置接收數(shù)據(jù)模式采用二進(jìn)制形式,即InputMode=comInputModeBinary。設(shè)置InBufferSize=50(設(shè)置接收緩沖區(qū)為50字節(jié)),OutBufferSize=2(設(shè)置發(fā)送緩沖區(qū)為2字節(jié))。 
 ?。?)定義一個(gè)Byte類(lèi)型數(shù)組變量來(lái)存放重量數(shù)據(jù)值。注意用Input屬性讀取數(shù)據(jù)時(shí),還要看儀表輸出數(shù)據(jù)位格式的編碼方式。壓縮的BCD碼存入Byte類(lèi)型變量,VB系統(tǒng)只按十進(jìn)制數(shù)處理,這要通過(guò)一個(gè)簡(jiǎn)單算法換算,解壓BCD碼才能還原成十進(jìn)制表示數(shù)值。本例ASCⅡ編碼直接賦值給數(shù)組Byte類(lèi)型變量。 
  3.4 源程序代碼 
  系統(tǒng)數(shù)據(jù)庫(kù)db1.mdb建立一個(gè)名為“串口”的表,字段分別為串口、波特率、校驗(yàn)、停止位、數(shù)據(jù)位、流控制,記錄串口運(yùn)行參數(shù)設(shè)置信息。在窗體中添加名為MSComm1的MSComm控件,名為L(zhǎng)abel7顯示重量數(shù)據(jù)的標(biāo)簽控件,名為T(mén)ext3、Text4存貯毛重、皮重的文本框控件等。 
  串口初始化模塊: 
  Private Sub Form_Load() 
  MSComm1.CommPort = rec(“串口”)‘賦值串口端口號(hào),本例為COM1 
  MSComm1.Settings = rec(“波特率”) & ",n,8,1" ‘無(wú)奇偶校驗(yàn),8位數(shù)據(jù)位,1位停止位 
  MSComm1.InputLen = 1 
  MSComm1.RThreshold = 4 
  If MSComm1.PortOpen = False Then ‘判斷串口端口是否打開(kāi) 
  MSComm1.PortOpen = True ‘打開(kāi)端口 
  Else 
  MsgBox “串行端口號(hào)已被占用,請(qǐng)選擇其它端口!”, vbCritical + vbOKOnly, “系統(tǒng)信息” 
  Exit Sub 
  數(shù)據(jù)讀取、轉(zhuǎn)換及顯示模塊: 
  Private Sub MSComm1_OnComm() 
  Dim buf() As Byte 
  ‘定義一個(gè)數(shù)據(jù)變量 
  If MSComm1.CommEvent = 2 Then ‘判斷接收緩沖區(qū)內(nèi)字符數(shù)達(dá)到Rthreshold指定的值 
  buf = MSComm1.Input 
  ‘讀取一個(gè)字節(jié) 
  If buf(0) = 2 Then 
  ‘判斷是否為開(kāi)02(XON) 開(kāi)始 
  c2 = buf(1) 
  ‘以下讀取各位重量數(shù)據(jù)分別賦值 
  c3 = buf(2) 
  c4 = buf(3) 
  c5 = buf(4) 
  c6 = buf(5) 
  c7 = buf(6) 
  c8 = buf(7) 
  以下為對(duì)各位字節(jié)數(shù)據(jù)進(jìn)行轉(zhuǎn)換和組合顯示 
  shuju = Chr(c2) + Chr(c3) + Chr(c4) + Chr(c5) + Chr(c6) + Chr(c7) + Chr(c8) Label7.Caption = shuju ‘賦值顯示 
  If Option1.Value=True Then 
  ‘Option1為毛重選項(xiàng)。判斷是否Option1被選中 
  Text3.Text = Val(Label7.Caption) ‘賦值給毛重文本控件 
  End If 
  If Option2.Value = True Then ‘Option21為皮重選項(xiàng)。判斷是否Option2被選中 
  Text4.Text = Val(Label7.Caption) ‘賦值給皮重文本控件 
  End If 
  Label10.Caption= “數(shù)據(jù)穩(wěn)定!" 
  Else 
  Label10.Caption = “連接正常,但數(shù)據(jù)不穩(wěn)定...!" 
  MSComm1.PortOpen = False ‘重新關(guān)閉和開(kāi)啟串口端口一次 
  MSComm1.PortOpen = True 
  End If 
  End If 
  End Sub 
  4.數(shù)據(jù)庫(kù)程序模塊設(shè)計(jì) 
  4.1 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì) 
  本例以Microsoft Access數(shù)據(jù)庫(kù)進(jìn)行稱(chēng)重?cái)?shù)據(jù)的管理,建立db1.mdb數(shù)據(jù)庫(kù)。地磅完成一個(gè)稱(chēng)重過(guò)程一般是某車(chē)號(hào)汽車(chē)稱(chēng)毛重,再過(guò)皮重(或者稱(chēng)重順序反調(diào))得出凈重后,數(shù)據(jù)存入數(shù)據(jù)表,打印報(bào)表。在實(shí)際稱(chēng)重中稱(chēng)毛重和過(guò)皮重的過(guò)程并不連續(xù),有時(shí)要連續(xù)稱(chēng)幾臺(tái)汽車(chē)的毛重或皮重,因此必須建立一個(gè)用于存貯稱(chēng)重暫存數(shù)據(jù)的表。在db1.mdb數(shù)據(jù)庫(kù)中建立報(bào)頭、帳戶(hù)、本地表、稱(chēng)重、單位設(shè)置、歷史皮重、串口、物質(zhì)類(lèi)別等數(shù)據(jù)表。“本地表”用于存貯歷史稱(chēng)重?cái)?shù)據(jù),“稱(chēng)重”表存貯稱(chēng)重暫存數(shù)據(jù),本例重點(diǎn)介紹“本地表”和“稱(chēng)重”兩個(gè)關(guān)鍵表的結(jié)構(gòu)設(shè)計(jì),如表2,表3所示。 
  4.2 數(shù)據(jù)庫(kù)編程 
  SCS微機(jī)地磅稱(chēng)重軟件建立了“系統(tǒng)登錄”、“稱(chēng)重管理”、“報(bào)表管理”等多個(gè)窗體,都涉及到對(duì)db1.mdb數(shù)據(jù)庫(kù)的編程,主要應(yīng)用了Visual Basic對(duì)Access數(shù)據(jù)庫(kù)操作的編程語(yǔ)言。如: 
  dim conn as new adodb.connection 
  dim rs as new adodb.recordset 
  連接數(shù)據(jù)庫(kù) 
  with conn 
   If .State<>adstateclosed Then .Close 
   .ConnectionString = “pro 
  -vider=Microsoft.Jet.OLEDB.4.0; 
  Data Source=” & App.path & “\數(shù)據(jù)庫(kù)名.mdb;Mode=ReadWrite;Persist Security Info=False” 
   .Open 
  End With 
  查詢(xún)記錄 
  if rs.state<>adstateclosed then rs.close 
  rs.open “select * from 表名”,conn,adopenkeyset,adlockreadonly 
  set mshflexgrid1.datasource 
  =rs 
  rs.close 
  新增記錄 
  conn.execute “insert into 表名(...) values(...)” 
  修改記錄 
  conn.execute “update 表名 set ... where ...” 
  刪除記錄 
  conn.execute “delete from 表名 where...”等等,鑒于論文篇幅的限制本例數(shù)據(jù)庫(kù)編程源代碼略。
上一篇:關(guān)于地磅故障分析與處理的心得 下一篇:淺談SCS數(shù)字式地磅安裝與調(diào)試
精品推薦 更多…
網(wǎng)站首頁(yè)汽車(chē)衡地磅電子磅秤電子秤電子吊秤電子叉車(chē)秤建筑工地產(chǎn)品聯(lián)系我們關(guān)于我們公司動(dòng)態(tài)

聯(lián)系人:王經(jīng)理 電話(huà):0571-85108155  傳真:0571-85105122

郵編:310006 手機(jī):18094712401 地址:杭州市余杭區(qū)北沙西路152號(hào)

Copyright ? 杭州易測(cè)計(jì)量設(shè)備有限公司 All rights reserved.