基于Stm32的4G模块实现内网透传通信(代码后附)

基于Stm32的4G模块实现内网透传通信

一、内网透传即内网映射,内网IP端口映射外网连接访问过程的实现。内网透传通信实现过程又有以下几种区别:
1)路由器映射。适合自己本地路由有公网IP网络环境,用路由当这个内网穿透介质,通过路由映射,实现外网对内网的访问。路由映射在登录路由后台管理功能可见,有的叫虚拟服务器,有的叫转发,有的叫端口映射,添加对应规则然后外网用路由IP访问。
2)自建转发。在自己公网IP(云)服务器上,部署内网穿透使用。
3)内网映射。可以上网,即可以通过内网映射方式,将本地内网IP端口映射到自己域名(或自动生成的二级域名上),再互联网上通过域名进行连接访问。
在使用移远EC600N-CN模块时
4G模块在项目里只需把它当成发送接收数据的中转,所以使用透传模式。透传模式是相对应的串口接收的数据会直接发送到网络端,从网络接收到的数据会从串口直接输出。
透传模式下,把模块当成一个串口设备,因此只需要连接以下四个引脚:
M_R:主串口接收(电平标准3.3V);
M_T:主串口发送(电平标准3.3V);
VIN:电源输入(5V-18V,功率要大于等于10W才能带动,因此最好12V)
GND:地

基于Stm32的4G模块实现内网透传通信(代码后附)
二、端口映射:
4G模块是和服务器实现数据交互的,因此只用自己电脑调试时需要将服务器相应端口映射到自己电脑上,用自己电脑实现和4G模块交互。
端口映射是将外网主机的IP 地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP 的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。但内网不能被外网直接的访问的,需要通过内网穿透,让内网“假装”成外网。
花生壳软件可以实现内网穿透。
因此,调试需要把网络调试助手的IP和端口号,通过花生壳工具,关联到外网服务器上,实际数据转发的时候,发送到网络调试助手的数据实际是发送到花生壳这边服务器,然后在网络调试助手上显示。
1、配置网络调试助手
电脑有0~65535个端口,动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
首先查找电脑未被占用的TCP端口。cmd里输入netstat -ano查看电脑被占用的端口(即最后一列数据),找出TCP协议未被占用的端口。
找到某个未被占用的端口后,可以使用neystat -aon|findstr“端口号”命令来确认某个端口是否未被占用。
如下图20000端口未被占用则不返回数据,30160端口被占用了,会返回占用该端口的任务。
找到空闲端口后,开始配置网络调试助手。网络调试助手的协议类型选择TCP Server,然后添加本地主机IP地址和刚才找到的空闲端口号,点击下方“打开”按钮,该端口就配置好了,就可以通过下面操作把服务器数据映射到该端口。
基于Stm32的4G模块实现内网透传通信(代码后附)
右下角可以显示连接状态。连接成功后,可以看到分配的服务器的IP和端口号(若花生壳显示映射连接失败,大概率是花生壳自己的问题,可以尝试重启软件或者等待一段时间,就会连接成功)。
刚上电模块就绪后返回RDY,每发一次指令,模块收到并查询/设置完成后,会返回OK,最后设置好服务器IP和端口后,就可以进行模块与服务器直接数据收发了。
如下图所示,模块给服务器发送“0x02 0x03 0x45”,服务器收到的数据会在网络调试助手显示;服务器给模块发送“0x10 0x20 0x47”,串口助手显示收到的数据。
完成模块通过串口连接到电脑与服务器的通讯。
基于Stm32的4G模块实现内网透传通信(代码后附)

模块串口中断函数如下:


基于Stm32的4G模块实现内网透传通信(代码后附)

来源:撕裂的牛仔裤

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月22日
下一篇 2022年9月22日

相关推荐