?
一、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-masterdemoftpmain.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 | 適配器序號, 只能是: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")
5.4 ftp.command(cmd)
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())
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 默認是被動模式,不支持主動模式,無法設置主動模式,公網下要想模塊正常連接服務器,服務器肯定不能設置為主動模式,否則哪家模塊都不能用。
?審核編輯 黃宇
-
數據傳輸
+關注
關注
9文章
1976瀏覽量
65036 -
FTP
+關注
關注
0文章
112瀏覽量
40847 -
核心板
+關注
關注
5文章
1053瀏覽量
30183
發布評論請先 登錄
相關推薦
Air780E如何發送SMS?一文詳解!

如何使用Air780E開發板?看這篇就夠了!

選型4G-Cat.1模組Air780E時,我應該注意什么?

合宙 Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

Air780E/Air780EP/Air780EQ/Air201模塊遇到內存死機如何分析

Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

評論