serial front_door signment and gps signment
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信号。
serial front_door signment and gps signment的更多相关文章
- 玩转ArduinoJson库 V5版本
1.前言 一直以来,博主的事例代码中都一直使用到JSON数据格式.而很多初学者一直对JSON格式有很大疑惑,所以博主特意分出一篇博文来重点讲解Arduino平台下的JSON库--Arduino ...
- Qt - 读取GPS数据
1.GPS型号为ublox(EVK-M8L),配有USB接口,Qt版本5.7 2.实现步骤: (1)实现串口通信 采用Qt5.7 内置的串口操作类QSerialPort和QSerialPortInfo ...
- Serial Communication Protocol Design Hints And Reference
前面转载的几篇文章详细介绍了UART.RS-232和RS-485的相关内容,可以知道,串口通信的双方在硬件层面需要约定如波特率.数据位.校验位和停止位等属性,才可以正常收发数据.实际项目中使用串口通信 ...
- UART to Serial Terminal(转载)
前一篇<UART Explained>介绍了UART的基本信息,重点分析了UART的信号.本文摘录的文章则重点介绍了波特率(Baud Rate)相关的内容,波特率越高,传输速度越快,但实际 ...
- 树莓派连接GPS模块
一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的G ...
- 物流追踪 - -GPS和GPRS应用
源码1: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<termios.h ...
- Win CE 6.0 获取手持机GPS定位2----示例代码 (C#)
一.须知 1.手持机(PDA)必须有GPS模块,才能通过代码使用串口通信获取GPS相关信息 2.要清楚自己手持机(PDA)固定的GPS通信串口号,如我们公司的手持机获取GPS信息的串口为COM4 3. ...
- LCD显示GPS时钟[嵌入式系统]
夏任务102:做一个GPS钟 实验要求 用RPi的串口连接一个GPS模块,从GPS得到实时时间,在7段数码管或LCD上显示 实验工具: Raspberry Pi Model B主机, 8G c10 S ...
- 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~
在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~ 不需要额外购买GPS设备. 将手机GPS数据通过蓝牙传输给计算机使用,当然通过类似方 ...
随机推荐
- Mysql模糊查询Like传递参数的语句
set @keyWord='我的': select * from tblcontent where content like CONCAT('%',@keyWord,'%')
- 为什么入门首选C语言
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在 ...
- django 2.1 配sql server 2008R2
请教了不少高手和度娘终于把这个事搞定了(基本上断断续续查试了2周时间),,,,,,,, 环境: 1-Microsoft Windows 2-Microsoft SQL SERVER2008 ...
- [openjudge-动态规划]鸣人的影分身
题目描述 描述 在火影忍者的世界里,令敌人捉摸不透是非常关键的.我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好的例子. 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制 ...
- SpringMvc HandlerMappings 何时初始化?
SpringMvc 的转发控制器 DispatcherServlet 执行 initStrategies(),在什么时候初始化 HandlerMappings ? 在容器 AbstractApplic ...
- flask 定义数据库关系(多对多)
多对多 我们使用学生和老师来演示多对多关系:每个学生有多个老师,每个老师有多个学生.多对多关系示意图如下: 在实例程序中,Student类表示学生,Teacher类表示老师.在这两个模型之间建立多对多 ...
- swapper_pg_dir主内核页表、init和kthreadd、do_fork时新建子进程页表、vmalloc与kmalloc
都是以前看到一个点扯出的很多东西,当时做的总结,有问题欢迎讨论,现在来源难寻,侵删! 1.Init_task.idle.init和kthreadd的区别和联系 idle进程其pid=0,其前身是系统创 ...
- jmeter如何玩?
ApacheJMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.J ...
- 颜色扩展类--ColorExtensions
/// <summary> /// 颜色扩展类 /// </summary> public static class ColorExtensions { /// <sum ...
- 20190409Liunx中计划任务及压缩归档week2_day1
计划任务介绍 我们可以通过一些设置.来让电脑定时提醒我们该做什么事了.或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务.而遇到一些需要执行的事情或任务.我们也可以通过命令来告 ...