基于串口仿真的地磅模擬系統(tǒng)的研究與應(yīng)用
基于串口仿真的地磅模擬系統(tǒng)的研究與應(yīng)用
用Asp.Net(C#)和串口通信仿真系統(tǒng),根據(jù)不同型號(hào)地磅的數(shù)據(jù)協(xié)議規(guī)則,模擬地磅稱重向串口連續(xù)發(fā)送數(shù)據(jù),C#根據(jù)接收到的十六進(jìn)制數(shù)據(jù)進(jìn)行截取轉(zhuǎn)化計(jì)算,實(shí)時(shí)顯示稱重重量,很好地解決了程序開發(fā)過(guò)程中調(diào)試問(wèn)題,極大縮短了系統(tǒng)開發(fā)時(shí)間,提高了系統(tǒng)穩(wěn)定性。
地磅也被稱為汽車衡,是大宗貨物計(jì)量的主要稱重設(shè)備。串口因具有接線簡(jiǎn)單、傳輸距離長(zhǎng)、穩(wěn)定可靠等優(yōu)點(diǎn),而被廣泛應(yīng)用于工業(yè)控制系統(tǒng)之中,是計(jì)算機(jī)與地磅等硬件設(shè)備進(jìn)行數(shù)據(jù)通信的重要方式之一。由于地磅的特殊性及串口獨(dú)占性,給程序開發(fā)調(diào)試及系統(tǒng)實(shí)施帶來(lái)了諸多不利因素,因此,本文提出一種基于串口仿真的地磅模擬系統(tǒng),根據(jù)不同型號(hào)地磅的數(shù)據(jù)協(xié)議規(guī)則,向串口連續(xù)發(fā)送數(shù)據(jù),C#根據(jù)接收到的十六進(jìn)制數(shù)據(jù)進(jìn)行截取轉(zhuǎn)化計(jì)算,實(shí)時(shí)顯示稱重重量,模擬開發(fā)系統(tǒng)可直接通過(guò)串口連接實(shí)物,極大縮短了系統(tǒng)開發(fā)時(shí)間,提高了系統(tǒng)穩(wěn)定性。
1.虛擬串口
虛擬串口是用操作系統(tǒng)的虛擬驅(qū)動(dòng)技術(shù)產(chǎn)生的串口,相對(duì)于計(jì)算機(jī)本身的硬件串口來(lái)說(shuō)虛擬串口并不對(duì)應(yīng)一個(gè)物理上的串口,但是計(jì)算機(jī)應(yīng)用軟件可以像硬件串口一樣地使用虛擬串口,對(duì)于串口軟件來(lái)說(shuō)虛擬串口和硬件串口并沒(méi)有區(qū)別。本文采用虛擬串口工具( Virtual Serial Port Driver 6.9)添加兩個(gè)虛擬串口 Com3及 Com4,實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收,如圖 1所示。
2.串口調(diào)試
利用虛擬串口 Com3,設(shè)置波特率、校驗(yàn)位、數(shù)據(jù)位及停止位等參數(shù),根據(jù)不同型號(hào)地磅的數(shù)據(jù)協(xié)議規(guī)則,向Com3連續(xù)發(fā)送十六進(jìn)制數(shù)據(jù)。本文采用托利多型號(hào)數(shù)據(jù)規(guī)則進(jìn)行數(shù)據(jù)模擬,數(shù)據(jù)輸出格式為: 02 72 60 20 30 30 36 36 37 35 30 30 30 30 30 30 0D 4E。托利多輸出格式如圖 2所示。其中:1.起始符 (02H);2.狀態(tài)字;3.顯示重量,6位不帶符號(hào)和小數(shù)點(diǎn)的數(shù)字; 4.皮重值, 6位不帶字符和小數(shù)點(diǎn)的數(shù)字; 5.結(jié)束符( 0DH);6.波特率、校驗(yàn)位、數(shù)據(jù)位、停止位參照實(shí)際地磅設(shè)置參數(shù)。
3.系統(tǒng)開發(fā)
3.1串口初始化
采用 C#的 SerialPort類 PortName、BaudRate、DataBits、Parity、StopBits屬性分別設(shè)置通訊格式中的串口名、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位,參數(shù)配置與圖 3設(shè)置一致。serialPort.PortName = Com3;
serialPort.BaudRate = 9600
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits= StopBits.One;
3.2數(shù)據(jù)接收與處理
采用 C#的 SerialPort類 DataReceived事件接收串口發(fā)送的數(shù)據(jù),根據(jù)獲取數(shù)據(jù)的 ASCII表進(jìn)行十進(jìn)制轉(zhuǎn)化。運(yùn)行程序如下。
f (receivedData[i] > 47 && receivedData [i] < 59) //接收的數(shù)據(jù)
}
double weight = 0; //定義重量
for (int i = 0; i < data.Length; i++)
{//根據(jù)十進(jìn)制數(shù)組按個(gè)、十、百、千位進(jìn)行累加
weight += Convert.ToInt32(data[i] * Math.Pow(10, data.
Length - i - 1));
運(yùn)行效果如圖 4所示.
4.結(jié)束語(yǔ)
筆者采用串口仿真技術(shù)有效解決了地磅等實(shí)物不宜調(diào)試的問(wèn)題,提高了程序開發(fā)效率。并且有效解決了系統(tǒng)連續(xù)運(yùn)行穩(wěn)定性問(wèn)題,仿真技術(shù)可直接應(yīng)用到實(shí)際項(xiàng)目中。