2023.1.3 作业

STM32模拟IIC通信读取Si7006温湿度传感器数据
该代码实现了使用STM32微控制器通过模拟IIC协议与Si7006温湿度传感器进行通信,包括IIC总线的初始化、开始和停止信号的模拟,以及数据的读写操作。Si7006_init()函数用于初始化传感器,si7006_read_temp()和si7006_read_hum()函数分别用于读取温度和湿度数据。
  1. 通过模拟IIC时序,实现si7006芯片采集的温湿度读取。

iic.h

iic.c

si7006.h

si7006.c

main.c

实验现象:

普通文本型问题,无需结构化输出。 你提到的“第六题”在当前对话中没有明确上下文,可能是某个作业或实验中的题目。结合你使用的 **IntelliJ IDEA 2023.3.4** 和之前一直在开发 Flink 流处理程序的背景,我推测你可能是在完成一个 **Flink 实时统计订单任务** 的系列题目,而“第六题”可能是其中要求实现某个具体功能的一题。 --- ### 🔍 基于常见教学场景的合理推断(依你看第六题怎么做) 假设你的“第六题”是类似: > **将每10秒统计的用户订单数结果写入 MySQL 数据库,并确保使用事件时间与水印机制。** 那么你应该做以下几步: --- ### ✅ 第六题推荐做法(Flink 写入 MySQL) #### 1. 添加 Maven 依赖(`pom.xml` 中加入) ```xml <!-- Flink JDBC Connector --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-jdbc_2.12</artifactId> <version>1.17.0</version> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</mysql-driver> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> ``` > ⚠️ 注意:版本要和你的 Flink 版本匹配(如你是 Flink 1.17,使用对应 connector) --- #### 2. 在代码中添加 JdbcSink 修改你原有的 `.print()` 为写入 MySQL: ```scala import org.apache.flink.connector.jdbc.JdbcSink import org.apache.flink.connector.jdbc.JdbcConnectionOptions // ... 其他代码不变 ... // 替换 .print() 为 addSink(JdbcSink) .addSink(JdbcSink.sink( "INSERT INTO user_order_count (user_id, order_count, window_start, window_end) VALUES (?, ?, ?, ?)", (element: UserOrderCount, statement: PreparedStatement) => { statement.setInt(1, element.userId) statement.setInt(2, element.orderCount) statement.setLong(3, element.windowStart) statement.setLong(4, element.windowEnd) }, new JdbcConnectionOptions.JdbcConnectionOptionsBuilder() .withUrl("jdbc:mysql://192.168.72.141:3306/demo?useSSL=false&serverTimezone=UTC") .withUsername("root") .withPassword("12345678") .withDriverName("com.mysql.cj.jdbc.Driver") .build )) ``` --- #### 3. 确保虚拟机 MySQL 已建表 登录虚拟机执行: ```sql CREATE DATABASE IF NOT EXISTS demo; USE demo; CREATE TABLE user_order_count ( user_id INT, order_count INT, window_start BIGINT, window_end BIGINT ); ``` --- #### 4. 在 IntelliJ IDEA 中运行 - 使用 `main` 方法直接运行。 - 确保网络通畅(主机能访问虚拟机 `192.168.72.141:3306`)。 - 检查防火墙、MySQL 远程权限是否开启。 --- ### 💡 常见问题排查(IDEA 2023.3.4) | 问题 | 解决方案 | |------|----------| | 报错 `ClassNotFoundException: com.mysql.cj.jdbc.Driver` | 确保 `mysql-connector-java` 在 `pom.xml` 中并已编译进项目 | | 连接超时 | 检查虚拟机 IP、MySQL 是否允许远程连接、端口 3306 是否开放 | | 任务提交但无数据写入 | 查看控制台日志,确认窗口是否触发(事件时间推进是否正常) | --- ### 📌 总结:依你看第六题怎么做? 如果你的第六题是“**将统计结果存入数据库**”,那么: ✅ 步骤总结: 1. 加依赖(JDBC + MySQL) 2. 改 Sink:`.addSink(JdbcSink...)` 3. 虚拟机建表 4. 配置网络与权限 5. IDEA 中运行主类 📌 提示:可以在 `.print()` 后再加 `.addSink(...)`,同时看到控制台输出和数据库写入,便于调试。 --- 如果你指的是其他“第六题”,请提供完整题目内容,我会为你精准解答!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值