Files
IOT_SIM/samples/p6-t2-存储环境数据/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

4.7 KiB
Raw Blame History

任务目标

从 ADAM-4017+ 读出光照度、温度、湿度,点"保存"存进 SQL Server 数据库的 CampusEnvironment 表,在表格里显示全部记录;还能在表格里改数据后点"修改"保存,选中一行点"删除"删掉。

练习重点:ADO.NET 的 SqlConnection、SqlCommand、SqlDataAdapter,insert / update / delete 语句,DataGridView 绑定数据。详细步骤见书 p119–124。

先准备数据库

这个任务用任务 1 建的环境数据表库,并在库里新建 CampusEnvironment 表:ID(int,标识列,主键)、light、humidity、temperature(都是 varchar(50))、addtime(datetime)。

在右上角的数据库页面里建表;还没做任务 1,或者数据弄乱了,点恢复实验初始数据,选这个实验,库和表会自动建好。

界面和控件名

控件 名称(Name) 文字(Text)和用途
窗体 Form1 校园灾情数据存储
分组框 groupBox2 配置
下拉框 com_port ADAM-4017+ 的串口
按钮 btn_Open 开启(打开后变成"关闭")
分组框 groupBox1 数据显示
文本框 txt_light、txt_temperature、txt_humidity 光照度、温度、湿度
按钮 btn_get 获取
按钮 btn_save 保存
按钮 btnUpdate 修改
按钮 btnDelete 删除
分组框 groupBox3 历史记录
数据表格 dataGridView1 显示数据库里的记录

注意按钮名字的写法不统一:btn_Open、btn_get、btn_save 带下划线,btnUpdate、btnDelete 不带,照书上的写,自动评分按这些名字找按钮。

实现步骤

  1. 引用 System.Data.SqlClient、System.IO.Ports、DeviceCtrlLibrary、DeviceCtrlLibrary.Model。
  2. 声明全局变量:连接字符串、SqlConnection、SqlCommand、SqlDataAdapter、DataSet、串口是否打开(bool)、ADAM4017ResModel。
  3. Form1_Load:打开数据库连接,把串口号加进 com_port。
  4. btn_Open 的 Click:串口没打开就打开(adam4017Helper.Open)并把按钮改成"关闭",否则关闭并改回"开启"。
  5. btn_get 的 Click:adam4017Helper.SetData() 读出数据,把 lightValue、temperatureValue、humidityValue 填进三个文本框。
  6. 写一个 Databind() 方法:用 select 语句(列名起中文别名:编号、温度、湿度、光照度、时间)查出全部记录,用 SqlDataAdapter 填进 DataSet,绑定到 dataGridView1。
  7. btn_save 的 Click:用 insert 语句把三个值和当前时间存进表,提示"保存成功!",再调用 Databind() 刷新表格。
  8. btnUpdate 的 Click:用 SqlCommandBuilder 生成更新语句,sqldata.Update(...) 把表格里改过的数据写回数据库。
  9. btnDelete 的 Click:按表格当前行第一列的编号,用 delete 语句删掉这一行,再刷新表格。

和书上不一样的地方

连接字符串:平台只看 Initial Catalog=环境数据表,服务器名、用户名和密码照书上写或写成 Data Source=. 都可以。

insert 要写列名:书上写的是 insert into CampusEnvironment values (温度, 湿度, 光照度, 时间),没写列名时值按建表的列顺序(light、humidity、temperature)存进去,温度和光照度就存反了。要写成 insert into CampusEnvironment (temperature, humidity, light, addtime) values (...)。

书上的 True / False 大写、中文引号 ”关闭”、privatevoid 都是印刷错误,照抄会编译不过。

在平台上怎么试

  1. 运行后串口选 COM2(ADAM-4017+),点"开启"。
  2. 在实训台上拖动光照、温度、湿度的滑块,点"获取",三个文本框应显示对应的值。
  3. 点"保存",弹出"保存成功!",表格最后一行是刚存的数据——检查温度、湿度、光照度有没有存进对应的列。
  4. 在表格里改一个温度,点"修改";点中某一行,点"删除"。到数据库页面查询 CampusEnvironment 表,看数据是不是真的变了。