Visual Studio C#上位机制作(3)串口助手

Visual Studio C#上位机制作(3)串口助手

  • 各种串口信息设置
  • 串口搜索部分
  • 打开串口时
  • 写入字节部分
  • 数据接收
  • 接收中文(多字节)

各种串口信息设置

解码方式serialPort1.Encoding = Encoding.GetEncoding("GB2312");
Visual Studio C#上位机制作(3)串口助手_第1张图片
波特率serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);

注意上面这张图中的最后一行System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;设置系统不检测跨线程操作

串口搜索部分

c#中有catch和try,如果try中的语句出现错误那就跳出转去执行catch中的语句。我们在COM口接入时是不能确定COM口的是COM几所以我们通过遍历的方式,来确定哪些COM口是连接上的。

把COM名字写入Port(串口组件的名字)的PortName中,然后打开Port成功的话就写入String数组和comboBox的下拉列表中,否则跳到catch中什么也不干
Visual Studio C#上位机制作(3)串口助手_第2张图片

打开串口时

Visual Studio C#上位机制作(3)串口助手_第3张图片
如果打开了串口,那么确认串口是否是关闭的,这里是为新一次打开COM口保险,如果不这么做的话假设串口一开始就是打开的那么就不能切换成现在要打开的COM口

然后把下拉框选中的COM口写入serialPort1,打开

写入字节部分

Visual Studio C#上位机制作(3)串口助手_第4张图片

这里定义了一个写数据的函数,调用这个函数时把data输入然后,serialPort1.Write函数第一位放写入的数组,第二位放从第几位开始写,第三位放写多少个

至于data怎么来可以使用textbox控件,然后使用类似Convert.ToInt32(textBox1.Text.Substring(0, 2));这样的函数就可以读取出来

数据接收

首先向系统注册接收数据的串口中断函数

serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPortDataReceived); 

函数如下:读取串口中单字节的数据
Visual Studio C#上位机制作(3)串口助手_第5张图片
至于怎么接收多字节,可以采用特定的符号来进行标识,每接收一个字节的数据都进行一次判断,判断接收到的该字节数据是否为特定的符号,是则截止,不是则继续接收后则如后文

这里可以提一下serialport属性中是定义了触发读的字节数的
在这里插入图片描述

接收中文(多字节)

Visual Studio C#上位机制作(3)串口助手_第6张图片
这里的ReadExisting是读取缓存区内所有字节数组中的BytesToRead是确定接收的字节数;foreach在C#中常用作遍历,把每个字节都放进textBox

你可能感兴趣的:(上位机)