Arduino-Ftp-Serverを利用して、ArduinoでFTPサーバーを動かしたメモ。
基本的にはReadMe.txtのとおり。
環境
Arduino Mega 2560Ethernet Shield
Arduino IDE 1.8.5
手順
Arduino-Ftp-ServerをダウンロードしてFtpServerフォルダをlibraries\FtpServerとする。Streaming をダウンロードしてlibraries\Streamingとする。
http://arduiniana.org/Streaming/Streaming5.zip
SdFatをダウンロードしてlibraries\SdFatとする。
https://github.com/greiman/SdFat
libraries\Ethernet\src\EthernetServer.hを編集してconnected()を追加
EthernetClient available();
EthernetClient connected(); //add
libraries\Ethernet\src\EthernetServer.cppを編集してしてconnected()を追加
EthernetClient EthernetServer::connected()
{
accept();
for( int sock = 0; sock < MAX_SOCK_NUM; sock++ )
if( EthernetClass::_server_port[sock] == _port )
{
EthernetClient client(sock);
if( client.status() == SnSR::ESTABLISHED ||
client.status() == SnSR::CLOSE_WAIT )
return client;
}
return EthernetClient(MAX_SOCK_NUM);
}
libraries\SdFat\src\FatLib\iostream.h を編集してendl()をコメントアウト
#if 0
/** insert endline
* \param[in] os The Stream
* \return The stream
*/
inline ostream& endl(ostream& os) {
os.put('\n');
#if ENDL_CALLS_FLUSH
os.flush();
#endif // ENDL_CALLS_FLUSH
return os;
}
#endif
libraries\FatLib\FatLib.hを編集してFAT_SYSTを0に変更
//#define FAT_SYST 1
#define FAT_SYST 0 //mod
libraries\FtpServer\examples\FtpServeurTest\FtpServeurTest.ino をIDEで開き下記追加。
#define SD_SPI_CONFIGURATION 1
#define ENABLE_SPI_TRANSACTION 1
#define ENABLE_SPI_YIELD 1
動作確認
- ログインアカウントはlibraries\FtpServer\FtpServer.hに記載されている。
- FtpServeurTest.inoはsetup()でデフォルトでDHCP起動。
- DOSのFTPからはうまく入れなかった。(ユーザー名を入力した段階で切れてしまう)
- FFFTPではログインでき動作確認できた。
- リセット後下記出る場合は電源OFF/ONで復旧する。
Mount the SD card with library SdFat ... Unable to mount SD card