楼主

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
步兵帅帅的麦兜
2021-4-2 19:37:06 只看该作者

马上注册,玩转Robomaster!

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

x
本人写此博客之目的,主要用于启发后人,抛砖引玉。核心代码本人不做深究讨论。(psCSDN和博客园是本人长期更新的地方。在官方论坛写这个,更多的是方便晚辈查找资料。因为之前鄙人在此学习过程中,走了很多弯路,但却未找到较为适合的教程便萌发了写这个东西的想法。
对裁判通信了解的,可直接跳到第七问: 画UI有限制吗?
  1.客户端UI该怎样画?

  答:首先客户端UI本质上是裁判主控与服务器之间数据传输的体现,所以你首先得知道他们之间的通信协议。至少先把两者连接成功,再说画UI的事情。
他们通过电源模块上的串口(裁判主控已与电源管理模块连接)与机器人主控板进行串口通信来实现数据交换。


  2.那该如何通过通信协议画UI呢?
  答:我们首先需要明白它的协议格式:frame_header (5-byte)+ cmd_id (2-byte) +data (n-byte) +frame_tail (2-byte,CRC16,整包校验)
这其中除了数据段本身就有13个字节被分配了,它先声明帧头以及数据长度+包序号+CRC8校验:之后的cmd_id你可以把它当成一个目录索引,这个很重要不论收发数据都不能搞错。(你想啊,你原本想买本《信号与系统》,结果你却跑到人文区不停翻找,你说这能找到吗?)     之后数据段那没的说,最后再来个CRC16校验就可以了。
具体通信格式可参考:官方的 https://bbs.robomaster.com/forum.php?mod=viewthread&tid=5853  。以及最新的裁判系统手册,串口协议。



  3.测UI显示需什么

   答:服务器与裁判主控正常连接,主控只接电源模块串口线即可,其他的图传什么的都不需要。先测试服务器是否受到发送的UI数据,再连接客户端,查看UI图像是否显示。因此,我们先单独把裁判主控与服务器连接好,服务器Server有显示UI数据发送,再去登录客户端。
具体连接方式可参考最新的官方手册。(裁判系统,软硬件最好都是最新版)线路连接,机器人板子串口与电源模块上的左边串口相连接(别接错了)。      裁判主控连接服务器成功,有两个参量:一个是裁判主控上可直接观察连接正常与否,另一个就是服务器Sever上会有显示。(见图片,裁判主控成功连接服务器.jpg)
      服务器正常接收UI数据画面(见.正常接收UI数据.jpg),之后就可以看客户端UI图像是否显示了。(等待客户端图像显示一般不会超过60s,还没显示就点一下隐藏/显示UI)




  4.怎样写UI?

   答:首先确定你要画的图像个数,并且最好把它们都放到同一层,然后算好你所需要发送的数据大小。数据大小:13+n*15字节(n为你的图像个数,最多一次七个图,也就是128字节。
发送方式,我是先封装好之后一次性把它发出去,速度10HZ(仅用于单独测试UI时,速度随意)。
先封装好frame_header这五字节,之后CRC8+交互数据段数据(确定收发机器人,二者需保持一致,画几个图)+图形配置,最后将其封装好存放到发送给串口的数组中,再CRC16。最后全部发送就可以了。



  5.怎样判断客户端U接收到发送的UI?

   答:判断方法,连接好服务器后,客户端连不连都行,盯着服务器Sever是否有这样的反应就行了。(见图片,服务器收到UI.jpg)
   强调一下,不要一来就七图,先画个直线试试水即可。(尽量不要用数字)




   6.可以用自定义UI搞个击杀图像吗?
   答;可以,但是你先明白,图像实际上是一条线一条线发过去的。一次最多七根线,就是128字节,有九层可供你画。你算算,这个动态UI对你系统的延时有多大。有这么多带宽,我还不如用到功率限制,热量限制上面。其实,你画静态的UI的话,慢慢的画9层问题不大。动态一直发,哪受得了啊。



  7.画UI有限制吗?

  答;有自定义图像也不是你想放哪儿就放哪儿的。个人建议,你最好把它放在准心周围。
建议范围,坐标,x(960+-120*2.75),y(540+-280);内圆:半径为100.中心坐标(960,540)。
ps:x轴我只是粗略的量了下。
(见图片,建议范围.jpg)


  8.怎样设计好UI,设计好后如何配置图像?
   答:我就很菜鸡,直接用电脑自带的画图,设置好分频率:1920*1080。之后随便画画,再将其坐标记下。
配置图像参考官方手册,首先定好是直线还是圆还是,弧线。之后再确定坐标发送即可。(见图片,画图设计UI.jpg)
  



程序部分代码,参考:
部分代码1~3,配图参考(直线.jpg)。



4月29日,补充:动态UI,配置以及一些注意问题。(此处以字符为例)
见代码:静态初始化1,2.jpg, 矫正字符.jpg
其中注意分配好字长,以及填充(刷新)的数据,最好能填满数组不然会出乱码。当然你也可以像一样,及时空化数据,以消除数组因数据丢帧或者发送数据位置偏移。
最近也是建了个交流群(吹水,面基);
5月15日,补充:那个最新服务器启动不了的话,用lan口插网线直连路由器,修改器ip地址为192.168.1.2。就可以进去了,不至于直接启动失败自动弹出。
然后,你可以再用wifi连上那个路由器,wifi那个就直接自动获取ip地址。       这样就可以,即当服务器,又当客户端了.


注;此次教程仅交流学习,我这个代码写这个有点菜鸡了,但具体流程是这样,如果看完还是比较迷,可以参考深大19开源步兵,个人很是推荐。
蹲个UI能显示数字的兄弟。(我数字画了,显示不了)
还有一些坑,之后再补充吧。毕竟我现在只有一台电脑,有些操作要两台才行。
转载请注明出处,谢谢。
转CSDN,地址https://blog.csdn.net/Monster578 ... 3001.5343&type=blog



















跳转到指定楼层
推荐

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
正式队员卧龙z
2021-4-2 20:04:52 只看该作者

那又如何,在我眼里,你就是姐姐(手动滑稽,别打我)
回复 支持 1 反对 0

使用道具 举报

推荐

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
步兵帅帅的麦兜
 楼主| 2021-4-2 20:02:26 只看该作者
卧龙z 发表于 2021-4-2 19:54
感谢子淇姐姐的教程,晚辈受益匪浅啊

害,我是带把的。
回复 支持 1 反对 0

使用道具 举报

推荐

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
步兵帅帅的麦兜
 楼主| 2021-4-7 20:20:50 只看该作者
M清秋M 发表于 2021-4-7 00:01
请问一下你们发送数据是怎么发送的吗?用串口发送一个8位一个8位的数据的发送,但是按照官方的来看,有的是 ...

我是将数据放在一个自定义的uint8_t数组里面,之后通过串口发就可以了。
一位一位的发,记得按顺序将数据放到对应数组位号里面。之后它自己会解码,校验的。
沙发

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
步兵帅帅的麦兜
 楼主| 2021-4-2 19:40:14 只看该作者
板凳

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
正式队员卧龙z
2021-4-2 19:54:53 只看该作者
感谢子淇姐姐的教程,晚辈受益匪浅啊
6#

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
正式队员djiuser_mk6DkDi
2021-4-4 23:52:50 只看该作者
问一下
ui在客户端上面的坐标位置是固定的1920*1080大小还是会根据客户端打开时设置的分辨率大小而改变的呢?
7#

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
步兵帅帅的麦兜
 楼主| 2021-4-5 09:48:25 只看该作者
djiuser_mk6DkDi 发表于 2021-4-4 23:52
问一下
ui在客户端上面的坐标位置是固定的1920*1080大小还是会根据客户端打开时设置的分辨率大小而改变的呢 ...

对,是这个意思。
所以要看你具体客户端的设置,max就是1920*1080.
不过一般都是1920*1080.
8#

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
正式队员ChenY
2021-4-6 15:41:31 只看该作者
动态的怎么设计啊
9#

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
顾问5266
2021-4-6 19:56:51 只看该作者
发送之后需要进行解包吗
10#

[嵌入式] 【交流帖】裁判系统-画客户端UI

[复制链接]
正式队员M清秋M
2021-4-7 00:01:03 只看该作者
请问一下你们发送数据是怎么发送的吗?用串口发送一个8位一个8位的数据的发送,但是按照官方的来看,有的是超过8位的,这个你们怎么解决的呢?你们是怎么发送数据的啊,能分享一下吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

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

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