C#如何接入串口設(shè)備(掃碼槍?zhuān)娮映拥龋?/h1>
? ? 在工業(yè)上位機(jī)開(kāi)發(fā)中接入各類(lèi)設(shè)備,有很大一部分都配備有串口接口,用于實(shí)現(xiàn)設(shè)備之間的通信與連接。我們經(jīng)常需要通過(guò)上位機(jī)對(duì)這些串口設(shè)備進(jìn)行訪問(wèn)與控制。其中,串口設(shè)備向PC主動(dòng)發(fā)送數(shù)據(jù)的場(chǎng)景較為常見(jiàn),例如各類(lèi)傳感器采集的數(shù)據(jù),都需要通過(guò)串口發(fā)送給PC軟件。為了實(shí)現(xiàn)這樣的串口通信與數(shù)據(jù)采集,我們需要對(duì)PC軟件進(jìn)行相應(yīng)的串口對(duì)接開(kāi)發(fā)。
????本文將重點(diǎn)介紹串口設(shè)備主動(dòng)推送數(shù)據(jù)時(shí)的通用串口訪問(wèn)方法,以及在上位機(jī)中如何接收解析這些串口數(shù)據(jù)。而對(duì)于光源設(shè)備,IO開(kāi)關(guān),PLC等由上位機(jī)主動(dòng)發(fā)送控制指令的場(chǎng)景,各家廠商通常會(huì)提供現(xiàn)成的串口編程接口和Demo,這里不再贅述。具體步驟如下:
一、添加命名空間using System.IO.Ports;
二、創(chuàng)建SerialPort類(lèi)的對(duì)象。這里有2種方法:
1.通過(guò)代碼創(chuàng)建:指定串口號(hào)、波特率等參數(shù):
2.通過(guò)界面拖動(dòng),直接修改屬性。



其中串口號(hào)與接口有關(guān)系,正常不同的接口對(duì)應(yīng)串口號(hào),并且在一些情況下串口號(hào)可能會(huì)改變,需要提前測(cè)試好。
波特率不同的廠家不一樣,比如霍尼韋爾的掃描槍是115200,得力捷掃碼槍是9600,這個(gè)可以使用串口助手測(cè)試,正常設(shè)置錯(cuò)誤會(huì)導(dǎo)致返回的數(shù)據(jù)有誤。
3.打開(kāi)串口,正常加在界面初始化函數(shù)或者按鈕事件中。
4.添加串口的回調(diào)函數(shù)。(這里大部分需要回調(diào)的設(shè)備類(lèi)似,就是當(dāng)某種事件不是由上位機(jī)控制,而是由設(shè)備控制的時(shí)候都需要。比如工業(yè)相機(jī)中的觸發(fā),傳動(dòng)帶的產(chǎn)品經(jīng)過(guò)動(dòng)態(tài)稱(chēng),掃碼這些有設(shè)備來(lái)決定的事件)
5.添加數(shù)據(jù)接收函數(shù)。
對(duì)data數(shù)據(jù)進(jìn)行解析,就能拿到對(duì)應(yīng)的內(nèi)容了。
6. 關(guān)閉串口(這個(gè)根據(jù)實(shí)際情況來(lái),長(zhǎng)連接可以一直連著,不用斷開(kāi))
以上的部分我們講解了串口設(shè)備對(duì)接的一些通用方法,主要就是讀取串口數(shù)據(jù)、解析協(xié)議這些基本操作,以上的部分可以解決我們大部分的串口對(duì)接需求,希望對(duì)大家有所幫助。