0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C#-串口設(shè)備對(duì)接

汽車(chē)電子技術(shù) ? 來(lái)源:程序猿知秋 ? 作者: 程序猿知秋 ? 2023-02-28 09:46 ? 次閱讀

圖片

基本概況

串口介紹

  • 串口 :是一種可以將接受來(lái)自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時(shí)可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能的電路,我們稱(chēng)為串行接口電路。
  • 串口通信(Serial Communications) :串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。
    • 波特率: 這是一個(gè)衡量符號(hào)傳輸速率的參數(shù)。指的是信號(hào)被調(diào)制以后在單位時(shí)間內(nèi)的變化,即單位時(shí)間內(nèi)載波參數(shù)變化的次數(shù),如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位,1個(gè)停止位,8個(gè)數(shù)據(jù)位),這時(shí)的波特率為240Bd,比特率為10位*240個(gè)/秒=2400bps。
    • 數(shù)據(jù)位: 這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)往往不會(huì)是8位的,標(biāo)準(zhǔn)的值是6、7和8位。標(biāo)準(zhǔn)的ASCII碼是0~127(7位),擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。
    • 停止位: 用于表示單個(gè)包的最后幾位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢
    • 奇偶校驗(yàn)位: 在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。
  • 串口通信的接口標(biāo)準(zhǔn): 標(biāo)準(zhǔn)有很多,有 RS-232C、RS-232、RS-422A、RS-485 等。常用的就是 RS-232 和 RS-485。串口通信使用的大多都是 DB9 接口,如下圖

圖片編輯

1 載波檢測(cè)(DCD) 2 接受數(shù)據(jù)(RXD) 3 發(fā)出數(shù)據(jù)(TXD) 4 數(shù)據(jù)終端準(zhǔn)備好(DTR) 5 信號(hào)地線(SG) 6 數(shù)據(jù)準(zhǔn)備好(DSR) 7 請(qǐng)求發(fā)送(RTS) 8 清除發(fā)送(CTS) 9 振鈴指示(RI)

c#中的串口操作類(lèi)

****System.IO.Port.SerialPort .NET Framework提供的操作串行端口的類(lèi),里面提供了一些方法、屬性和和事件供開(kāi)發(fā)者調(diào)用操作串口。

** 常用字段**

名稱(chēng) 說(shuō)明
PortName 獲取或設(shè)置通信端口
BaudRate 獲取或設(shè)置串行波特率
DataBits 獲取或設(shè)置每個(gè)字節(jié)的標(biāo)準(zhǔn)數(shù)據(jù)位長(zhǎng)度
Parity 獲取或設(shè)置奇偶校驗(yàn)檢查協(xié)議
StopBits 獲取或設(shè)置每個(gè)字節(jié)的標(biāo)準(zhǔn)停止位數(shù)

示例

// 建立串口對(duì)象
private static SerialPort serialPort;


public void init()
{
  serialPort = new SerialPort();
    //串行波特率
  serialPort.BaudRate = 115200;
    //每個(gè)字節(jié)的標(biāo)準(zhǔn)數(shù)據(jù)位長(zhǎng)度
  serialPort.DataBits = 8;
    // 設(shè)置每個(gè)字節(jié)的標(biāo)準(zhǔn)停止位數(shù)
  serialPort.StopBits = StopBits.One;
    // 讀、寫(xiě) 超時(shí)時(shí)間 單位毫秒
  serialPort.ReadTimeout = 500;
  serialPort.WriteTimeout = 500;
   // 串口名稱(chēng)
  serialPort.PortName = "COM1";
}

常用方法

名稱(chēng) 說(shuō)明
Close 關(guān)閉端口連接,將 IsOpen 屬性設(shè)置為false,并釋放內(nèi)部 Stream 對(duì)象
GetPortNames 獲取當(dāng)前計(jì)算機(jī)的串行端口名稱(chēng)數(shù)組
Open 打開(kāi)一個(gè)新的串行端口連接
Read SerialPort輸入緩沖區(qū)中讀取
ReadExisting 讀取 SerialPort 對(duì)象的流和輸入緩沖區(qū)中所有立即可用的字節(jié)
Write 將數(shù)據(jù)寫(xiě)入串行端口輸出緩沖區(qū)

