IIJに接続できたので、早速FTPアクセスを試してみる。
https://simcom.ee/documents/SIM7100E/SIM7100_FTP_Application_Note_V0.01.pdf
を参考に。
まずはFTPサーバーに接続する設定。
-------------------------------------------
AT+CFTPSERV="server.url"
AT+CFTPPORT=21
AT+CFTPMODE=1
AT+CFTPTYPE=I
AT+CFTPUN="username"
AT+CFTPPW="password"
-------------------------------------------
サーバー名、ユーザーID、PASSは当然秘密。
全てOKになったらまずはFTPサーバー上の情報を
取得
lsコマンドに該当するコマンドを送信
-------------------------------------------
AT+CFTPLIST="/home/xxxxxx/"
OK
+CFTPLIST: DATA,1460
drwx------ 29 xxxxx users 4608 May 25 16:54 .
drwxr-xr-x 129 root wheel 3072 Nov 1 2018 ..
-rw------- 1 xxxxx users 2191 Apr 26 15:01 .bash_history
中 略
drwx---r-x 2 xxxxx users 1024 Dec 4 2016 yume
+CFTPLIST: 0
-------------------------------------------
無事に取得出来た。
次にサーバー上のファイルを取得してみる。
-------------------------------------------
AT+CFTPGET="/home/xxxxx/index.html"
OK
+CFTPGET: DATA,119
GET / HTTP/1.1
User-Agent: Wget/1.14 (freebsd9.1)
Accept: */*
Host: www.pipipi.net:20080
Connection: Keep-Alive
+CFTPGET: 0
-------------------------------------------
例としてTEXTファイルを取得したが、
BINの場合もそのまま垂れ流される?のだろうか。
そしていよいよバイナリデータを送信してみる。
サーバー上にtest.pngというファイルを作成する
前提です。
-------------------------------------------
AT+CFTPPUT="/home/xxxxx/test.png"
+CFTPPUT: BEGIN
OK
-------------------------------------------
OKを受信したところで、データを送信する。
ここで若干嵌る。
送信の終了を指示する方法として
0x1aを送信するのだが、データ中の0x1aと区別する
為に0x1aを送信する場合は前に0x03を付加する。
つまり
0x1aは 0x03 0x1aとなる。
又、この0x03を区別する為にデータ中に0x03が存在した
場合も前に0x03を付加する。
つまり
0x03は0x03 0x03となる。
単純に画像ファイルを送信すれば良いのではなく、
1バイト毎にデータをチェックして上記の変換を
行う必要がある。
最後に0x1a(CTRL + Z)を送信するとサーバー上にファイルが作成された。
0 件のコメント:
コメントを投稿