1、发送数据
通过串口控件收发数据。
串口控件重要属性:Baudrate:波特率(可改)
数据位:一般为8位
PortName:COM(1这是串口号)(串口号)
ReadBufferSize:4096(读缓冲区)
WriteBufferSize:2048(写缓冲区)
StopBits:One(停止位)
2、窗口控件:
一个编辑框
一个按钮
代码顺序:
1、初始化将十进制转为16进制,有256个16进制数。
ToString("x")将数字转换为16进制字符串,ToUpper是将字符串所有字符大写
2、为了让代码更加规范,进行判断如果数据长度等于1位就在它的前面加一个0让它的格式更规范。
3、点击事件
(1).存储下拉列表的内容
(2).忽略前两位只读后两位
(3). 定义一个数组只包含一个数据的数组,因为只发送一个数据所以数组只包含1个数据
(4).将数组内的数据转换为16进制数据
(5).进行容错处理防止串口出错
(6).代码:
public Form1(){
InitializeComponent();
}
private void Form1_load(object sender,EventArgs e){
string str;//用来临时存储i大写的十六进制格式字符串
for(int i=0;i<256;i++){
str=i.ToString("x").ToUpper();//ToString("x")将数字转换为16进制字符串,ToUpper是将字符串所有字符大写
if(str.Length==1){
str="0"+str;//如果是一位的(0xA),此时为了对齐,在数据前加一个字符串"0"(0x0A)
}
comboBox1.Items.Add("0x"+str);//统一添加"0x"
}
comboBox1.Text="0X00";//初始值
}
private void button1_Click(object sender,EventArgs e){
string data=comboBox1.Text;//存储当前下拉列表中的内容
string converdata=data.Substring(2,2);//把字符分开
byte[] buffer=new byte[1];//数据一个字节就够用了
buffer[0]=Convert.ToByte(converdata,16);//将字符转化为byte型变量
try{//容错处理
serialPort1.Open();//打开
serialPort1.Write(buffer,0,1);//发送数据 从第0个位置开始读取,读取一个字节
serialPort1.Close();//关闭
}
catch(Exception err){//出错后就执行此块代码 Exception err//错误信息
if(serialPort1.IsOpen){
serialPort1.Close();//如果是写数据时出错,此窗口状态为开,就应该关闭窗口,防止下次不能使用,串口是不能重复打开和关闭的
MessageBox.Show("端口错误","错误");
MessageBox.Show(err.ToString(),"错误");//显示错误信息
}
}
}