示例

public void test1()
{
  // 判斷串口是否打開(kāi)
  if (serialPort==null || serialPort.IsOpen)
  {
    return;
  }
  // 打開(kāi)串口
  serialPort.Open();

  // 讀取串口中的內(nèi)容
  serialPort.ReadExisting()


  //如果串口處于打開(kāi)狀態(tài),則關(guān)閉
  if (serialPort.IsOpen)
  {
    // 關(guān)閉串口
    serialPort.Close();
  }  
}

常用事件

名稱(chēng) 說(shuō)明
DataReceived 表示將處理SerialPort對(duì)象的數(shù)據(jù)接收事件的方法

示例

public void test2()
{
  //設(shè)備監(jiān)聽(tīng)回調(diào)
  serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}


// 回調(diào)方法
public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
  try
  {
    //解析內(nèi)容
    SerialPort sp = (SerialPort)msg;
    string content = sp.ReadExisting();
    Console.WriteLine("WX GZH: 程序猿知秋,"+content);
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex);
  }

}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口電路
    +關(guān)注

    關(guān)注

    8

    文章

    465

    瀏覽量

    57111
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10873

    瀏覽量

    212090
  • 器件
    +關(guān)注

    關(guān)注

    4

    文章

    312

    瀏覽量

    27859
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在STM32上如何去對(duì)接一款串口傳感器

    背景說(shuō)明:STM32上對(duì)接一款串口傳感器,該串口采用串口如下波特率:115200停止位:1校驗(yàn)位:偶校驗(yàn)(Even)硬件流控:無(wú)數(shù)據(jù)位:8bit筆者使用STM32F103
    發(fā)表于 08-05 07:28

    STM32F103C8單片機(jī)是怎樣與串口傳感器對(duì)接上的

    STM32F103C8單片機(jī)是怎樣與串口傳感器對(duì)接上的?遇到了哪些問(wèn)題?
    發(fā)表于 10-25 06:06

    怎么實(shí)現(xiàn)阿里云IOT與單片機(jī)的對(duì)接?

    基于MQTT通信協(xié)議 實(shí)現(xiàn)單片機(jī)與騰訊云IOT|阿里云IOT|中國(guó)移動(dòng)ONENET的對(duì)接。在實(shí)際調(diào)試時(shí)選擇STM32F103C8T6與ESP826601S的開(kāi)發(fā)板,對(duì)接過(guò)程是一個(gè)比較艱難的過(guò)程。編譯
    發(fā)表于 11-22 06:55

    LVGL的輸入設(shè)備API對(duì)接

    LittleVGL (LVGL)干貨入門(mén)教程二之LVGL的輸入設(shè)備(indev)API對(duì)接前言:閱讀前,請(qǐng)確保你擁有以下條件:你已經(jīng)完成“顯示API”的移植。你已經(jīng)實(shí)現(xiàn)了一個(gè)屏幕的觸摸驅(qū)動(dòng) (如果你
    發(fā)表于 01-18 10:12

    m452rg6串口與8位mcu串口如何對(duì)接才能傳輸數(shù)據(jù)?

    目前有一案子,利用m452rg6與8位芯片串口對(duì)接,m452串口串接470歐的電阻,用usb轉(zhuǎn)串口模塊與pc調(diào)試時(shí)是正常的,但與8位機(jī)串口
    發(fā)表于 06-25 06:56

    系統(tǒng)不同供電的485設(shè)備對(duì)接中的問(wèn)題怎么解決?

    系統(tǒng)不同供電的485設(shè)備對(duì)接中的問(wèn)題怎么解決?
    發(fā)表于 10-17 07:26

    設(shè)備對(duì)接專(zhuān)題

    課程說(shuō)明 1課程介紹 1課程目標(biāo) 1相關(guān)資料 1第1章 SDH接口的對(duì)接 21.1 業(yè)務(wù)的對(duì)接 21.1.1 業(yè)務(wù)對(duì)接 21.2 開(kāi)銷(xiāo)與
    發(fā)表于 08-03 10:37 ?10次下載

    傳輸設(shè)備PDH接口對(duì)接問(wèn)題

    設(shè)備對(duì)接是任何通信工程中非常重要的一個(gè)環(huán)節(jié),設(shè)備對(duì)接的好壞直接影響到通信質(zhì)量。而我們?cè)?b class='flag-5'>設(shè)備對(duì)接
    發(fā)表于 07-26 09:34 ?2752次閱讀

    C#串口例程

    C#串口例程 實(shí)現(xiàn)串口數(shù)據(jù)收發(fā)和控制 需要的請(qǐng)下載
    發(fā)表于 11-12 14:19 ?10次下載

    C -與ORACLE直接連接代碼

    C -與ORACLE直接連接代碼(肇慶理士電源技術(shù)有限)-C#-與ORACLE直接連接代碼,有需要的可以參考!
    發(fā)表于 08-31 11:18 ?2次下載
    <b class='flag-5'>C</b> -與ORACLE直接連接代碼

    PLC與對(duì)接設(shè)備如何實(shí)現(xiàn)無(wú)線通信

    PLC與對(duì)接設(shè)備要實(shí)現(xiàn)無(wú)線通信,如何選用匹配的無(wú)線通信模塊,取決于PLC及設(shè)備的通訊接口、通訊協(xié)議、通訊距離等。因此可分為兩類(lèi)進(jìn)行概述。
    發(fā)表于 02-11 11:17 ?6406次閱讀
    PLC與<b class='flag-5'>對(duì)接</b><b class='flag-5'>設(shè)備</b>如何實(shí)現(xiàn)無(wú)線通信

    什么是串口轉(zhuǎn)I2C?有什么特點(diǎn)?

    什么是串口轉(zhuǎn)I2C?有什么特點(diǎn)?? 串口轉(zhuǎn)I2C是一種設(shè)備,用于將串行通信接口(通常稱(chēng)為串口)轉(zhuǎn)
    的頭像 發(fā)表于 09-14 17:52 ?1326次閱讀

    格雷希爾C9對(duì)接板總成為新能源汽車(chē)托盤(pán)式生產(chǎn)提供全方面連接方案

    C9對(duì)接板總成,由電連接器、自動(dòng)公母頭、對(duì)接模塊、快速接頭組成,一個(gè)完整的C9對(duì)接板總成可同時(shí)完成液冷測(cè)試
    的頭像 發(fā)表于 12-20 14:34 ?334次閱讀
    格雷希爾<b class='flag-5'>C</b>9<b class='flag-5'>對(duì)接</b>板總成為新能源汽車(chē)托盤(pán)式生產(chǎn)提供全方面連接方案

    工業(yè)RTU串口網(wǎng)關(guān)有哪些使用用途和使用場(chǎng)景

    工業(yè)RTU串口網(wǎng)關(guān)主要以串口形式實(shí)現(xiàn)對(duì)設(shè)備的鏈接和數(shù)據(jù)采集、傳輸,具有設(shè)備對(duì)接方便、設(shè)備
    的頭像 發(fā)表于 01-23 17:40 ?976次閱讀
    工業(yè)RTU<b class='flag-5'>串口</b>網(wǎng)關(guān)有哪些使用用途和使用場(chǎng)景

    工業(yè)串口設(shè)備通訊神器:串口服務(wù)器CS64J

    串口服務(wù)器作為連接傳統(tǒng)串口設(shè)備與網(wǎng)絡(luò)的橋梁,串口服務(wù)器實(shí)現(xiàn)了設(shè)備間的無(wú)縫對(duì)接和數(shù)據(jù)互通。這意味著
    的頭像 發(fā)表于 03-21 17:09 ?502次閱讀
    工業(yè)<b class='flag-5'>串口</b><b class='flag-5'>設(shè)備</b>通訊神器:<b class='flag-5'>串口</b>服務(wù)器CS64J