前言

这段实习在一个小公司,实习期间用到的技术栈比较杂。

前端开发

刚入职时领导了解我做过Web开发,因为负责Web开发的员工已经离职几个月了,公司的官网一直没人维护,我的第一个任务就是修改公司的官网。更新产品信息、调整样式。这个Web只是作为展示没有后端,用到技术其实有HTML、CSS、JS、JQuery。改完后使用阿里云的OSS部署(将阿里云OSS存储空间作为静态网页的托管平台),将修改好文件通过ossbrowser上传,再开个端口映射基本就完事了,后续也只是偶尔有些小改动。

内网穿透

第二个任务和网络相关,领导让我研究如何远程访问水下机器人上指定串口的数据。注意不是网口数据,而是串口数据。将这个问题拆分为了以下几个步骤完成:

  1. 使用串转网模块。将串口数据转换成网络数据(server)
  2. 使用网络调试助手(client)接受并解析出串口数据。
    此时内网环境下能访问到数据,接下来,需要实现外网访问。
  3. 使用4G模块,将机器人内容的网络接入互联网。
    这里的水下机器人在水上拥有浮标,在浅海能连上4G网。
  4. 内网穿透

因为4G模块并没有公网IP,要访问里面的指定IP和端口的数据,必须做内网穿透。

最开始我的想法是,服务器有公网,所以就让我们本地作为client连上服务器,机器人也连上服务器,再在服务器上做内容转发,实现两个客户端的通信。也自己实现了一个简易版的Socket转发的封装。此时机器人内还需要写程序实现,将两个客户端的内容转发,一个客户端连接的云服务器、一个客户端连接的串转网服务。在开发中发现问题很多,使用Socket做了两次TCP转发,一个TCP没连上就会出现问题,也做了很多异常处理,断开重连等扩展,还是有些问题。

后来无意间发现了花生壳,一个专门做内网穿透的硬件。只用将着看设备连接到机器人网络上,配置好需要转发的IP和端口,直接映射到花生壳的域名上,远程访问这个域名指定端口就和局域网环境一样。买来测试后发现,是真的好用,自己造轮子真比不上人家专业的。

跨语言调用

第三个任务是做技术测试,探索一套有效的Python与C++调用的方案。

  1. python调用C++,使用CTypes调用VS2015打包的C++动态链接库,这套方式比较成熟是可行的。
  2. C++调用用Python,使用Python的C/C++ API。#include <Python.h>实现

水深压力传感器、涡轮流速传感器、水下定位器

这是另外几个任务,嵌入式相关,主要是看芯片手册,实现对应功能的调试。

总结

这段时间整理的内容有:
阿里云 OSS 静态网站托管
Socket服务器实现多个客户端通信
AI 模型跨语言调用
移动设备最简单的内网穿透方式
QT 调 Python
多个路由器组固定 IP 局域网
C++ 调用 pytorch 模型

这段实习虽然一直在打杂,各种活都在干,体验了不同的技术在工业上的应用,对自己的职业发展有了更深的认识。