• python读取串口数据并存入数据库


    之前做了一个物联网小项目,需要打通单片机与服务器。单片机的数据要传输到云服务器上。我的打算是单片机串口传输到本地计算机,本地计算机再传输到云mysql服务器。可以做这个事情的有很多语言,因为之前刚好学了python,所以我选择用python读取单片机传到本地计算机的串口数据,并将串口数据过滤后格式化存储到云端的mysql数据库上。以下是代码部分。

     1 #create by Feng
     2 # coding=UTF-8
     3 import serial
     4 import pymysql
     5 import datetime
     6 
     7 def clean_spaces(s):    #过滤掉换行符和空格
     8     s = s.replace('
    ', '')
     9     s = s.replace('	', '')
    10     s = s.replace('f', '')
    11     s = s.replace('
    ', '')
    12     return s
    13 
    14 def transp_bytes(b):
    15     barr = bytearray(b)
    16     str = barr.decode()
    17     return str
    18 
    19 def mySplit(s, ds):
    20     res = [s]
    21     # 循环所有的分割符
    22     for d in ds:
    23         t = []
    24         # 一定要list 一下才能正确使用
    25         res2 = list(map(lambda x: t.extend(x.split(d)), res))
    26         # print(res2)
    27         res = t
    28     # 过滤掉空字串
    29     return [x for x in res if x]     #返回一个list
    30 #用法:r = mySplit(s1, 'C%L')
    31 #   print('r', r)    
    32     
    33 db = pymysql.connect('数据库ip',user = "数据库用户名",passwd = "数据库密码",db = "数据库名") # 打开数据库连接
    34 cursor = db.cursor()    #获取数据库游标
    35 serial = serial.Serial('COM3', 19200)   #设置串口和波特率
    36 print(serial)
    37 if serial.isOpen():  #开启串口
    38     print("open success")
    39 else:
    40     print("open failed")
    41 
    42 try:
    43     temp = '1'
    44     humi = '23'
    45     light = '0'
    46     date="1111"
    47     n = 0
    48     #sql = "insert into serial(temp,humi,light) values ('"+temp+"','"+humi+"','"+light+"')"
    49     while True:
    50         count = serial.inWaiting()
    51         if count > 0:
    52             data = serial.read(count)   #接收串口
    53             #a = data
    54             data = clean_spaces(transp_bytes(data))    #过滤换行、回车
    55             li = []
    56             li = mySplit(data,'C%L')                 #字符分割
    57             time = datetime.datetime.now().strftime('%Y%m%d%H%M%S')   #获取时间
    58             try:   #异常处理
    59                 sql= "insert into serial(temp,humi,light,time) values ('"+li[0]+"','"+li[1]+"','"+li[2]+"','"+time+"')"
    60                 #print("indexError,but do worry!")    
    61                 cursor.execute(sql)
    62                 cursor.connection.commit()  #提交
    63                 print("three data was gain")  #数据上传成功
    64             except IndexError:
    65                 print("indexError,but do worry")        
    66 except KeyboardInterrupt:
    67     if serial != None:
    68         serial.close()
  • 相关阅读:
    eclipse如何正确部署tomcat7
    调用awk的三种方式
    jupyter的简单操作
    编程语言简介
    2019.9.6作业
    计算机的基本组成
    9.2作业
    CPP 栈 示例
    关于使用栈将一般运算式翻译为后缀表达式并实现三级运算的方法及实例(cpp版)
    深度遍历破解数独游戏
  • 原文地址:https://www.cnblogs.com/BreezeFeng/p/13957672.html
Copyright © 2020-2023  润新知