C#写一个上位机详细模板
初始化连接(可直接当做模板用)
public SerialPort SerialPortObject2 = new SerialPort(); //定义一个对象
string[] SerialPortObject2 = SerialPort.GetPortNames(); //读取可用串口,并且放到combox中
foreach (string port in strPort)
{
comboBox.Items.Add(port);
}
SerialPortObject2.PortName = comBox1.text //初始化串口
SerialPortObject2.BaudRate = 9600; //波特率
SerialPortObject2.DataBits = 8; //设置8位数据
SerialPortObject2.StopBits = StopBits.One; //停止位1位
SerialPortObject2.Parity = Parity.None; //无校验
SerialPortObject2.Open(); //打开串口
/*
byte[] matchCommand = { 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- }; //定义配对命令;数据协议需要自己定,不是必须的
byte[] requestCommand = { 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- }; //定义请求信息命令,不是必须的
*/
SerialPortObject2.Write(matchCommand, 0, matchCommand.Length); //发送握手信号
Thread.Sleep(100); //如果发送数据后不进行延迟,一般来说无法接收到实时数据
SerialPortObject2.DiscardInBuffer(); //清零串口读取缓冲区,有了延迟后,所以会得到对方返回的数据
SerialPortObject2.Write(requestCommand, 0, requestCommand.Length);//发一次请求信息命令后也要进行延时处理
Thread.Sleep(100);
进行目标信息的处理(可直接当做模板用)
int n = SerialPortObject2.BytesToRead; //BytesToRead是属性不是方法,它代表了接收了有多少字节
byte[] buf = new byte[n]; //声明一个临时数组存储当前来的串口数据
SerialPortObject2.Read(buf, 0, n); //读取缓冲数据
List<byte> buffer = new List<byte>(4096); //buffer作为buf的数据接收
buffer.AddRange(buf); //将buf放到buffer里;
//AddRange可以让我们要加入的东西一次性加入; ADD只能一条一条的加
buffer.Count; //代表list(buffer)中实际元素个数
buffer[2]; //buffer中第3个数据;
(づ ̄3 ̄)づ╭?~
小细节
一 清除Item元素
C#清空Combox 的Iteam元素:
combox1.ResetText(); //combox1.ResetContent不支持
二 清除文本框内容
C#combobox1中设置dropdownstyle为dropdownlist,清空文本框内容时写法:
comboBox1.SelectedIndex = -1;
C#combobox1中设置dropdownstyle为dropdown,清空文本框内容时写法:
comboBox1.text= "";
C#combobox1中设置了items,清空文本框内容时写法:
comboBox2.Items.Clear();
三.串口初始化信息的原理(请参考https://zhidao.baidu.com/question/630282737590688484.html)
1,起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。
2,数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
3,校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。
4,停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
四.窗体操作
GrowOnly: 这个有关于程序启动时窗体是否自适应;
FormBorderStyle Form: 边框样式