楼主

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
自定义UI

声明:写这个blog的目的只是为了总结我弄自定义UI的过程
首先,我们需要根据裁判系统协议文档,发送的帧头需要经过CRC8校验,帧尾填整包的CRC16校验。
需要注意的是 客户端绘图功能是很容易丢包的,所以我们添加图形的频率不宜过高

通信最重要的就是协议,所以,我们就需要清楚明白它的协议格式是什么样的:
对应通信协议格式 frame_header(5-byte)+cmd_id(2-byte)+data(n-byte)+frame_tail(2-byte,CRC16,整包校验)
frame_header帧头中的SOF是固定为0xA5的,datalength在后面的计算中需要认真去核对,因为一但算错了,整个协议就会发不出去的。(我也曾经因为这个问题找了很久的BUG)

然后就是cmd_id命令码了,机器人信息交互固定都是0x0301,按着官方给的协议写就行了,
然后关于data这一数据段:我们需要知道它的数据段的段头结构:内容ID,发送者ID,以及接收者ID(总不能发到别人到对面去吧)
设计UI的时候我们需要操作的就是下图数据段中的那部分。假设你要画一个图,我们需要怎么做?


下面框中的部分就是我们要操作的内容
关于图形配置官方已经给得很清楚了,按照官方协议上给的操作就行了。如图:


这一段代码是下面示例图中的字符:Shoot_LV:的示例
我们弄完图形配置之后还需要做的就是打包发送,我是用一个数组将我配置好的信息存起来,然后通过串口发送给电源管理然后再转发给我的客户端。
注意帧尾要填整包CRC16的校验


对于在服务器中没有看见上传数据的字样:像红色3号步兵传给客户端43之类的,那么就得好好检查一下自己的协议了,一般来说,协议没问题的话,在服务器上也会有显示。
对于在服务器看见了上传字样,但是客户端没有显示的话,首先需要看看是不是自己发送的数据是否在不能覆盖的区域,第一次实验的话可以整个start_x=600,start_y=600,然后end的话就给100-200试试(反正也只是试试自己画图的可行性,不需要对位这么仔细) 。


然后测试UI代码的时候需要做的事:
首先要把主控跟电源管理连起来,确保裁判系统能正常运行,然后串口线接学生端User,其他的东西完全不需要,也不会有影响,图传跟自定义UI是没有必然联系的!!然后将代码烧进板子就行了,测试的时候建议不要触发发送,最好就是一直发,将发送函数放在任务或者定时器都行,然后在服务器上去看发送情况,等服务器能看到上传信息了再打开客户端也不迟。


车跟服务器记得要先连上,服务器会有什么什么请求登录,然后什么什么登陆成功的字样的,完成好这步之后再进行操作。
————————————————
版权声明:本文为CSDN博主「Autism_Huang」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dbqwcl/article/details/115518917



跳转到指定楼层
沙发

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-9 14:47:07 显示全部楼层
江安吴彦祖 发表于 2021-4-8 19:42
请问是可以显示整型数和浮点数是吗?我们这边显示不了诶

我也弄不了  不过我用的是字符代替整数型
板凳

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-9 14:53:39 显示全部楼层
吃橘子吗 发表于 2021-4-8 19:00
请问整数型和浮点型画出来了嘛?我们这边好像不太行

我用的是字符代替整型
地板

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-9 16:53:33 显示全部楼层
最新上传的那幅图 即便是用字符型也跟整型或者浮点型没差
5#

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-10 21:15:45 显示全部楼层
卧龙z 发表于 2021-4-10 11:59
大佬,我比较感兴趣你的字符是怎么搞得,我现在不会画字符,还有多个图形怎么配置,我现在就会画一个图{:3_ ...

多个图形的话就整一个结构体数组就好了  帧头datalength的长度一定要算对 不然是发不出去的
然后字符 要看你的内容ID有没有写对  然后其实就跟你上传一个图形一样的处理
6#

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-10 22:36:35 显示全部楼层
卧龙z 发表于 2021-4-10 21:28
帧头的datalength的长度是自动算的,内容ID也是对的,但就是发不出去

帧头的长度是数据段头加上数据段的长度噢?
7#

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-15 16:32:04 显示全部楼层
2020-WJ 发表于 2021-4-11 16:28
请教一下,客户端UI,我不进行服务器的连接可以显示出来不

不可以的  传的数据一定要经过服务器
8#

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-4-15 16:33:45 显示全部楼层
bbq 发表于 2021-4-11 22:07
请问绘制字符,配置完字符后最后面那个字符该怎么写呢?

将需要显示的字符拷贝到数据段中
9#

[嵌入式] 【分享帖】自定义UI界面

[复制链接]
顾问Autism__
 楼主| 2021-5-22 12:14:00 显示全部楼层
青灯不归客 发表于 2021-5-22 00:32
大哥请问怎么发送整型或者浮点型数据啊  或者如何将整型和浮点型数据转换成字符型发送啊 ...

C语言转化.. sprintf
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

快速回复 返回顶部 返回列表