移远EC600U-CN开发板 11.22

主界面功能按键:

1.打开端口按钮:

uart1 = UART(UART.UART2,9600, 8, parity, 1, 0)  #构造串口对象
def OpenEvent(evt):global uart1openBtn =  evt.get_code()if openBtn == lv.EVENT.CLICKED:if labelOpenBtn.get_text() == "打开端口":uart1 = UART(UART.UART2,int(baudRate.get_text()), int(dataBits.get_text()), parity, int(stopBits.get_text()), 0)   labelOpenBtn.set_text("关闭端口") else:uart1.close()labelOpenBtn.set_text("打开端口") openBtn = lv.btn(mainInterface) 
openBtn.align(lv.ALIGN.TOP_RIGHT,-20,30)
labelOpenBtn = lv.label(openBtn)
labelOpenBtn.set_text('打开端口')openBtn.add_event_cb(OpenEvent,lv.EVENT.ALL,None)

2.历史记录按钮

def event_handler2(evt):code = evt.get_code()if code == lv.EVENT.VALUE_CHANGED:source = evt.get_current_target()date = lv.calendar_date_t()if source.get_pressed_date(date) == lv.RES.OK:        calendar.set_today_date(date.year, date.month, date.day)chart = lv.chart(historyInterface)chart.set_size(200, 150)chart.align(lv.ALIGN.RIGHT_MID,0,0)chart.set_type(lv.chart.TYPE.LINE)   # Show lines and points too# Add two data seriesser1 = chart.add_series(lv.palette_main(lv.PALETTE.RED), lv.chart.AXIS.PRIMARY_Y)ser2 = chart.add_series(lv.palette_main(lv.PALETTE.GREEN), lv.chart.AXIS.SECONDARY_Y)print(ser2)# Set next points on ser1chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,10)chart.set_next_value(ser1,30)chart.set_next_value(ser1,70)chart.set_next_value(ser1,90)# Directly set points on 'ser2'ser2.y_points = [90, 70, 65, 65, 65, 65, 65, 65, 65, 65]chart.refresh()      #  Required after direct setdef historyEvent(evt):code =  evt.get_code()if code  == lv.EVENT.CLICKED:lv.scr_load(historyInterface)historyBtn = lv.btn(mainInterface)      #历史记录按钮
historyBtn.align(lv.ALIGN.BOTTOM_LEFT,20,-40)
labelHistoryBtn = lv.label(historyBtn)
labelHistoryBtn.set_text('历史记录')
historyBtn.add_event_cb(historyEvent, lv.EVENT.ALL, None)

3.获取数据按钮 

def getData(evt):global uart1getDataBtn =  evt.get_code()           if getDataBtn == lv.EVENT.CLICKED:uart1.write("\x03\x03\x00\x40\x00\x04""44\x3F")time.sleep(1)arr = uart1.read(13)for i in arr:print(((hex(int(i))).upper()[2:]),end=' ')zhuodu = int(str((hex(int(arr[3]))).upper()[2:])+str((hex(int(arr[4]))).upper()[2:])+str((hex(int(arr[5]))).upper()[2:])+str((hex(int(arr[6]))).upper()[2:]),16)zengyi = int(str((hex(int(arr[7]))).upper()[2:])+str((hex(int(arr[8]))).upper()[2:])+str((hex(int(arr[9]))).upper()[2:])+str((hex(int(arr[10]))).upper()[2:]),16)print(zhuodu)label.set_text(str(zhuodu/1000))averageTurbidityValue.set_value(int(zhuodu/10))print(zengyi)label3.set_text(str(zengyi))averageGainValue.set_value(int(zengyi/1000))time.sleep(1)averageTurbidityValue = lv.arc(mainInterface)     #平均浊度值弧
averageTurbidityValue.set_end_angle(200)
averageTurbidityValue.set_size(150,150)
averageTurbidityValue.align(lv.ALIGN.CENTER,-120,0)
averageTurbidityValue.add_event_cb(event_cb, lv.EVENT.VALUE_CHANGED, None)
averageTurbidityValue.set_range(0,3000)
label = lv.label(averageTurbidityValue)label2 = lv.label(mainInterface)
label2.align(lv.ALIGN.CENTER,-120,0)
label2.set_text("平均浊度值")averageGainValue = lv.arc(mainInterface)        #平均增益值弧
averageGainValue.set_size(150,150)
averageGainValue.align(lv.ALIGN.CENTER,120,0)
averageGainValue.add_event_cb(event_cb1, lv.EVENT.VALUE_CHANGED, None)
averageGainValue.set_range(0,200000)
label3 = lv.label(averageGainValue)getDataBtn = lv.btn(mainInterface)  #获取数据按钮
getDataBtn.align(lv.ALIGN.BOTTOM_MID,0,-40)
getDataBtnLabel = lv.label(getDataBtn)
getDataBtnLabel.set_text('获取数据')
getDataBtn.add_event_cb(getData,lv.EVENT.ALL, None)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七牛云产品使用介绍之CDN篇

上一篇介绍了七牛云的Kodo对象存储,并用Java SDK实现将本地文件上传到bucekt,接下来是对CDN产品的介绍 CDN(内容分发网络):通过多级缓存实现对Kodo中的资源或者自己网站的资源的加速访问,让你的系统更快更强…

深入了解Linux中的scp命令及高级用法

