博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
serial front_door signment and gps signment
阅读量:4502 次
发布时间:2019-06-08

本文共 2200 字,大约阅读时间需要 7 分钟。

import socket

import serial
import os
import sys
import struct
#serial
ser_intf = serial.Serial(port='/dev/ttyS0',baudrate=19200,bytesize=8,timeout=1)
#read data from power board serial port
def serialRead(serial_handle):
    serial_handle.flushInput()
    cnt =0
    while 1:
         din = serial_handle.read(30)
       
         cnt +=1
         #loop execution 8 times
         if len(din) ==0 and cnt < 8:
             continue
         if len(din) ==30 and din[0] ==53 and din[1] ==53 and din[26] ==70 and din[27] ==69 and din[28]==70 and din[29]==70:
             print(din)
             return din.decode('utf-8')
         elif cnt ==8 :
             print("Can not receive data from power board")
             return ""
         serial_handle.flushInput()
def convertGPS(gps):
        gps_la = gps[0:8]
        gps_lo = gps[8:16]
      
        list_la = []
        list_lo = []
        for i in range(4):
                list_la.append(int(gps_la[6-i*2:8-i*2],16))
        la = str(struct.unpack('<f', struct.pack('4B', *list_la))[0]).zfill(20)
        for i in range(4):
                list_lo.append(int(gps_lo[6-i*2:8-i*2],16))
        lo = str(struct.unpack('<f', struct.pack('4B', *list_lo))[0]).zfill(20)
       
        return la,lo
def convertGPSOrientation(gps):
        gps_n=''
        gps_e=''
        
        #NORTH,SOUTH,EAST,WEST,
        if gps[0:2]=='4E' and gps[2:4]=='45':
            
             gps_n ='N'
             gps_e ='E'
        if gps[0:2]=='53' and gps[2:4]=='45':
             gps_n ='S'
             gps_e ='E'
        if gps[0:2]=='4E' and gps[2:4]=='57':
             gps_n ='N'
             gps_e ='W'
        if gps[0:2]=='53' and gps[2:4]=='57':
             gps_n ='S'
             gps_e ='W'
        return  gps_n,gps_e
def gateIsOpened(gate_sign):
   
    if gate_sign=='0':
        flag=[0,0]
        print("front gate closed,back gate closed")
        return flag
    if gate_sign=='1':
        flag=[1,0]
        print("front gate opened,back gate closed")
        return flag
    if gate_sign=='2':
        flag=[0,1]
        print("front gate closed,back gate opened")
        return flag
    if gate_sign=='3':
        flag=[1,1]
        print("front gate opened,back gate opened")
        return flag
PB_data = serialRead(ser_intf)
print('---------------------pb_data-----------------------------------')
la,lo =convertGPS(PB_data[4:20])
print('-----------------gps--------------------------------')
print('la',la)
print('lo',lo)
gps_n,gps_e=convertGPSOrientation(PB_data[20:24])
print(gps_e)
print(gps_n)
flag=gateIsOpened(PB_data[3])
print('flag',flag)
根据串口协议,转换ASCII成utf-8格式。数值转换成十进制,比如5 十进制是53,从串口接收到的数值是53。门的信号为00是都关,01是前门开,以此类推,
gps是怎样解析的,从2到9个字节是gps信号。

 

转载于:https://www.cnblogs.com/gloria11/p/9845546.html

你可能感兴趣的文章
XCode: duplicate symbol 解决方案
查看>>
iOS状态栏设置详解!
查看>>
编程习惯1
查看>>
【读书笔记】iOS-给模拟器相册增加图片
查看>>
ActionMapping、ActionForward笔记
查看>>
Linux:xargs命令详解
查看>>
明天你好
查看>>
float浮点数的四舍五入
查看>>
QQ消息记录、接收文件、图片、拍照照片等保存位置
查看>>
IOC与AOP介绍
查看>>
关于求最大公约数
查看>>
Git常用命令学习总结
查看>>
【转载】C#通过Rows.Count属性获取总行数
查看>>
【转载】通过百度站长平台查看网站搜索流量及关键字
查看>>
【转载】Visual Studio2017如何打包发布Winform窗体程序
查看>>
【转载】通过搜狗站长平台手动向搜狗搜索提交死链
查看>>
【转载】通过搜狗站长平台手动向搜狗搜索提交文章加快收录
查看>>
【转载】通过百度站长平台提交网站死链
查看>>
【转载】通过搜狗站长平台提交网站域名变更后的文章地址
查看>>
【转载】Visual Studio2017中如何设置解决方案中的某个项目为启动项目
查看>>