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站硬件家园