Files
IOT_SIM/samples/p2-t3-LED推送模拟量/task.md
T
xuyueandClaude Opus 5.5 de277d3e9d
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
用 bun fmt 格式化全部代码和文档
- bunfig.toml 的 [fmt]:不写分号、单引号、一行最长 160,和原来的写法一致
- .prettierignore:docs/教材摘要/ 是书上的摘录,不格式化
- 模板里一行写两条语句的事件处理(@keydown.delete、@dblclick)改成调用方法:去掉分号后拆成两行,Vue 编译不过

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:02:33 +08:00

3.9 KiB
Raw Blame History

任务目标

把任务 1 和任务 2 合起来:同时打开 ADAM-4017+ 和 LED 屏的串口,点"获取"读出光照度、温度、湿度,显示在文本框里,再拼成一句话推送到 LED 屏,例如"当前环境信息 光照度:500lx温度:25℃湿度:60%"。

练习重点:下拉框(ComboBox)和文本框(TextBox)、字符串拼接、一个按钮同时控制两个设备。详细步骤见书 p42–45。

界面和控件名

控件 名称(Name) 文字(Text)和用途
窗体 frm_LED LED推送模拟量
LED 显示屏 led 窗体上方的 LED 控件
分组框 grp_show 数据显示
文本框 txt_light、txt_temperature、txt_humidity 显示光照度、温度、湿度的值(前面放标签)
按钮 btn_get 获取
分组框 grp_config 配置
下拉框 com_adamPort 模拟量串口(ADAM-4017+)
下拉框 com_ledPort LED串口
按钮 btn_open 开启(打开后变成"关闭")

书上的表格写的是 btn_Open,代码里是 btn_open(小写 o);表格里也没有列 LED 控件,代码里叫 led。请按代码起名,自动评分按这些名字找控件。

窗体名:在设计器里点窗体空白处,把属性窗口的名称从 Form1 改成 frm_LED,类名、文件名和 Program.cs 会跟着改。先改名再双击窗体,生成的 Load 事件才叫 frm_LED_Load。

实现步骤

  1. 代码开头加上 using System.IO.Ports;、using DeviceCtrlLibrary;、using DeviceCtrlLibrary.Model;。
  2. 声明全局变量:bool IsOpen = false;、ADAM4017ResModel ResModel;、String LED_MSG = "";(要推送的文字)。
  3. frm_LED_Load:清空两个下拉框,用一个 foreach 把串口号同时加进 com_adamPort 和 com_ledPort。
  4. btn_open 的 Click:
    • 没打开时:adam4017Helper.Open(com_adamPort.Text) 和 ledHelper.OpenLedCom(com_ledPort.Text) 打开两个串口,按钮改成"关闭",IsOpen 设为 true;
    • 已打开时:adam4017Helper.Close() 和 ledHelper.Close() 关闭,按钮改回"开启",IsOpen 设为 false。
  5. btn_get 的 Click:
    • 先把 LED_MSG 清空,用 adam4017Helper.SetData() 读数据,填进三个文本框(和任务 2 一样);
    • 把"当前环境信息"和三个值拼进 LED_MSG(光照度后面加 lx,温度加 ℃,湿度加 %);
    • 调用 ledHelper.SendLedString(LED_MSG),返回值里没有 "Error" 时,调用 led.setLedText 让窗体上的 LED 控件也显示。

和书上不一样的地方

书上关闭时调用的 DeviceCtrlHelper.ledHelper.Close(),教材配套的类库里其实没有这个方法。平台保留了它(什么也不做),书上的代码可以原样编译。

书上的 True / False 首字母大写是印刷错误,要写成小写的 true / false。

在平台上怎么试

  1. 运行后"模拟量串口"选 COM2(ADAM-4017+),"LED串口"选 COM5(LED 屏),点"开启"。
  2. 点"获取",文本框显示温度 25、湿度 60、光照度 500,实训台的 LED 显示屏上应出现这三个数。
  3. 在实训台上把温度拖到 31,再点"获取",LED 屏上的温度应变成 31。