Linux操作系统中,scp(Secure Copy Protocol)命令是一个用于在本地系统和远程系统之间安全复制文件的强大工具。通过基于SSH的加密通信,scp提供了安全的文件传输方式。在本文中,我们将深入介绍scp命令的基本语法以及一些…

进度条、git常见指令以及gdb的常用指令

进度条 进度条是笔者所接触的第一个更加贴近于系统的小玩意,主要是要理解回车、换行、换行回车和缓冲区的概念。 回车是回到当前行的第一个光标位置,换行是换到下一行但是光标还在原来的位置,换行回车就是键盘上面的回车键是回到下一行的第…

WebAssembly照亮了 Web端软件的未来

WebAssembly的发展历程相对较短,但影响深远。WebAssembly 于 2015 年首次发布,先驱技术是来自Mozilla的asm.js和Google Native Client,最初的实现是基于asm.js的功能集。自2017年3月由WebAssembly创造的MVP的预览版发布以来,WebAs…

AMEYA360:村田首款1608M尺寸/100V静电容量1µF的MLCC实现商品化

株式会社村田制作所成功开发了用于基站、服务器和数据中心48V线路的多层陶瓷电容器“GRM188D72A105KE01”并已量产。该产品在1608M(1.60.8mm)尺寸、100V的额定电压下可实现1μF的超大静电容量(村田调查数据,截至2023年11月20日)。目前可向村田申请免费样品。 随着5G…

【Java】 Shell 重启 SpringBoot 项目脚本(含服务守护)

简介 本文介绍了如何使用 Bash 脚本来管理和守护运行服务。将展示一个示例脚本,该脚本可以停止、启动和守护运行一个服务,并提供了相应的解释和用法说明。 引 在实际的软件开发和部署过程中,经常需要使用脚本来管理和控制服务的运行。这些…

NOIP2015提高组第二轮T1:能量项链

题目链接 [NOIP2006 提高组] 能量项链 题目描述 在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有 N N N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子&#xff0…

网络和Linux网络_4(应用层)序列化和反序列化(网络计算器)

目录 1. 重新理解协议 2. 网络版本计算器 2.1 前期封装 Log.hpp sock.hpp TcpServer.hpp 第一次测试(链接) 2.2 计算器实现 第二次测试(序列化和反序列化) 第三次测试(客户端字节流) CalServer.cc CalClient.cc 3. 守护进程 3.1 守护进程和前后台进程 3.1 变成…

数组扩展方法(一)

Array.prototype.forEach MDN解释forEach()方法是对数组的每个元素执行一个给定的函数,换句话来说就是在调用forEach()方法的时候,需要传入一个回调函数callback,循环每个数组内部元素时都会执行一次传入的回调函数callback forEach()方法的…

有哪些免费好用的API接口,一文告诉你

实名认证(身份证二要素):核验身份证二要素(姓名和身份证号码)信息是否一致。 实人认证(人像三要素):输入姓名、身份证号码和一张人脸照片,与公安库身份证头像进行权威比…

AUTOSAR实战篇:基于ETAS工具链的信息安全协议栈集成指南

AUTOSAR实战: 基于ETAS工具链的信息安全协议栈集成指南 前言 小T出品,必是精品! 手把手带你集成信息安全协议栈,你值得拥有! 正文 随着汽车信息安全的不断发展与完善,其在汽车电子领域如智能驾驶(ADAS),智能座舱等方向上不断被重视起来,越来越多的Tier1,主机厂都在全面…

开发一款抖音小游戏大致的研发成本是多少

抖音小游戏开发成本的影响因素较多,包括开发团队规模、技术选型、功能复杂度、测试成本、运营成本等等。因此,具体的成本需要根据你的项目需求和规模来确定。一般来说,小游戏开发成本大致可以分为人力成本和设备成本两部分。 人力成本主要取…

LeetCode算法心得——爬楼梯(记忆化搜索+dp)

大家好,我是晴天学长,第二个记忆化搜索练习,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1)爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或…

Redis主从复制,哨兵和Cluster集群

主从复制: 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份(和同步),以及对于读操作的负载均衡和简单的故障恢复。 缺陷:故障恢复无法自动化…

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时,标记为Readonly时,如果再次设置值,会提示报错,无法分配到只读字段 public class A {pri…

Vue中Vue router和axios的封装使用。

模拟场景: 当用户登录后,后台会返回一个token给前端,前端下次进入首页后,会先判断token是否过期,如果过期自动进入登录页面。配置路由: 1.安装 npm install vue-router42.安装后在src目录下创建router文…

基于Springboot的美容院管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的美容院管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&a…

qt treeview 删除节点

Qt 中,要删除 QTreeView 中的节点,可以通过操作其模型(QAbstractItemModel)来实现。以下是一个简单的示例,展示如何从 QTreeView 中删除节点。 假设你有一个 QTreeView,它使用了 QStandardItemModel 作为模…

Redis(事务和持久化)(很重要!)

事务的定义: Redis中的事务是指一组命令的集合,这些命令可以在一个原子操作中执行。在Redis中,可以使用MULTI命令开始一个事务,然后使用EXEC命令来执行事务中的所有命令,或者使用DISCARD命令来取消事务。事务可以确保…

爬取春秋航空航班信息

一、使用fiddler爬取小程序春秋航空航班信息 使用Fiddler爬取春秋航空微信小程序(手机上由于网络问题,无法进入,使用电脑版) 搜索航班信息 搜索记录 使用Fiddler查找url(没有得到有效url) 继续查找,发现航班信息列…