程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#串口編程實例代碼

C#串口編程實例代碼

編輯:C#入門知識

C#串口編程實例代碼。本站提示廣大學習愛好者:(C#串口編程實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C#串口編程實例代碼正文


因為任務須要,第一次接觸串口編程.所以不能不在網上查閱各類編程實例.最初聯合本身的懂得與理論,終究有了以下代碼.
本代碼只經由了簡略的軟件測試,與簡略的硬件測試.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
using System.IO.Ports;
namespace PacketsTest
{
   
   class ComSR
  {
    private SerialPort serialPort;
    private bool status = false;//接收停止狀況,true為勝利吸收到數據.
    private byte[] reciveData = null;//接收到的數據存儲到這裡.
    public bool Status
    {
      set { status = value; }
      get { return status; }
       
    }
    public byte[] RecivedData
    {
      get { return reciveData; }
    }
    public SerialPort _SerialPort
    {
      get { return serialPort; }
    }
 
    public ComSR(string portName,int baudRate,int dataBits,Parity parity,StopBits stopbits)
    {
      serialPort = new SerialPort();
      serialPort.PortName = portName;//設置端口
      serialPort.BaudRate = baudRate;//設置波特率
      serialPort.DataBits = dataBits;//設置數據長度
      serialPort.Parity = parity;//設置奇偶校驗協定
      serialPort.StopBits = stopbits;//停滯位
      serialPort.ReceivedBytesThreshold = 1;//這裡是讀事宜觸發前提,1代表一個字節
      serialPort.DtrEnable = true;//啟用數據終端停當旌旗燈號
      serialPort.RtsEnable = true;//要求發送停當旌旗燈號
      serialPort.DataReceived += new SerialDataReceivedEventHandler(Data_Recive);//綁定處置讀事宜的函數.
    }
 
    public void SendBuff(byte[] data)
    {
      try
      {
         
        serialPort.Write(data, 0, data.Length);//這裡是寫      
      }
      catch (Exception e)
      {
        if (serialPort != null && serialPort.IsOpen)
        {
          status = false; //這個status是我在下層類中斷定端口讀寫狀況的屬性,可以去失落
          serialPort.Close();
        }
      }
    }
 
    void Data_Recive(object o, EventArgs e)//這個是讀端口,事宜處置函數
    {
      try
      {
        Thread.Sleep(3);
        int length = serialPort.BytesToRead;
        reciveData = new byte[length];
        serialPort.Read(reciveData, 0, length);
        while (serialPort.BytesToRead != 0)//因為數據長度讀寫紛歧,並且時光很難肯定,所以在這裡做了如許的處置
        {
          Thread.Sleep(1);
        }
        if (serialPort.IsOpen)
        {
          status = true;
          //serialPort.Close();//這裡不該該封閉,應該在更高條理的法式上封閉端口.
        }
      }
      catch (Exception ex)
      {
        if (serialPort != null && serialPort.IsOpen)
        {
          status = false;
          serialPort.Close();
        }
      }
    }
 
 
 
    public void PortOpen()
    {
      if (!serialPort.IsOpen)
      {
        serialPort.Open();
      }
      else
      {
        serialPort.Close();
        serialPort.Open();
      }
    }
    /// <summary>
    /// 封閉端口
    /// </summary>
    public void PortClose()
    {
      if (serialPort != null && serialPort.IsOpen)
      {
        serialPort.Close();
      }
    }
  }
}

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved