Files
IOT_SIM/samples/p2-t1-LED显示屏/task.md
T
xuyueandClaude Opus 5.5 46e0f40cce
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
实训台接线:串口要选对。接线做成数据(BoardState.wiring),默认按教材布局图 COM2 ADAM-4017+、COM3 ADAM-4150、COM4 ZigBee 协调器、COM5 LED 屏,实验可在 meta.json 的 wiring 里改:项目 7 的书上代码在一个串口上打开两个模块,这三个实验把 4150 并到 COM2 的 485 总线上。选错串口时返回值照反编译的真机版 dll(4017 全 null、4150 全 false,4150 的 OnOff 和 LED 推送返回成功但设备不动作,ZigBee 返回 false);串口没打开时照教材仿真版。Open / Close / 没打开就读写报告给服务器,实训台最上方用红字提示("程序在 COM2 上打开 ADAM-4150,它接在 COM3""ADAM-4150 的串口没有打开,程序却在读写它"),评分不通过时也附上。只读接线展示:鼠标移到实训台设备上,标题栏写出线路,对应通道、模块、串口高亮;串口服务器按接线列出设备,程序打开的口亮绿点;程序里串口下拉框的灰字按当前接线。打开实验时浏览器发 experiment 消息换接线,老师看学生提交时按作业的实验接线(提交接口返回 sampleId)。"4017"统一写成 ADAM-4017+
上课前逐个检查 23 个实验后的修改:补上三处评分漏洞(项目 3 任务 1、项目 4 任务 3 的关闭和项目 7 任务 2 的熄灯,程序什么都不做也能通过);评分说明的空格;任务说明按实测补充(项目 2 任务 1–3、项目 3 任务 2、项目 4 任务 2、项目 7 任务 1–3、项目 8 任务 5)。使用说明、设计方案同步,设计方案记下以后可能扩展"物联网设备安装与调试"课

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:40:57 +08:00

3.1 KiB
Raw Blame History

任务目标

模拟校园信息发布:选好 LED 显示屏的串口并打开,在文本框里输入一段文字,点"推送"后实训台的 LED 屏和窗体上的 LED 控件都显示这段文字;推送失败时弹出出错信息。

练习重点:分组框(GroupBox)、下拉框的 Click 事件、用 SerialPort.GetPortNames() 列出串口、调用设备类库、自定义控件 LED。详细步骤见书 p23–27。

界面和控件名

控件 名称(Name) 文字(Text)和用途
窗体 Form1 LED显示屏
LED 显示屏 led 窗体上方的大块 LED 控件,在工具箱"物联网设备"里
分组框 groupBox1 LED控制
下拉框 com_Port 串口(前面放标签"串口")
按钮 btn_Open 打开
文本框 txt_SendText 要推送的文字(前面放标签"推送LED信息")
按钮 btn_Send 推送

书上的表格把 LED 控件写成 LED,代码里用的是小写的 led,请按代码起名。

实现步骤

  1. 平台已经引用好了 DeviceCtrlLibrary.dll 和 WinFormsDeviceControlLibrary.dll,不用像书上那样复制 dll、添加引用;LED 显示屏、灯泡、报警灯这些控件直接在工具箱的"物联网设备"里。
  2. 代码开头加上 using System.IO.Ports;、using DeviceCtrlLibrary;、using WinFormsDeviceControlLibrary;。
  3. com_Port 的 Click(在 ⚡ 事件里双击"单击",即 Click):先清空下拉框,再用 foreach 把 SerialPort.GetPortNames() 的每个串口号加进去。这样每次点开下拉框都会刷新串口列表。
  4. btn_Open 的 Click:调用 DeviceCtrlHelper.ledHelper.OpenLedCom(com_Port.Text) 打开选中的串口。
  5. btn_Send 的 Click:调用 DeviceCtrlHelper.ledHelper.SendLedString(txt_SendText.Text),把返回的字符串存到变量 res;如果 res 里含有 "Error"(res.IndexOf("Error") >= 0)就用 MessageBox 显示出来,否则调用 led.setLedText(res) 让窗体上的 LED 控件显示。

和书上不一样的地方

知识提炼的 try-catch 示例里,书上把 catch (Exception ex) 印成了 Catch(EventArgs ex),照抄会编译不过:catch 要小写,括号里是异常类型 Exception。

在平台上怎么试

  1. 运行后点开"串口"下拉框,选 COM5(LED 屏),点"打开"。
  2. 输入"欢迎光临",点"推送",实训台的 LED 显示屏和窗体上的 LED 控件都应显示"欢迎光临"。
  3. 重新运行,先点实训台的"实训台复位"清掉 LED 屏上的字(和真的 LED 屏一样,上次显示的字会一直留着),再不点"打开"直接推送:应弹出"Error:发送失败",LED 屏不显示,实训台最上方用红字提示串口没有打开。