網站首頁 編程語言 正文
今天這篇文章帶大家學習下C#中的串口通訊。在日常的開發工作中,如果工作內容是CS方向的同學應該很容易接觸到串口通訊方面的業務需求。那么也就很容易想到C#中SerialPort類,它就是專門來處理串口通訊相關的。
了解什么是串口通訊
串口通訊是指外設和計算機間通過數據信號線,地線,控制線等,按位進行傳輸數據的一種通訊方式。
這種通訊方式使用的數據線少,在遠距離通信中可以節約成本,但其傳輸速度比并行通訊慢。
串口是計算機上一種非常通用的設備通訊協議。大多數計算機包含兩個基于RS-232的串口。
串口也是儀器儀表設備通用的通訊協議,很多GPIB兼容的設備也帶有RS-232口,同時串口通信協議也可以用于獲取遠程設備采集的數據。
串行接口是一種可以將接受來自CPU的并行數據字符轉換為連續的串行數據流發送出去,同時也可將接受的串行數據流轉換為并行的數據字符供給CPU的器件。
一般完成這種功能的電路,我們稱為串行接口電路。
串行按位(bit)發送和接收字節,盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。
這里提一句,我們筆記本的USB口,它不是串口,它是所謂的U口,我們的串口如果需要插入到USB口,那么就需要一個RS-232轉U口的轉換器才可以。
這里需要注意下,一般我們的硬件工程師都會在自己的硬件設備都內置這個小轉換設備,很方便。
C#中的串口通訊SerialPort
從.NET Framework 2.0開始,微軟就默認提供了System.IO.Ports.SerialPort類,根據SerialPort類提供的簡單操作步驟,可以很容易的完成串口的信息收發程序,從特定的串口中接收到數據也可以進行數據的發送。
關于SerialPort類的應用也很容易,可以根據微軟官方的介紹進行使用。
- 配置SerialPort的名稱,端口號,波特率等。
- 打開/關閉串口
- 接收/發送數據
SerialPort mySerialPort = new SerialPort("COM2"); mySerialPort.BaudRate = 9600; mySerialPort.Parity=Parity.None; mySerialPort.StopBits = StopBits.One; mySerialPort.DataBits = 8; mySerialPort.Handshake = Handshake.Non; mySerialPort.DataReceived += new SerialDataReceivedEvenHandler(DataReceive_Method); mySerialPort.Open(); mySerialPort.Close();
發送數據
using System.IO.Ports; private static void SendSampleData() { SerialPort port = new SerialPort( "COM1", 9600, Parity.None, 8, StopBits.One); port.Open(); port.Write("Hello World"); port.Write(new byte[] { 0x0A, 0xE2, 0xFF }, 0, 3); port.Close(); }
namespace SerialPortExample { class SerialPortProgram { private SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); [STAThread] static void Main(string[] args) { new SerialPortProgram(); } private SerialPortProgram() { Console.WriteLine("Incoming Data:"); port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); port.Open(); Application.Run(); } private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { Console.WriteLine(port.ReadExisting()); } }
日常串口的使用多數情況是和線程進行的,一般都是在子線程中做這些耗時和重復的工作,在主線程或者界面只進行數據的展示處理即可。
在子線程的處理過程中需要特別處理串口的打開和關閉,要及時關閉串口的狀態,防止出現無法捕獲的異常錯誤。
原文鏈接:https://blog.csdn.net/sinat_23966857/article/details/122676607
相關推薦
- 2024-03-20 redis閃退的三大解決辦法(windows版本)
- 2022-05-07 Python?遞歸式實現二叉樹前序,中序,后序遍歷_python
- 2023-07-09 SQL Server中的NULL值處理:判斷與解決方案
- 2022-06-01 Vertica集成Apache?Hudi重磅使用指南_相關技巧
- 2022-04-19 C語言庫函數qsort及bsearch快速排序算法使用解析_C 語言
- 2022-06-04 Python學習之魔法函數(filter,map,reduce)詳解_python
- 2023-12-21 npm install 報錯(npm ERR! errno: -4048, npm ERR! c
- 2022-10-14 matlab非線性最小二乘擬合
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支