项目背景:
购买了一个雷达,检测室内人员,需要将雷达数据上传至云服务器保存、展示和分析。
由于雷达是购买的,只留下了usb口通讯,因此只能接在电脑上
设计方案:
使用python,接收来自串口的消息,并将雷达数据上传到云服务器,
主要使用到了pyserial和paho-mqtt这两个py的第三方库。
代码:
import serial
from time import sleep
import json
import sys
import os
import paho.mqtt.client as mqtt
import time
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")
TASK_TOPIC = 'test' # 客户端发布消息主题
client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
client = mqtt.Client(client_id, transport='tcp')
client.connect("xxx.xxx.xxx.xxx", 1883, 60) # 第一个参数填入mqtt服务器ip,mqtt端口默认为1883,通信端口期keepalive默认60
client.loop_start()
if __name__ == '__main__':
#需要修改此处的串口和波特率
serial = serial.Serial('COM9', 115200)
if serial.isOpen() :
print("open success")
else :
print("open failed")
while True:
#根据实际接收长度修改参数
data =serial.read(5)
if data != '' :
time_now = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time()))
#上传的数据包括串口接收数据和接收时间
payload = {"msg": "%s" % data, "data": "%s" % time_now}
client.publish(TASK_TOPIC, json.dumps(payload, ensure_ascii=False))
print("Successful send message!")
print("receive : ",data)
print(type(data))