- bunfig.toml 的 [fmt]:不写分号、单引号、一行最长 160,和原来的写法一致 - .prettierignore:docs/教材摘要/ 是书上的摘录,不格式化 - 模板里一行写两条语句的事件处理(@keydown.delete、@dblclick)改成调用方法:去掉分号后拆成两行,Vue 编译不过 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
任务目标
从 ADAM-4017+ 模拟量采集器读出光照度、温度、湿度:选好串口点"开启",再点"获取",三个文本框显示传感器的当前值;"开启"按钮打开后变成"关闭",再点一次关闭串口。
练习重点:标签(Label)和按钮(Button)、窗体的 Load 事件、用 bool 变量记住串口是否打开、读取设备类库返回的数据。详细步骤见书 p36–39。
界面和控件名
| 控件 | 名称(Name) | 文字(Text)和用途 |
|---|---|---|
| 窗体 | frm_analog |
模拟量采集 |
| 分组框 | grp_show |
数据显示 |
| 标签 | lbl_light、lbl_temperature、lbl_humidity |
光照度、温度、湿度 |
| 文本框 | txt_light、txt_temperature、txt_humidity |
显示光照度、温度、湿度的值 |
| 按钮 | btn_get |
获取 |
| 分组框 | grp_config |
配置 |
| 下拉框 | com_port |
串口 |
| 按钮 | btn_Open |
开启(打开后变成"关闭") |
窗体名:在设计器里点窗体空白处,把属性窗口的名称从
Form1改成frm_analog,类名、文件名和 Program.cs 会跟着改。先改名再双击窗体,生成的 Load 事件才叫frm_analog_Load。
实现步骤
- 代码开头加上
using System.IO.Ports;、using DeviceCtrlLibrary;、using DeviceCtrlLibrary.Model;(平台已经引用好了设备类库,不用复制 dll)。 - 声明两个全局变量:
bool IsOpen = false;记录串口是否打开,ADAM4017ResModel ResModel;存放读到的数据。 - frm_analog_Load(窗体的 Load 事件,双击窗体空白处生成):清空
com_port,用 foreach 把SerialPort.GetPortNames()的串口号加进去。 - btn_Open 的 Click:
- IsOpen 为 false 时:
DeviceCtrlHelper.adam4017Helper.Open(com_port.Text)打开串口,按钮文字改成"关闭",IsOpen 设为 true; - 否则:
adam4017Helper.Close()关闭串口,按钮文字改回"开启",IsOpen 设为 false。
- IsOpen 为 false 时:
- btn_get 的 Click:
ResModel = DeviceCtrlHelper.adam4017Helper.SetData();,把ResModel.lightValue、temperatureValue、humidityValue分别填进三个文本框。
和书上不一样的地方
书上把
IsOpen = true、IsOpen = false印成了True、False(首字母大写),C# 的布尔值只能小写,照抄会编译不过。
在平台上怎么试
- 运行后串口选 COM2(ADAM-4017+),点"开启",按钮应变成"关闭"。
- 点"获取",三个文本框应显示实训台上的默认值:温度 25、湿度 60、光照度 500。
- 在实训台上把温度拖到 31、光照拖到 300,再点"获取",文本框应变成新的数值。