SerialPortStream是C#三方串口通讯类库之一,是一个增强的自定义串口通讯类,实现协议无关的数据帧完整接收功能,支持跨平台使用。相比于c#原生的串口通讯类更加简单易用,对收发事件的封装也更加完善,接下来附上串口通讯代码,顺便贴上组件开源地址:serialportstream

using RJCP.IO.Ports;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UsbDemo
{
    class ComConnect
    {
        protected SerialPortStream serialPort = null;
        public ComConnect()
        {
        }

        public void ConnectionCOM()
        {
            //配置串口参数
            serialPort = new SerialPortStream("COM3", 115200, 8, Parity.None, StopBits.One);
            serialPort.Handshake = Handshake.None;
            serialPort.RtsEnable = true;
            serialPort.DataReceived += OnReviceData;
            serialPort.ErrorReceived += OnErrorReceived;
            serialPort.PinChanged += OnPinChanged;

            if (!serialPort.IsOpen)
            {
                //打开串口
                serialPort.Open();

                var data = Encoding.UTF8.GetBytes("test");
                //同步发送
                serialPort.Write(data, 0, data.Length);
                //异步发送
                serialPort.WriteAsync(data, 0, data.Length);

                //关闭串口
                serialPort.Close();
            }

        }

        /// <summary>
        /// 数据接收事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnReviceData(object sender, SerialDataReceivedEventArgs e)
        {

        }

        /// <summary>
        /// 针脚改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnPinChanged(object sender, SerialPinChangedEventArgs e)
        {
        }

        /// <summary>
        /// 异常信息事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnErrorReceived(object sender, SerialErrorReceivedEventArgs e)
        {
        }
    }
}
最后修改:2022 年 09 月 27 日
如果觉得我的文章对你有用,请随意赞赏