欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#基于SerialPort類實(shí)現(xiàn)串口通訊詳解

 更新時(shí)間:2022年01月31日 11:31:50   作者:迎迎一笑  
這篇文章主要為大家詳細(xì)介紹了C#基于SerialPort類實(shí)現(xiàn)串口通訊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#基于SerialPort類實(shí)現(xiàn)串口通訊的具體代碼,供大家參考,具體內(nèi)容如下

最終效果

窗體設(shè)置:

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 ? 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);
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實(shí)現(xiàn)屬于自己的QQ截圖工具

    C#實(shí)現(xiàn)屬于自己的QQ截圖工具

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)屬于自己的QQ截圖工具的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C#實(shí)現(xiàn)發(fā)送郵件的方法

    C#實(shí)現(xiàn)發(fā)送郵件的方法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)發(fā)送郵件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • C#操作XML文件實(shí)例匯總

    C#操作XML文件實(shí)例匯總

    這篇文章主要介紹了C#操作xml文件實(shí)例,包括了對(duì)XML文件節(jié)點(diǎn)的查找、遍歷、刪除、添加等。是C#程序設(shè)計(jì)中非常重要的技巧,需要的朋友可以參考下
    2014-08-08
  • C#創(chuàng)建控制Windows服務(wù)

    C#創(chuàng)建控制Windows服務(wù)

    這篇文章介紹了C#創(chuàng)建和控制Windows服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法

    C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • C#如何將DLL打包到程序中

    C#如何將DLL打包到程序中

    這篇文章主要介紹了C#如何將DLL打包到程序中問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • c#不使用系統(tǒng)api實(shí)現(xiàn)可以指定區(qū)域屏幕截屏功能

    c#不使用系統(tǒng)api實(shí)現(xiàn)可以指定區(qū)域屏幕截屏功能

    這篇文章主要介紹了不使用系統(tǒng)API通過純c#實(shí)現(xiàn)屏幕指定區(qū)域截屏功能,截屏后還可以保存圖象文件,大家參考使用吧
    2014-01-01
  • C#利用KPM算法解決字符串匹配問題詳解

    C#利用KPM算法解決字符串匹配問題詳解

    Knuth-Morris-Pratt 字符串查找算法,簡稱為 “KMP算法”,常用于在一個(gè)文本串S內(nèi)查找一個(gè)模式串P 的出現(xiàn)位置。本文將利用該算法解決字符串匹配問題,感興趣的可以學(xué)習(xí)一下
    2022-11-11
  • C#網(wǎng)絡(luò)編程中常用特性介紹

    C#網(wǎng)絡(luò)編程中常用特性介紹

    這篇文章介紹了C#網(wǎng)絡(luò)編程中常用特性,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • DevExpress實(shí)現(xiàn)根據(jù)行,列索引來獲取RepositoryItem的方法

    DevExpress實(shí)現(xiàn)根據(jù)行,列索引來獲取RepositoryItem的方法

    這篇文章主要介紹了DevExpress實(shí)現(xiàn)根據(jù)行,列索引來獲取RepositoryItem的方法,需要的朋友可以參考下
    2014-08-08

最新評(píng)論