编写一个传感器报警程序,当接收到某个传感器温度连续3次超过40度时,输出报警信息。输入源使用Socket文本流方式,传感器数据包括传感器ID,时间戳和温度值,报警结果保存到本地文件中。
时间: 2023-10-08 09:03:45 浏览: 30
以下是一个简单的传感器报警程序的Python代码实现,使用Socket文本流方式接收传感器数据包并检测温度是否超过40度,如果连续三次超过,则输出报警信息并将结果保存到本地文件中。
```python
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP和端口
server_socket.bind(('localhost', 8000))
# 监听端口
server_socket.listen(1)
# 初始化计数器和报警信息
count = 0
alarm_msg = ""
while True:
# 接收传感器数据包
client_socket, addr = server_socket.accept()
data = client_socket.recv(1024).decode()
# 解析传感器数据包中的信息
sensor_id, timestamp, temperature = data.split(',')
# 检测是否超过40度
if float(temperature) > 40:
count += 1
alarm_msg += f"Sensor {sensor_id} temperature too high at {timestamp}. Current temperature: {temperature}\n"
else:
count = 0
# 判断是否连续三次超过40度
if count == 3:
print("ALARM: Temperature too high!")
print(alarm_msg)
# 将报警信息保存到本地文件
with open("alarm_log.txt", "a") as f:
f.write(alarm_msg)
# 重置计数器和报警信息
count = 0
alarm_msg = ""
# 关闭客户端socket连接
client_socket.close()
# 关闭服务器socket连接
server_socket.close()
```
需要注意的是,该程序只是一个简单的示例,实际应用中还需要考虑一些异常处理、并发等问题。