張昱霖
摘要:上位機作為物聯(lián)設備軟件層核心之一,其地位十分重要。為了方便對物聯(lián)設備進行管理配置,本文基于ZigBee模塊和C#語言設計了一種能夠通過本地串口和網(wǎng)絡通信兩種方式對ZigBee模塊主控單元進行控制和數(shù)據(jù)讀取的上位機架構(gòu),具備可靠性和通用性的特點。
關鍵詞:ZigBee模塊;C#;上位機;通用性
中圖分類號:TP274 文獻標識碼:A 文章編號:1007-9416(2017)05-0053-01
1 基本原理
(1)上位機與下位機。上位機是用于接收數(shù)據(jù)、控制數(shù)據(jù)的軟件系統(tǒng);下位機是直接控制設備、獲取設備狀況的控制器。上位機可以接收下位機的信號,也可以向下位機發(fā)出命令,下位機再根據(jù)此命令解釋成相應時序信號直接控制相應設備。下位機會實時讀取設備狀態(tài)數(shù)據(jù),轉(zhuǎn)換成數(shù)字信號反饋給上位機。(2)ZigBee技術。作為無線通信技術領域中的ZigBee技術,其基于IEEE802.15.4協(xié)議。最大的特點是短距離、低功耗、低復雜度、低成本,非常適合嵌入距離較近的物聯(lián)設備供其通信使用[1]。(3)串口通信。串口是一種硬件類型的接口,按位發(fā)送和接收字節(jié),其參數(shù)包括:波特率、數(shù)據(jù)位、停止位和奇偶校驗,對于兩個進行通信的端口,這些參數(shù)必須相匹配[2]。具體的,ZigBee模塊傳感節(jié)點發(fā)送信號到ZigBee模塊匯聚節(jié)點即主控單元,主控單元通過串口將數(shù)據(jù)傳到計算機中的上位機中,上位機接收信息并處理。(4)網(wǎng)絡通信。要實現(xiàn)上位機與下位機之間的遠程網(wǎng)絡通信,有兩種方式:ZigBee模塊主控單元搭建Wi-Fi局域網(wǎng)方式的短距離通信、使用服務器和ZigBee模塊主控單元間的遠距離通信。
2 上位機與ZigBee模塊的串口通信
一般來說,ZigBee模塊采用RS232串口通信,8位數(shù)據(jù)位,1位停止位,低有效位先傳送。因此,將ZigBee模塊主控單元與計算機串口相連,通過C#編程設計上位機獲取有效的數(shù)據(jù)字段,可以方便的獲取ZigBee主控單元的數(shù)據(jù),具體如下:
2.1 串口配置
串口的屬性配置包括:端口號、波特率、數(shù)據(jù)位、停止位、校驗位。將串口的這些屬性值分別存儲進combobox中,根據(jù)實際情況進行選擇。
2.2 發(fā)送數(shù)據(jù)
使用Write接口三個參數(shù)的含義為:使用的數(shù)組、從數(shù)組第n位開始發(fā)數(shù)據(jù)、發(fā)送數(shù)據(jù)的長度。核心代碼如下:
if (serialPort.IsOpen){
try{
Byte[] b = new Byte[3] {1,2,3};
char[] ch = new char[3] {'a','b','c'};
serialPort.Write(b,0,1);//使用b[]數(shù)組,第0為開始,長度為1
serialPort.Write(ch,0,2);//使ch[]數(shù)組,第0為開始,長度為2
MessageBox.Show("發(fā)送成功");
}
catch{MessageBox.Show("發(fā)送失敗");}
}
2.3 接收數(shù)據(jù)
從ZigBee模塊主控單元中讀取數(shù)據(jù)的核心代碼如下:
void Receive(object sender,SerialDataReceivedEventArgs e)
{
if (serialPort.IsOpen){
Byte[] Receive = new Byte[serialPort.BytesToRead];
serialPort.Read(Receive, 0, Receive.Length);
serialPort.DiscardInBuffer();
textBox.Text += Encoding.ASCII.GetString(Receive);
}
}
3 上位機與ZigBee模塊的網(wǎng)絡通信
3.1 短距離傳輸
對上述使用串口向上位機有線傳輸數(shù)據(jù)的方式改進為無線局域網(wǎng)短距離傳輸,具體方式為:(1)ZigBee模塊主控單元將數(shù)據(jù)通過硬件串口發(fā)送給Wi-Fi模塊的串口,Wi-Fi模塊中需要有完整的套接字API或TCP/IP協(xié)議棧。(2)將Wi-Fi模塊與上位機連入同一個局域網(wǎng)保證其IP與上位機處于同一網(wǎng)段。(3)配置上位機與ZigBee模塊主控單元進行通訊。
3.2 遠距離通信
對上述只能在同一局域網(wǎng)向上位機傳輸數(shù)據(jù)的方式改進為通過以太網(wǎng)、不受距離約束的遠距離通信方式,具體方式為:(1)單純ZigBee模塊無法將數(shù)據(jù)發(fā)往以太網(wǎng),需要使用ZigBee/TCP網(wǎng)關。(2)ZigBee/TCP網(wǎng)關將數(shù)據(jù)轉(zhuǎn)換為TCP或UDP報文發(fā)送給指定的遠程服務器的IP和端口。(3)對遠程服務器建立TCP/UDP Server對指定的端口號進行監(jiān)聽,接收到報文后提取有效數(shù)據(jù)寫入數(shù)據(jù)庫,數(shù)據(jù)庫使用MySQL或SQL Server均可。(4)上位機使用Socket通信讀寫該服務器中數(shù)據(jù)庫的信息。
4 結(jié)語
本文研究了C#上位機對ZigBee模塊主控單元的控制與數(shù)據(jù)讀取的各種實現(xiàn)方式,包括傳統(tǒng)的串口通信、局域網(wǎng)短距離通信、服務器遠距離通信方式,可靠性與通用性很強,能夠滿足不同條件下的物聯(lián)設備與上位機的通信需求,對上位機與ZigBee模塊通信方式具有指導意義。
參考文獻
[1]王中生,曹梅.基于ZigBee的串口監(jiān)控軟件設計與實現(xiàn)[J].電子設計工程,2011(14):13-14.
[2]章輝,葉建芳,葉建威.基于MSComm控件串口通信的實現(xiàn)[J] .電子測量技術,2011(08):127.endprint