代码

tag_uart = "test5_uart"id = 1
len = 1024get_gga_time = 2000data_time = ""
data_longitude = ""     -- 经度
data_latitude = ""      -- 纬度
data_GGA = ""
data_GGA_status = ""
GGA_list = {}
GGA_list["time"] = data_time
GGA_list["x"] = data_longitude
GGA_list["y"] = data_latitude
GGA_list["status"]= data_GGA_statusfunction init_uart_air551()log.info(tag_uart,"init_uart_air551")uart.setup(1, 115200)uart_air551_NMEA_set()-- 定时发送数据-- timex = sys.timerLoopStart(uart_air551_send,1000)-- log.info(tag_uart,"time:",timex)sys.wait(1000)-- func1: 接收数据,只要收到就接收-- uart.on(id, "receive",uart_air551_receive)-- func2: 定时接收timex = sys.timerLoopStart(uart_air551_receive,get_gga_time)log.info(tag_uart,"time:",timex)init_air551G_cont()
endfunction uart_air551_send()-- log.info("uart_air551_send")uart.write(id, "test")
end-- 下发命令
function uart_air551_NMEA_set()log.info("uart_air551_NMEA_set")uart.write(id, "$PGKC242,0,0,0,1*2A\r\n")       --只接收GGA数据。注意需要传入回车符
end-- 获取串口数据
function uart_air551_receive()log.info("uart_air551_receive start---------------")local s = ""s = uart.read(id, len)if #s > 0 then -- #s 是取字符串的长度-- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到-- 关于收发hex值,请查阅 https://doc.openluat.com/article/583-- log.info("uart", "receive", id, #s, s)   -- 这句将接收的都打印出来log.info("get air551","uart", "receive", id, #s)-- log.info("uart", "receive", id, #s, s:toHex())enddata_GGA = get_gga(s)log.info("data_GGA",data_GGA)get_gga_longitude_latitude(data_GGA)log.info("uart_air551_receive end---------------")
end--测试数据提取
function test_string_get()string_temp = "xxxxx$GNGGA,000004.811,XXX,N,XXX,E,0,0,,143.01,M,6.99,M,,*6D\r$GNGGA,000003.811,*6A"temp_start = string.find(string_temp,'$GNGGA',1)temp_end = string.find(string_temp,'\r',1)temp_gga = string.sub(string_temp,temp_start,temp_end-1)log.info("temp_x:",temp_start,temp_end,temp_gga)
end-- 提取一组数据
function get_gga(value)temp_start = string.find(value,'GGA',1)-3temp_end = string.find(value,'\r',1)temp_gga = string.sub(value,temp_start,temp_end-1)-- log.info("temp_value:",temp_start,temp_end,temp_gga)return temp_gga
endfunction get_gga_longitude_latitude(value_gga)-- log.info(type(value_gga))if value_gga == "" then     --数据第一次异常return -1end-- 获取GGA数据-- log.info("L2_temp",L2_temp)L2_temp = string.sub(value_gga,8)   -- +8是因为"$gngga"-- 获取时间data_time_h = string.sub(L2_temp,1,2)data_time_m = string.sub(L2_temp,3,4)data_time_s = string.sub(L2_temp,4,5)-- data_time_h = string.t(data_time_h)data_time_h = math.floor(data_time_h +8)-- log.info(type(data_time_h),data_time_h)if data_time_h >= 24 thendata_time_h = data_time_h -24 end-- data_time_h = tostring(data_time_h)if data_time_h <10 thendata_time_h = '0'..data_time_hend-- log.info(type(data_time_h),data_time_h)-- data_time_h = tostring(data_time_h)-- data_time_h = string.(8 + string.toValue(data_time_h))data_time = data_time_h..":"..data_time_m..":"..data_time_s-- 获取纬度L2_temp_x_start = string.find(L2_temp,',',1)+1L2_temp_x_end = string.find(L2_temp,',N',1)-1data_longitude = string.sub(L2_temp,L2_temp_x_start,L2_temp_x_end)-- 获取经度L2_temp_y_start = L2_temp_x_end+4-- +4是因为"time,xxx,N,yyy,E",",N"后面三个才是y开始L2_temp_y_end = string.find(L2_temp,',E',1)-1data_latitude = string.sub(L2_temp,L2_temp_y_start,L2_temp_y_end)-- log.info("L2_temp_gga",data_longitude,data_latitude)-- log.info("temp_value:",temp_start,temp_end,temp_gga)-- 获取定位指示",E,定位指示,"L2_temp_status_start = L2_temp_y_end + 4L2_temp_status_end = L2_temp_status_start data_GGA_status = string.sub(L2_temp,L2_temp_status_start,L2_temp_status_end)-- log.info("data_GGA_status",data_GGA_status)if data_GGA_status == "0" thenlog.info("定位指示为0,未定位")elseif data_GGA_status == "1" thenlog.info("定位指示为1,SPS 模式,定位有效")elseif data_GGA_status == "2" thenlog.info("定位指示为2,差分,SPS 模式,定位有效")endGGA_list["time"] = data_timeGGA_list["x"] = data_longitudeGGA_list["y"] = data_latitudeGGA_list["status"]= data_GGA_status-- 显示当前状态set_air551G_cont()return temp_gga
endfunction init_air551G_cont()air551G_cont = lvgl.cont_create(lvgl.scr_act(), nil)lvgl.obj_set_size(air551G_cont,128,160)lvgl.obj_set_auto_realign(air551G_cont, true) lvgl.obj_align_origo(air551G_cont, nil, lvgl.ALIGN_CENTER, 0, 0)lvgl.cont_set_fit(air551G_cont, lvgl.FIT_NONE)   --此时cont未设置自适应状态,则内容在cont中lvgl.cont_set_layout(air551G_cont, lvgl.LAYOUT_COLUMN_LEFT) --布局靠左--}log.info("scr_load",lvgl.scr_load(air551G_cont))     --显示   容器--创建标签labelGGA_label = lvgl.label_create(air551G_cont, nil)lvgl.label_set_text(GGA_label, "GGA_data")lvgl.obj_set_pos(GGA_label, 2, 5)
endfunction set_air551G_cont()string_GGA = "GGA_data"..'\r'.."time: "..GGA_list["time"]..'\r'.."x: "..GGA_list["x"]..'\r'.."y: "..GGA_list["y"]..'\r'.."status: "..GGA_list["status"]log.info("string_GGA",string_GGA)if string_GGA == "" thenreturn -1endlvgl.label_set_text(GGA_label, string_GGA)end

