基于C#语言的winform框架开发上位机串口助手
上面是窗体框的上边框样式,下面是一个tabControl控件,tabpage里面用splitcontainer当容器,放置控件如图所示。使用控件有如下,有不了解的问ai相关属性组合框 (ComboBox): 用于选择串口和波特率设置。文本框 (TextBox): 用于输入数据,如发送内容和周期时间。单选按钮 (RadioButton): 选择数据格式(ASCII或HEX)。单选按钮 (RadioB
·
概要
winform适合入门学习嵌入式单片机调试的新手学习,学习成本低,容易快速上手,快速实现功能,解决问题。
整体架构流程
参考流行串口调试助手UI框架,快速实现串口通信。主要是先要工具功能,确定UI结构层次。然后根据功能要求实现对应串口通信的收发,数据保存等等功能。
UI框架介绍

上面是窗体框的上边框样式,
具体参考文章《winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)》:https://blog.csdn.net/qq_42063091/article/details/93889165
下面是一个tabControl控件,tabpage里面用splitcontainer当容器,放置控件如图所示。
使用控件有如下,有不了解的问ai相关属性
- 组合框 (ComboBox): 用于选择串口和波特率设置。
- 文本框 (TextBox): 用于输入数据,如发送内容和周期时间。
- 单选按钮 (RadioButton): 选择数据格式(ASCII或HEX)。
- 单选按钮 (RadioButton): 选择数据格式(ASCII或HEX)。
- 按钮 (Button): 用于执行操作,例如“清空”、“保存”和“发送”。
- 标签 (Label): 显示各个设置的说明文字。
- 检查框 (CheckBox): 可能用于设置是否启用某些选项,如时间戳。
串口接收
双击serialPort控件,会产生这个串口接收事件
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(50);
byte[] rxbuf = new byte[16];
int bytesRead = serialPort.Read(rxbuf, 0, 16);
if (radioButton1.Checked == true)
{
string hexData = BitConverter.ToString(rxbuf, 0, bytesRead).Replace("-", " ");
try
{
//string receivedData = serialPort.ReadLine(); // 读取串口数据
Invoke(new Action(() => // 在UI线程中更新控件
{
richTextBox1.AppendText("->" + hexData + Environment.NewLine);
}));
}
catch (Exception ex)
{
MessageBox.Show("接收数据时出错: " + ex.Message);
}
}
else
{
string receivedData = System.Text.Encoding.ASCII.GetString(rxbuf, 0, bytesRead);
try
{
//string receivedData = serialPort.ReadLine(); // 读取串口数据
Invoke(new Action(() => // 在UI线程中更新控件
{
richTextBox1.AppendText("->" + receivedData + Environment.NewLine);
}));
}
catch (Exception ex)
{
MessageBox.Show("接收数据时出错: " + ex.Message);
}
}
}
下图分别是ASCII码格式和HEX格式接收显示

更多推荐



所有评论(0)