Get the App
SLTechnology News&Howtos  ›  Development  › 

How to realize Serial Communication based on SerialPort Class in C #

Shulou Source: shulou.com Published: 2022-06-01 19:30:20 10月02日 Update

This article mainly explains "how to realize serial communication based on SerialPort class in C #". Interested friends may wish to have a look. The method introduced in this paper is simple, fast and practical. Next let the editor to take you to learn "C # based on SerialPort class how to achieve serial communication" it!

Final effect

Form Settings:

Using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO.Ports;using System.Threading;using System.Windows.Forms;namespace SerialCommunication {public partial class Form1: Form {System.Threading.SynchronizationContext m_SyncContext = null; SerialPort serialPort = null; ToHexadecimalString toHexadecimalString = new ToHexadecimalString () Public Form1 () {m_SyncContext = SynchronizationContext.Current; InitializeComponent ();} / / Data initialization private void Form1_Load (object sender, EventArgs e) {string [] ports = SerialPort.GetPortNames (); SerialPortNumber.Items.AddRange (ports); SerialPortNumber.SelectedIndex = SerialPortNumber.Items.Count > 0:-1 BaudRateCom.Text = "9600"; / / Set parameters CheckBitCom.Text = "None"; DataBitCom.Text = "8"; StopBitCom.Text = "One" } / / Send data private void Send_Click (object sender, EventArgs e) {try {/ / Send data and handle exceptions byte [] bytes = new byte [SendMessage.Text.Length]; bytes = Encoding.Default.GetBytes (SendMessage.Text); serialPort.Write (bytes, 0, bytes.Length) } catch (Exception error) {MessageBox.Show (error.Message);}} / Byte to hexadecimal string / / Clear data private void Clear_Click (object sender, EventArgs e) {ReceiveMessage.Text = "" } private void Open_Click (object sender, EventArgs e) {string portName = SerialPortNumber.Text; int buadRate = int.Parse (BaudRateCom.Text); Parity parity = 0; switch (CheckBitCom.Text) {case "None": parity = Parity.None; break Case "Odd": parity = Parity.Odd; break; case "Even": parity = Parity.Even; break; case "Mark": parity = Parity.Mark; break; case "Space": parity = Parity.Space; break } int dataBit = int.Parse (DataBitCom.Text); StopBits stopBits = 0; switch (StopBitCom.Text) {case "None": stopBits = StopBits.None; break; case "One": stopBits = StopBits.One; break Case "Tow": stopBits = StopBits.Two; break; case "OnePointFive": stopBits = StopBits.OnePointFive; break } try {if (Open.Text = = "Open") {serialPort = new SerialPort (portName, buadRate, parity, dataBit, stopBits); serialPort.Open (); Open.Text = "Close" } else if (Open.Text = = "Close") {serialPort.Close (); Open.Text = "Open";}} catch (Exception errror) {MessageBox.Show (errror.Message) } serialPort.DataReceived + = onDataReceived;} private void onDataReceived (object sender, SerialDataReceivedEventArgs e) {try {Byte [] bytes = new byte [serialPort.BytesToRead]; serialPort.Read (bytes, 0, serialPort.BytesToRead) M_SyncContext.Post (new SendOrPostCallback ((obj) = > {ReceiveMessage.AppendText (Encoding.Default.GetString (bytes));}), bytes);} catch (Exception error) {MessageBox.Show (error.Message) At this point, I believe you have a deeper understanding of "how to realize serial communication based on SerialPort class in C #". You might as well do it in practice. Here is the website, more related content can enter the relevant channels to inquire, follow us, continue to learn!

Tags: Serial port communication clips content learning practical deeper interest practicality practical simple operation effect method more friends forms websites channels query Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker NVidia Xiaomi Redmi Shulou Technology