持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
之前我们已经实现了一个简单的温湿度监测小工具。这一章我们将会对小工具进行优化。 主要优化点如下:\
- 自动搜索电脑串口
- 增加串口参数配置
- 增加传感器地址配置
1. 页面修改
在之前章节中,我们实现了对串口的封装,包含一个api -> V_ScanPort,那么实现串口扫描的函数已经实现。我们需要再我们的主窗口的load函数中,增加对scan函数的调用。实现软件启动自动扫描串口。
1.1 修改页面,增加串口扫描combox
1.2 修改页面,增加波特率combox
1.3 修改页面,增加配置按钮
1.4 修改页面,增加一个textbox,用来表示传感器地址
以上修改完毕如下:
我们将页面修改为如图所示,将之前的groupbox移到右边,左边新增一个groupbox。取名串口配置; 增加两个combox,一个按钮,一个输入框。
2. 修改代码
2.1 在load函数中,增加对两个combox的初始化
2.1.1增加对串口的扫描和初始化
//扫描串口
string[] comlist = ComPort.V_ScanPort();
if (comlist.Length < 1)
{
MessageBox.Show("没有扫描到串口,请检查硬件连接");
return;
}
else
{
foreach (string name in comlist)
{
this.comboBox1.Items.Add(name);
}
}
2.2.2 增加波特率初始化
波特率默认选择,4800,9600,115200常用的三种,如有需求,自己可以新增
//波特率初始化
this.comboBox1.Items.Add("4800");
this.comboBox1.Items.Add("9600");
this.comboBox1.Items.Add("115200");
2.2.3 增加默认传感器地址\
//默认地址
this.textBox1.Text = "01";
修改完毕后,load函数如下:
private void Form1_Load(object sender, EventArgs e)
{
//扫描串口
string[] comlist = ComPort.V_ScanPort();
if (comlist.Length < 1)
{
MessageBox.Show("没有扫描到串口,请检查硬件连接");
return;
}
else
{
foreach (string name in comlist)
{
this.comboBox1.Items.Add(name);
}
}
//波特率初始化
this.comboBox2.Items.Add("4800");
this.comboBox2.Items.Add("9600");
this.comboBox2.Items.Add("115200");
//默认地址
this.textBox1.Text = "01";
}
2.2.4 增加配置按钮的回调
主要逻辑获取当前的配置,然后打开串口,上代码
/// <summary>
/// 配置确定按钮回调
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
try
{
//串口
string comname = this.comboBox1.Text;
//波特率
int baudrate = int.Parse(this.comboBox2.Text);
//打开串口
Runport = ComPort.V_OpenPort8N1(comname,baudrate);
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace +"\r\n"+ ex.Message);
}
}
2.2.5 修改读取数据按钮函数如下
/// <summary>
/// 获取温湿度数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonget_Click(object sender, EventArgs e)
{
if (Runport.IsOpen)
{
//获取地址
byte addr = byte.Parse(this.textBox1.Text);
//string ret = THSensor.ReadTHDataFromSensor(Runport, 0x03);
string ret = THSensor.ReadTHDataFromSensor(Runport, addr);
if (!string.IsNullOrEmpty(ret))
{
string temp = ret.Split('&')[0];
string humi = ret.Split('&')[1];
//赋值
textboxhumi.Text = humi;
textboxtemp.Text = temp;
}
else
{
MessageBox.Show("无数据,请检查配置参数");
}
}
else
{
MessageBox.Show("串口没有打开");
}
}
编译测试 运行后我们可以看到已经自动扫描出电脑的两个串口,如图:
修改我们的传感器地址,03,然后点击确定,然后点击获取温湿度
下一节,我会为我们的软件增加工具栏&&增加日志记录功能。