.NET 如何實現與序列裝置的通訊

Mondo 科技 更新 2024-02-07

串列埠是序列介面的縮寫,是電子裝置之間通訊常用的全雙工擴充套件介面。 RS-232 標準通常用於計算機和外部裝置(帶有 25 針或 9 針聯結器)之間的資料傳輸。 如今,我們基本上已經看不到電腦中的串列埠了,我們可以使用USB介面卡將COM口轉換為USB介面進行連線。 今天我們就來一探究竟。.NET 如何用 C 編寫實現與這些裝置的通訊。 序列通訊包括通訊時序、通訊速率和資料傳輸。 常用的通訊速率有2400bps、4800bps、9600bps、19200bps、38400bps和115200bps。 我們通過下圖對串列埠的通訊時序有乙個簡單的了解,它由起始位、資料位、校驗位和停止位組成。

下表描述了計時元件。 NET Framework 庫提供了 SerialPort 類,該類可用於配置和管理串列埠的屬性,串列埠可用於傳送和接收資料。 SerialPort 類的常見屬性包括埠名、波特率、奇偶校驗、資料位、停止位、握手、readtimeout 和 writetimeout。 這些屬性用於指定串列埠名稱、波特率、校驗位、資料位、停止位、握手協議以及讀寫資料時的超時時間。 屬性。

紅色是類的公共屬性,當我們使用該類時,該屬性是根據所連線裝置的情況進行配置的。

方法。 我們先配置一下類的屬性,然後用 open() 方法開啟串列埠,用 write() 方法傳送資料,用 read() 方法讀取資料,用 close() 方法關閉串列埠。

事件。 在傳送和接收資料時,我們還可以使用事件來處理資料的到達和完成。

我們首先定義兩種列舉型別:波特率和資料位

波特率。 

serializable]

public enum baudrates

資料位。

serializable]

public enum databits

我正在將序列埠上的操作包裝在乙個類中。
using system;

using system.collections;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.io.ports;

namespace fountain.net.core.com

字串空操作。

public class operationserialportset

private baudrates _baudrate = baudrates.baud9600;

波特率。

public baudrates baudrateset

private parity _parity = parity.none;

校驗位。

public parity parityset

private stopbits _stopbits = stopbits.one;

停止位。

public stopbits stopbitsset

private databits _databits = databits.bit8;

資料位。

public databits databitsset

無引數建構函式。

public operationserialport()

繫結事件。

private void boundevents()

儲存接收到的用於分析的位元組。

list _storereceivedbytes = new list();

接收資料。

private void serialport_datareceived(object sender, serialdatareceivedeventargs e)

catch 錯誤處理程式。

private void serialport_errorreceived(object sender, serialerrorreceivedeventargs e)

埠是否已開啟。

public bool isopen

開啟埠。

public void open()

this._serialport.portname = this._portname;

this._serialport.baudrate = (int)this._baudrate;

this._serialport.parity = this._parity;

this._serialport.databits = (int)this._databits;

this._serialport.stopbits = this._stopbits;

this._serialport.open();

catch (exception ex)

關閉埠。

public void close()

catch (exception ex)

public void discardbuffer()

寫入資料。

位元組陣列。

public void write(byte writebuffer, int offset, int count)

this._serialport.write(writebuffer, offset, count);

catch (exception ex)

寫入資料。

位元組陣列。

public void write(byte writebuffer)

this._serialport.write(writebuffer, 0, writebuffer.length);

catch (exception ex)

序列埠名稱。

public static list getportnames()

return portnamelist;

catch(exception ex)

獲取波特率。

public static list getbaurates()

return baudrateslist;

catch (exception ex)

獲取校驗位。

public static list getparitys()

return parityslist;

catch (exception ex)

獲取資料位。

public static list getdatabits(ilist obj)

return databitslist;

catch (exception ex)

獲取停止位。

public static list getstopbits()

return stopbitlist;

catch (exception ex)

如何稱呼:
using fountain.net.core.com;

using system.io.ports;

using system.text;

namespace fountain.net.com.demo

public partial class formserialport : form

private void formserialport_load(object sender, eventargs e)catch

private void initialcombox()

catch (exception ex)

串列埠接收資料處理。

private void initialport()

this.begininvoke(new action(()=> )

catch (exception ex)

開啟。 private void btnopen_click(object sender, eventargs e)

catch (exception ex)

關閉。 private void btnclose_click(object sender, eventargs e)

catch (exception ex)

清除收到的內容。

private void btnclean_click(object sender, eventargs e)

catch (exception exception)

SerialPort 是乙個非常方便的庫,用於與串列埠裝置通訊,從事硬體對接開發和嵌入式開發的人難免會使用這個類。

相關問題答案

    串列埠伺服器如何實現多主機閘道器?

    如上一節所述,Modbus協議是工業應用中使用最廣泛的協議。在Modbus協議系統中,主機一般是PLC HMI 組態軟體等,但在稍微複雜的系統中,通常同時有多台主機。由於通訊電纜一般為RS,半雙工特性導致多台主機同時採集資料時資料延遲較大。因為只有乙個主從可以同時傳送資料,否則會造成資料衝突,形成亂...

    如何通過裝置維修降低成本,提高效率

    在當今競爭激烈的市場環境中,製造工廠需要不斷尋找降低成本和提高效率的方法,以提高生產力並降低運營成本。裝置維修是製造工廠的重要成本 因此如何降低裝置維修成本,提高維修效率成為許多工廠亟待解決的問題。本文將針對製造廠如何在裝置維修中實現成本降低和效率提高的最佳方式,並提出一些切實可行的建議和解決方案。...

    物聯網裝置管理平台如何工作?它是如何工作的?

    隨著科學技術的飛速發展,各種物聯網裝置已經滲透到我們生活和工作的方方面面。從智慧型家居到工業自動化,物聯網裝置正在改變我們的生活和工作方式。然而,如何有效地管理和監控這些裝置已成為乙個越來越重要的問題。這時,物聯網裝置管理平台應運而生。IoT 裝置管理平台是為管理特定裝置而量身定製的工具 流程和選項...

    如何選擇飼料加工裝置,實現高效、安全、環保的生產

    飼料加工裝置 實現高效 安全 環保的生產。隨著水產養殖業的不斷發展,飼料加工裝置在生產過程中發揮著越來越重要的作用。飼料加工裝置市場不斷擴大,各種裝置品牌和型號層出不窮,使用者在選擇時難免會感到困惑。本文將介紹飼料加工裝置的選購技巧,幫助您選擇適合您的裝置,實現高效 安全 環保的生產。 了解飼料加工...

    如何使用NFC實現裝置巡檢管理系統如何做好巡檢管理

    在企業和組織的日常運營中,裝置巡檢是非常重要的一環。通過定期檢查裝置的狀態和執行情況,及時發現和解決潛在問題,確保裝置的安全和正常執行。傳統的檢查方法需要使用紙質記錄 這既繁重又容易出錯。如今,使用NFC 近場通訊 技術可以大大簡化檢測過程,提高工作效率。為了實施NFC檢查管理系統,我們需要乙個NF...