【交流帖】裁判系统-画客户端UI
本人写此博客之目的,主要用于启发后人,抛砖引玉。核心代码本人不做深究讨论。(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/article/4157 。以及最新的裁判系统手册,串口协议。



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




















裁判主控成功连接服务器.png


服务器收到UI.jpg


初始化配置_2.png


建议范围.png


画图板设计UI.png


矫正字符.png


部分代码1.png


UI讨论群.jpg


部分代码2.png


部分代码3.png


配图参考(直线).png


初始化配置1.png

请问这篇文章对你有用吗?
【交流帖】裁判系统-画客户端UI
所有评论
暂无更多
暂无更多
关于作者
帅帅的麦兜
帅帅的麦兜
0 关注Ta
0 文章
0 经验值
0 获赞