结果

【Luat-air551G】5 用lvgl显示GGA数据相关推荐

  1. 【Luat-air551G】4 air551G连接esp32获取GGA数据

    1 前言 本文简单介绍下如何从air551G提取经度纬度数据. 2 硬件连接 连接方式如图. 3 获取uart数据 tag_uart = "test5_uart"id = 1 le ...

  2. 使用嵌套的Repeater控件显示分级数据

    作者:wincheer  来自:Asp.Net中文专业网 简介 本文描述如何使用嵌套的Repeater 控件来显示分级数据 .当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGri ...

  3. R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.gtExtras包的gt_hulk_col_numeric函数对单列.多列数据进行着色.使 ...

  4. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字 目录

  5. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字.并为类型数据添加图像符号标签 目 ...

  6. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字、并自定义表格数据显示的主题格式、并自定义数值数据的格式(例如百分比)

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字.并自定义表格数据显示的主题格式.并自定义数值数据的格式(例如百分比) 目录

  7. 模板页显示Excel数据Gridview增删改查

    <%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" Au ...

  8. 不能记账,往来帐页不能显示结转数据

    往来帐页不能显示结转数据 开票正常但负库存不能记帐 XSGYMA00000223,XSGYMA00000224 转移注册IP 商品单位关系与删除缺货登记 本文转自 qvodnet 51CTO博客,原文 ...

  9. 8SimpleAdapter:一行显示的数据有图标

    SimpleAdapter:一行显示的数据有图标,文本等信息. SimpleAdapter(Context context, List<? extends Map<String, ?> ...

最新文章

  1. Java过滤器与SpringMVC拦截器之间的关系与区别
  2. 凯撒密码C语言去掉空格字符,凯撒密码的问题C语言
  3. 【错误记录】OD 调试器附加进程时找不到进程 ( CE 工具可以附加进程 )
  4. 使用Python管理Azure(1):基础配置
  5. Fabric权限管理和策略
  6. c语言汉字属于什么类型_你知道你的身体属于什么类型么?
  7. linux 查看各目录(文件夹)下文件大小
  8. 全自动安装MySQL_自动部署安装mysql-5.6.22
  9. Matlab之数据处理
  10. EntityFramework 6.x多个上下文迁移实现分布式事务
  11. 在vmware server中部署linux redhat 5.4 ORACLE RAC11g +ASM
  12. matlab cos sinx,matlab求y=sinxcos(2x)及其包络线急!!!
  13. Python爬虫进阶七之设置ADSL拨号服务器代理
  14. PNP三极管限流电路分析
  15. PHPwind9.01傻瓜图解安装教程
  16. 捉奸游戏之后,中年危机游戏也来了。。
  17. 吃货联盟订餐系统项目实践
  18. Hudi Clean 清理文件实现分析
  19. Spring Cloud-Alibaba
  20. 机器学习——朴素贝叶斯分类

热门文章

  1. Ubuntu20.04重装系统+常用软件安装
  2. 用List和Map排序输出
  3. 应用在电气绝缘领域的光电耦合器件
  4. python画美国国旗,小白画法
  5. 排序算法(6)堆排序
  6. 三相异步电动机——双向运行控制回路
  7. 软件设计七大原则和设计模式
  8. 牛津大学科普 | 几分钟带你了解:什么是机器学习
  9. Talk预告 | 牛津大学胡庆拥:大场景三维点云语义理解Ⅱ
  10. 逼真的霓虹灯效果矢量笔刷集 Neon – Realistic Brush Set