- bunfig.toml 的 [fmt]:不写分号、单引号、一行最长 160,和原来的写法一致 - .prettierignore:docs/教材摘要/ 是书上的摘录,不格式化 - 模板里一行写两条语句的事件处理(@keydown.delete、@dblclick)改成调用方法:去掉分号后拆成两行,Vue 编译不过 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
任务目标
做一个路灯遥控程序:选好 ZigBee 协调器的串口点"打开",然后选"开"单选按钮路灯亮,选"关"路灯灭,窗体上的灯泡跟着实训台上的灯一起变。
练习重点:if 语句、按钮文字切换、单选按钮(RadioButton)的 CheckedChanged 事件、自己定义一个方法。详细步骤见书 p53–56。
界面和控件名
| 控件 | 名称(Name) | 文字(Text)和用途 |
|---|---|---|
| 窗体 | Form1 |
ZigBee路灯 |
| 灯泡 | lamp1 |
窗体上显示路灯的亮灭(工具箱"物联网设备"里的灯泡) |
| 单选按钮 | rb_Open |
开(开灯) |
| 单选按钮 | rb_Close |
关(关灯) |
| 分组框 | groupBox1 |
配置 |
| 标签 | lbl_Lamp |
路灯 |
| 下拉框 | com_port |
ZigBee 协调器的串口 |
| 按钮 | btn_open |
打开(打开后变成"关闭") |
书上的表格写的是
btn_Open,代码里是btn_open。名字区分大小写,请按代码写成btn_open,否则自动评分找不到这个按钮。
实现步骤
- 代码开头加上
using System.IO.Ports;和using DeviceCtrlLibrary;。 - 写一个方法
LampOnOff(int RelayNum, bool IsOpen):调用DeviceCtrlHelper.zigBeeHelper.OnOff控制实训台的路灯,再调用lamp1.OnOff让窗体上的灯泡跟着变。 - Form1_Load:清空
com_port,用SerialPort.GetPortNames()把串口号加进去。 - btn_open 的 Click:用 if 判断按钮文字——是"打开"就用
zigBeeHelper.Open(com_port.Text)打开串口,文字改成"关闭";是"关闭"就zigBeeHelper.Close(),文字改回"打开"。 - rb_Open 的 CheckedChanged:调用
LampOnOff(1, true)。 - rb_Close 的 CheckedChanged:调用
LampOnOff(1, false)。
和书上不一样的地方
书上第 12 步"关"按钮的事件方法名印成了
rb_Open_CheckedChanged,应该是rb_Close_CheckedChanged。在设计器里双击"关"单选按钮,生成的名字就是对的。
在平台上怎么试
- 运行后串口选 COM4(ZigBee 协调器),点"打开",按钮变成"关闭"。
- 选"开",窗体上的灯泡和实训台的照明灯 1 应一起亮;选"关",一起灭。