1.功能描述
上位机与下位机进行通讯时需要用到波特率设置功能,以及尝试与下位机实体进行通讯。
2.代码部分
步骤1:串口开启按钮事件中添加代码
serialPort1.BaudRate = Convert.ToInt32(comboBox14.Text, 10);//将十进制的文本转换为32位整型赋值给串口1的波特率
步骤2:波特率参数设置复选框事件中添加代码
//波特率设置复选框事件private void comboBox14_SelectedIndexChanged(object sender, EventArgs e){serialPort1.BaudRate = Convert.ToInt32(comboBox14.Text, 10);//将十进制的文本转换为32位整型赋值给串口1的波特率}}
3.完整代码
功能关联有以下两处地方
//打开串口按钮事件private void button2_Click(object sender, EventArgs e){if (button2.Tag.ToString() == "ON"){//关闭串口try{serialPort1.Close();button2.BackgroundImage = Properties.Resources.Image_CloseSerial;button2.Tag = "OFF";textBox1.AppendText("[" + DateTime.Now.ToString("HH:mm:ss") + "]" + "->");textBox1.AppendText("手动关闭串口!\r\n");timer1.Stop();//串口关闭情况下关闭串口有效检测功能}catch{}}else //串口已关闭{//打开串口try{serialPort1.PortName = comboBox1.Text; //端口号serialPort1.BaudRate = Convert.ToInt32(comboBox14.Text, 10);//将十进制的文本转换为32位整型赋值给串口1的波特率serialPort1.Open(); //打开端口button2.BackgroundImage = Properties.Resources.Image_OpenSerial;button2.Tag = "ON";textBox1.AppendText("[" + DateTime.Now.ToString("HH:mm:ss") + "]" + "->");textBox1.AppendText("串口打开成功!\r\n");//WritePrivateProfileString("串口1", "端口号", comboBox1.Text, FileName);timer1.Start();}catch{serialPort1.Close();button2.BackgroundImage = Properties.Resources.Image_CloseSerial;button2.Tag = "OFF";textBox1.AppendText("[" + DateTime.Now.ToString("HH:mm:ss") + "]" + "->");textBox1.AppendText("串口打开失败!\r\n");timer1.Stop();//串口关闭情况下关闭串口有效检测功能}}}
//波特率设置复选框事件private void comboBox14_SelectedIndexChanged(object sender, EventArgs e){serialPort1.BaudRate = Convert.ToInt32(comboBox14.Text, 10);//将十进制的文本转换为32位整型赋值给串口1的波特率}}
4.测试结果
测试时注意不要用Configure Virtual Serial Port Driver虚拟串口,虚拟串口中默认两路com通讯连接,修改波特率并不影响两com之间的数据收发,故无法验证此功能。
正确方式,找到两个TTL转串口模块,TXRX通讯线交换连接,上位机使用sscom与自己开发的上位机进行串口端口绑定,进行波特率参数设置,测试不同波特率下数据收发情况,测试结果正常,此功能开发成功。
参考自B站硬件家园