电子说
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 客户端关闭
此核心板的详细使用说明参考:Air780E 产品手册 中的 << 开发板 Core_Air780E 使用说明 VX.X.X.pdf>>,写这篇文章时最新版本的使用说明为:开发板 Core_Air780E 使用说明 V1.0.5.pdf ;核心板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。
WINDOWS 系统,其他暂无特别要求;
中国大陆环境下,可以上网的sim卡,一般来说,使用移动、电信、联通的物联网卡或者手机卡都行;
USB 数据线,暂无特别要求;
要想烧录LuatOS固件到4G模组中,需要用到合宙的强大的调试工具:Luatools
详细使用说明参考:
Luatools工具使用说明:
https://docs.openluat.com/Luatools/
Luatools工具集具备以下几大核心功能:
Luatools下载之后, 无需安装, 解压到你的硬盘,点击 Luatools_v3.exe 运行,出现如下界面,就代表 Luatools 安装成功了.
首先要说明一点:脚本代码, 要和固件的 soc 文件一起烧录。
底层 core 下载地址:LuatOS 固件版本下载地址
Air780E的底层固件在Luatools解压后目录的:
LuatOS-SoC_V1112_EC618_FULL.soc
首先要下载Air780的LuatOS示例代码到一个合适的项目目录。
示例代码网站:
https://gitee.com/openLuat/LuatOS-Air780E
下载流程参考下图:
下载的文件解压,找到 LuatOS-Air780E-masterdemoftpmain.lua,如图:
使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;
在下载之前,要用模组的 boot 引脚触发下载, 也就是说,要把4G模组的 boot 引脚拉到 1.8v,或者直接把 boot 引脚和 VDD_EXT 引脚相连。我们要在按下BOOT 按键时让模块开机,就可以进入下载模式了。
具体到Air780E开发板:
1、当我们模块没开机时,按着 BOOT 键然后长按 PWR 开机。
2、当我们模块开机时,按着 BOOT 键然后点按重启键即可。
判断是否进入 BOOT 模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了 boot 下载模式,如下图所示:
当设备管理器出现了 3 个连续数字的 com 端口,并且每个数字都大于 4,这时候, 硬件连接上就绪状态,恭喜你,可以进行烧录了!
首先,确保你的 Luatools 的版本,大于等于 3.0.6 版本的。
在 Luatools 的左上角上有版本显示的,如图所示:
Luatools 版本没问题的话, 就点击 LuaTOols 右上角的“项目管理测试”按钮,如下图所示:
这时会弹出项目管理和烧录管理的对话框,可以新建一个项目,如下图:
选择 780E 板子对应的底层 core 和刚改的 main.lua 脚本文件。下载到板子中。
点击下载后,我们需要进入 boot 模式才能正常下载。
如果没进入 boot 模式会出现下图情况:
当我们模块没开机时,按着 BOOT 键然后长按 PWR 开机,进入下载。
当我们模块开机时,按着 BOOT 键然后点按重启键即可。可以进入下载,如图:
FTP 文件下载
参数
传入值类型 | 解释 |
---|---|
string | local_name 本地文件 |
string | remote_name 服务器文件 |
返回值
返回值类型 | 解释 |
---|---|
bool/string | 成功返回 true 失败返回 string |
例子
ftp.pull("/1222.txt","/1222.txt").wait()
FTP 文件上传
参数
传入值类型 | 解释 |
---|---|
string | local_name 本地文件 |
string | remote_name 服务器文件 |
返回值
返回值类型 | 解释 |
---|---|
bool/string | 成功返回 true 失败返回 string |
例子
ftp.push("/1222.txt","/1222.txt").wait()
FTP 客户端
参数
传入值类型 | 解释 |
---|---|
int | 适配器序号, 只能是:socket.ETH0, socket.STA, socket.AP如果不填,会选择平台自带的方式,然后是最后一个注册的适配器 |
string | ip_addr 地址 |
string | port 端口,默认 21 |
string | username 用户名 |
string | password 密码 |
bool/table | 是否为 ssl 加密连接,默认不加密,true 为无证书最简单的加密,table 为有证书的加密server_cert 服务器 ca 证书数据client_cert 客户端 ca 证书数据client_key 客户端私钥加密数据client_password 客户端私钥口令数据 |
返回值
返回值类型 | 解释 |
---|---|
bool/string | 成功返回 true 失败返回 string |
例子
ftp_login = ftp.login(nil,"xxx")
FTP 命令
参数
传入值类型 | 解释 |
---|---|
string | cmd 命令 目前支持:NOOP SYST TYPE PWD MKDCWD CDUP RMD DELE LIST |
返回值
返回值类型 | 解释 |
---|---|
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())
FTP 客户端关闭
参数
无
返回值
返回值类型 | 解释 |
---|---|
bool/string | 成功返回 true 失败返回 string |
例子
ftp.close().wait()
配置是否打开 debug 信息
参数
传入值类型 | 解释 |
---|---|
boolean | 是否打开 debug 开关 |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
无
示例代码如下:
本文档主要介绍4G通信中FTP通信的应用。结合例程讲解了FTP基本原理,介绍了FTP主要API,旨在最简单的上手Air780的LuatOS的 FTP开发。
ftp的服务器用vsftpd。
模块 ftp 默认是被动模式,不支持主动模式,无法设置主动模式,公网下要想模块正常连接服务器,服务器肯定不能设置为主动模式,否则哪家模块都不能用。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !