C#串口数据互通小程序

匿名 (未验证) 提交于 2019-12-02 22:06:11

主要功能:

所编写的程序需将串口1、串口2数据互通,即:串口1接收到数据的同时将数据通过串口2发出,串口2接收到数据的同时将数据通过串口1发出。

并根据需要由指定串口发送或获取数据。

代码如下:

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.Windows.Forms; using System.IO.Ports;  namespace 串口互通 {     public partial class Form1 : Form     {         private SerialPort comm4 = new SerialPort("COM4", 115200, Parity.None, 8, StopBits.One);//因为我测试设备采用的是COM4和COM5两个串口,所以就直接在上面定义了         private SerialPort comm5 = new SerialPort("COM5", 115200, Parity.None, 8, StopBits.One);         private StringBuilder builder = new StringBuilder();//避免在事件处理方法中反复的创建,定义到外面         byte[] buf1 = new byte[9] {90, 165, 6, 131, 0, 0, 1, 0, 2};//向串口下发的指令,在实际情况中是设备启动报文         byte[] buf2 = new byte[9] {90, 165, 6, 131, 0, 0, 1, 0, 1};//设备停止报文         public Form1()         {             InitializeComponent();         }         //打开串口按钮         private void button1_Click(object sender, EventArgs e)         {              comm4.Open();             comm5.Open();            button1.Enabled=false;            button2.Enabled=true;         }         //绑定方法到数据接收事件         private void Form1_Load(object sender, EventArgs e)         {             comm4.DataReceived+=comm4_DataReceived;             comm5.DataReceived+=comm5_DataReceived;         }         //com5口接收到的数据从com4口发出         private void comm5_DataReceived(object sender, SerialDataReceivedEventArgs e)         {             int n = comm5.BytesToRead;             byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据             comm5.Read(buf, 0, n);//读取缓冲数据             builder.Clear();//清除字符串构造器的内容             comm4.Write(buf, 0, buf.Length);//数据从com4口发出         }            //com4接收到的数据从com5口发出         private void comm4_DataReceived(object sender, SerialDataReceivedEventArgs e)         {             int n = comm4.BytesToRead;             byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据             comm4.Read(buf, 0, n);//读取缓冲数据             builder.Clear();//清除字符串构造器的内容             comm5.Write(buf, 0, buf.Length);//数据从com5口发出         }         //关闭串口按钮         private void button2_Click(object sender, EventArgs e)         {              comm4.Close();             comm5.Close();            button2.Enabled=false;            button1.Enabled=true;         }         //设备启动         private void button3_Click(object sender, EventArgs e)         {             comm5.Write(buf1, 0, buf1.Length);         }         //设备停止         private void button4_Click(object sender, EventArgs e)         {             comm5.Write(buf2, 0, buf2.Length);         }     } }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!