Vision开发日志3
今天实现了Unity接收树莓派的数据。
前两天一直在尝试实现让树莓派接收Unity发送的控制数据,在用上阿里云之后效果还算不错。但是除此之外,Unity端也需要接收树莓派发送过来的数据。因为视频流传输是EGGER Vision最关键的一个环节。
本来今天下午是想尝试直接实现让树莓派摄像头的画面能够通过udp传输到Unity端的,为此也做了不少努力。但是在视频编码这一块始终遇到问题,所以我决定先将视频传输放一边。打算先解决简化的问题,那就是先实现树莓派端到Unity端的基础数据通信。
在前两天Unity到树莓派传输配置udp的基础上,今天的配置显得得心应手了。照着之前树莓派Python端的逻辑,三下五除二就完成了Unity C# 脚本的编写。但是奇怪的是在启动运行后Unity端没有接收到树莓派端发来的数据。
经过一顿排查,顿时茅厕困开。靠,好像我也得在运行着Unity的设备上配置frp客户端,不然Unity无法接收到外部设备发来的数据。这样一来Unity端就无法优雅地在安卓移动设备上部署了,因为必须要通过一些技术手段让安卓设备运行frp客户端才行。虽然在安卓设备上配置frp客户端对我而言并不是什么很困难的事情,网上也有许多现成的解决方案,但是对于Unity端软件的使用用户来说这就有点麻烦啦,想要使用一个软件还得配置杂七杂八的东西,一点也不优雅。况且并不是每个用户都是具备专业知识的。
因此,我开始寻找另外的解决方案,尝试能否直接在Unity内部配置好frp的客户端,让整个配置的过程对用户透明。可惜的是,我并没有找到目前网上的解决方案,而我又受限于水平不足,想不出来咋整。因此我先将移动端开发的计划暂时搁置,决定先在pc端进行开发。
首先我需要在我的电脑上配置frp客户端,这一步和在树莓派上配置客户端是一模一样的,如法炮制即可。在frpc与frps成功建立连接之后,我开始Unity端接收信息的测试。这次Unity端成功接收到了树莓派发送过来的数据。但是还有一个问题,就是每次Unity启动前都要手动配置frp客户端并启动,这真是太麻烦了,对用户来说也不容易。
于是我开始尝试将frpc的配置过程写成Windows批处理文件,每次Unity端运行前先执行frpc配置的批处理文件就行了。由于是第一次写这种东西,中间遇到了不少语法问题,在参照ai提供的方案以及查阅网上的资料后成功完成了bat文件的编写。这样一来每次启动前只需要点击bat执行即可。
不过我还是觉得这样不是很优雅,对用户来说还是有点麻烦了。因此我决定将bat的启动操作放到Unity程序中,这样一来用户只需要点击Unity程序运行,然后系统自动会执行批处理文件进行frp客户端的配置。省去了点击bat文件的步骤,用户在启动时候只需要一次点击即可。
目前来看也算是找到了一种折中的解决办法。