盘点Air780E的FTP应用,你了解吗?
一、FTP 概述
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于 FTP 服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
二、演示功能概述
本文教你合宙4G模组使用LuatOS开发4G通信中FTP网络协议的应用。
本教程实现的功能定义是:
使用 Air780E核心板下载Air780的LuatOS 示例代码中ftp的例程进行验证,例程流程为:
● 登录FTP服务器
● 用 ftp.command 操作 ftp 服务器目录
● ftp.pull 下载文件
● ftp.push 上传文件
● FTP 客户端关闭
三、硬件环境
3.1 Air780E核心板
此核心板的详细使用说明参考:Air780E 产品手册 中的 << 开发板 Core_Air780E 使用说明 VX.X.X.pdf>>,写这篇文章时最新版本的使用说明为:开发板 Core_Air780E 使用说明 V1.0.5.pdf ;核心板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。
3.2 PC电脑
WINDOWS 系统,其他暂无特别要求;
3.3 SIM卡
中国大陆环境下,可以上网的sim卡,一般来说,使用移动、电信、联通的物联网卡或者手机卡都行;
3.4 数据通信线
USB 数据线,暂无特别要求;
四、软件环境
4.1 Luatools工具
要想烧录LuatOS固件到4G模组中,需要用到合宙的强大的调试工具:Luatools
详细使用说明参考:
Luatools工具使用说明:
https://docs.openluat.com/Luatools/
Luatools工具集具备以下几大核心功能:
一键获取最新固件:自动连接合宙服务器,轻松下载最新的合宙模组固件。
固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中。
串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能。
串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求。
Luatools下载之后, 无需安装, 解压到你的硬盘,点击 Luatools_v3.exe 运行,出现如下界面,就代表 Luatools 安装成功了.
4.2 准备需要烧录的代码
首先要说明一点:脚本代码, 要和固件的 soc 文件一起烧录。
4.2.1 烧录的底层固件文件
底层 core 下载地址:LuatOS 固件版本下载地址
Air780E的底层固件在Luatools解压后目录的:
LuatOS-SoC_V1112_EC618_FULL.soc
4.2.2 烧录的脚本代码
首先要下载Air780的LuatOS示例代码到一个合适的项目目录。
示例代码网站:
https://gitee.com/openLuat/LuatOS-Air780E
下载流程参考下图:
下载的文件解压,找到 LuatOS-Air780E-master\demo\ftp\main.lua,如图:
4.3 烧录步骤
4.3.1 正确连接电脑和4G模组电路板
使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;
4.3.2 识别4G模组的 boot 引脚
在下载之前,要用模组的 boot 引脚触发下载, 也就是说,要把4G模组的 boot 引脚拉到 1.8v,或者直接把 boot 引脚和 VDD_EXT 引脚相连。我们要在按下BOOT 按键时让模块开机,就可以进入下载模式了。
具体到Air780E开发板:
1、当我们模块没开机时,按着 BOOT 键然后长按 PWR 开机。
2、当我们模块开机时,按着 BOOT 键然后点按重启键即可。
4.3.3 识别电脑的正确端口
判断是否进入 BOOT 模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了 boot 下载模式,如下图所示:
当设备管理器出现了 3 个连续数字的 com 端口,并且每个数字都大于 4,这时候, 硬件连接上就绪状态,恭喜你,可以进行烧录了!
4.3.4 用 Luatools 工具烧录
新建项目
首先,确保你的 Luatools 的版本,大于等于 3.0.6 版本的。
在 Luatools 的左上角上有版本显示的,如图所示:
Luatools 版本没问题的话, 就点击 LuaTOols 右上角的“项目管理测试”按钮,如下图所示:
这时会弹出项目管理和烧录管理的对话框,可以新建一个项目,如下图:
开始烧录
选择 780E 板子对应的底层 core 和刚改的 main.lua 脚本文件。下载到板子中。
点击下载后,我们需要进入 boot 模式才能正常下载。
如果没进入 boot 模式会出现下图情况:
当我们模块没开机时,按着 BOOT 键然后长按 PWR 开机,进入下载。
当我们模块开机时,按着 BOOT 键然后点按重启键即可。可以进入下载,如图:
五、API 说明
5.1 ftp.pull(local_name,remote_name)
FTP 文件下载
参数
传入值类型 | 解释 |
string |
local_name 本地文件 |
string |
remote_name 服务器文件 |
返回值
返回值类型 | 解释 |
bool/string |
成功返回 true 失败返回 string |
例子
ftp.pull("/1222.txt","/1222.txt").wait()
5.2 ftp.push(local_name,remote_name)
FTP 文件上传
参数
传入值类型 | 解释 |
string |
local_name 本地文件 |
string |
remote_name 服务器文件 |
返回值
返回值类型 | 解释 |
bool/string |
成功返回 true 失败返回 string |
例子
ftp.push("/1222.txt","/1222.txt").wait()
5.3 ftp.login(adapter,ip_addr,port,username,password)
FTP 客户端
参数
传入值类型 | 解释 |
int |
适配器序号, 只能是: |
string |
ip_addr 地址 |
string |
port 端口,默认 21 |
string |
username 用户名 |
string |
password 密码 |
bool/table |
是否为 ssl 加密连接,默认不加密, |
返回值
返回值类型 | 解释 |
bool/string |
成功返回 true 失败返回 string |
例子
ftp_login = ftp.login(nil,"xxx")
5.4 ftp.command(cmd)
FTP 命令
参数
传入值类型 | 解释 |
string |
cmd 命令 目前支持: |
返回值
返回值类型 | 解释 |
string |
成功返回 true 失败返回 string |
例子
// 空操作,防止连接断掉
print(ftp.command("NOOP").wait())
// 报告远程系统的操作系统类型
print(ftp.command("SYST").wait())
// 指定文件类型
print(ftp.command("TYPE I").wait())
// 显示当前工作目录名
print(ftp.command("PWD").wait())
// 创建目录
print(ftp.command("MKD QWER").wait())
// 改变当前工作目录
print(ftp.command("CWD /QWER").wait())
// 返回上一层目录
print(ftp.command("CDUP").wait())
// 删除目录
print(ftp.command("RMD QWER").wait())
// 获取当前工作目录下的文件名列表
print(ftp.command("LIST").wait())
// 删除文件
print(ftp.command("DELE /1/12222.txt").wait())
5.5 ftp.close()
FTP 客户端关闭
参数
无
返回值
返回值类型 | 解释 |
bool/string |
成功返回 true 失败返回 string |
例子
ftp.close().wait()
5.6 ftp.debug(onoff)
配置是否打开 debug 信息
参数
传入值类型 | 解释 |
boolean |
是否打开 debug 开关 |
返回值
返回值类型 | 解释 |
nil |
无返回值 |
例子
无
六、实现流程
打开 FTP 服务器。记录地址,端口号,用户名,密码等必要信息。
改 DEMO,将登录中的地址,端口号,用户名,密码等必要信息修改为自己服务器的。
登录 ftp 服务器(ftp 服务器用 vsftpd)
等待登录成功
执行自己的命令
6.1 例程
示例代码如下:
七、总结
本文档主要介绍4G通信中FTP通信的应用。结合例程讲解了FTP基本原理,介绍了FTP主要API,旨在最简单的上手Air780的LuatOS的 FTP开发。
八、常见问题
8.1 ftp服务器用vsftpd
ftp的服务器用vsftpd。
8.2 关于不支持主动模式
模块 ftp 默认是被动模式,不支持主动模式,无法设置主动模式,公网下要想模块正常连接服务器,服务器肯定不能设置为主动模式,否则哪家模块都不能用。
盘点Air780E的FTP应用,你了解吗?的更多相关文章
- AI时代大点兵-国内外知名AI公司2018年最新盘点
AI时代大点兵-国内外知名AI公司2018年最新盘点 导言 据腾讯研究院统计,截至2017年6月,全球人工智能初创企业共计2617家.美国占据1078家居首,中国以592家企业排名第二,其后分别是英国 ...
- 8.仿阿里云虚拟云服务器的FTP(包括FTP文件夹大小限制)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 原文:http://dnt.dkill.net/Ar ...
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案
前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...
- win7下利用ftp实现华为路由器的上传和下载
win7下利用ftp实现华为路由器的上传和下载 1. Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...
- Java实现FTP文件与文件夹的上传和下载
Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...
- centos下开启ftp服务
如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...
- 解决开启服务器防火墙导致ftp不能连接的问题
在防火墙设置的"高级"选项卡中的"网络连接设置"--"本地连接"--"设置"中添加了"FTP服务器" ...
- centos6.5 nginx-1.8.0和ftp搭建图片服务器
一.Nginx的安装步骤 1.Nginx安装环境: gcc: 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c+ ...
- Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)
所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...
随机推荐
- .NET 8 + Vue 3 极简 RABC 权限管理系统
前言 在日常工作中,几乎每家公司都需要一个后台管理系统来处理各种任务.为了帮助大家快速搭建这样一个系统,给大家介绍一个基于最新技术 .NET 8 和前端框架 Vue 3 实现的极简 RABC(基于角色 ...
- 记一次 .NET某实验室自动进样系统 崩溃分析
一:背景 1. 讲故事 前些天有位朋友在微信上联系到我,说他们的程序在客户那边崩掉了,让我帮忙看下怎么回事,dump也拿到了,那就上手分析吧. 二:WinDbg 分析 1. 哪里的崩溃 既然是程序的崩 ...
- HarmonyOS NEXT未成年人模式无缝联动所有应用,过滤非适龄内容
背景 随着消费电子产品和移动互联网的普及,未成年人互联网普及率96.8%,超过80%的未成年人都拥有自己的上网设备,而如何引导孩子正确上网一直是家长们的担忧.市场上很多电子设备.系统推出了一些未成年人 ...
- Redis实战-session共享之修改登录拦截器
在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能. 登录拦截器优化: 凯哥 ...
- git 相关操作
git diff 已经缓存的文件和刚刚修改过的没有缓存的文件的对比 git diff --stage git status 查看本地文件的修改,是否进入缓存 git add 把刚刚修改过的 ...
- 游戏AI行为决策——GOAP(目标导向型行动规划)
游戏AI行为决策--GOAP(附代码与项目) 新的一年即将到来,感觉还剩一种常见的游戏AI决策方法不讲的话,有些过意不去.就在这年的尾巴与大家一起交流下「目标导向型行为规划(GOAP)」吧! 另外,我 ...
- 深入理解Redis锁与Backoff重试机制在Go中的实现
目录 Redis锁的深入实现 Backoff重试策略的深入探讨 结合Redis锁与Backoff策略的高级应用 具体实现 结论 在构建分布式系统时,确保数据的一致性和操作的原子性是至关重要的.Redi ...
- 世界第一!华为云图引擎服务GES大幅刷新世界纪录
近日,国际关联数据基准委员会(Linked Data Benchmark Council,以下简称LDBC)公布了社交网络测试交互式负载(SNB INTERACTIVE WORKLOAD,以下简称为S ...
- dotnet定义扩展方法
// 扩展方法 // 1.创建静态类静态方法 2. 在静态方法中参数中使用 this 关键字指定需要扩展的类 // 密封类 不能直接继承,通过扩展方法,拿到父类的属性和方法进行扩展补充
- 反射获取Exception的所有类
var test = "test"; $"{test} 喜喜".Dump(); // 反射 var types = Assembly .GetAssembly( ...