Акронис
Пн 31 июля 2017 г. 5:43 утра
взял пример отсюда: http: // Playground.Ардуино.cc/code/ftp
Передача файла на FTP -сервер отличный.
// #define ftpwrite
Но когда мне нужно прочитать с FTP -сервера и записать на SD -карту, файл создается на SD -карте с длиной 0, а программа висит или петли.
Не могу найти в чем проблема.
Файл открыт для чтения через FTP, а затем FTP дает ошибку "Связанный с подключением" put "
Нужна помощь
Поймите, что никогда не выходит из этой подпрограммы:
Передача файла на FTP -сервер отличный.
// #define ftpwrite
Но когда мне нужно прочитать с FTP -сервера и записать на SD -карту, файл создается на SD -карте с длиной 0, а программа висит или петли.
Не могу найти в чем проблема.
Файл открыт для чтения через FTP, а затем FTP дает ошибку "Связанный с подключением" put "
Нужна помощь
Поймите, что никогда не выходит из этой подпрограммы:
.......
dclient.stop();
Serial.println(F("Data disconnected"));
serial.print("here goes");
if(!eRcv()) return 0; //comes in here ever comes back
serial.print("here misses");
......
Стивестронг
Пн 31 июля 2017 г. 8:30 утра
Вы не должны включать "Ethernet_stm.час"вместо" Ethernet.час" ?
Вы подключаете как SD -карта, так и модуль Ethernet к одному и тому же порту SPI1?
Проверьте PIN -код Ethernet Select.
В качестве альтернативы используйте отдельные порты SPI.
Вы подключаете как SD -карта, так и модуль Ethernet к одному и тому же порту SPI1?
Проверьте PIN -код Ethernet Select.
В качестве альтернативы используйте отдельные порты SPI.
Акронис
Пн 31 июля 2017 г. 8:42 утра
Привет, Стивестронг .
Я использую вашу последнюю библиотеку версий https: // github.com/stevstrong/ethernet_stm32
+ https: // github.com/stevstrong/arduino_stm32
+ SDIO ViewTopic.PHP?F = 39&t = 2215
+ https: // github.com/stevstrong/adafruit_ ... 6bit_stm32
Плата STM32F407VET6 Black + W5500 (SPI1) + TFT
#включать <Adafruit_tftlcd_16bit_stm32.час>
#include "sdiof4.час"
#включать <Ethernet_stm32.час>
Spiclass mspi (1);
byte mac [] = {0x90, 0xa2, 0xda, 0x00, 0x59, 0x99};
IPaddress IP (10, 22, 5, 199);
IPaddress Gateway (10,22, 1, 1);
Подсеть iPaddress (255, 255, 0, 0);
IPaddress Server (10,22, 5, 4);
EthernetClient Client;
EthernetClient dClient;
Ethernet.init (MSPI, PA4);
Ethernet.начинать (Mac, ip, шлюз, шлюз, подсеть);
Я использую вашу последнюю библиотеку версий https: // github.com/stevstrong/ethernet_stm32
+ https: // github.com/stevstrong/arduino_stm32
+ SDIO ViewTopic.PHP?F = 39&t = 2215
+ https: // github.com/stevstrong/adafruit_ ... 6bit_stm32
Плата STM32F407VET6 Black + W5500 (SPI1) + TFT
#включать <Adafruit_tftlcd_16bit_stm32.час>
#include "sdiof4.час"
#включать <Ethernet_stm32.час>
Spiclass mspi (1);
byte mac [] = {0x90, 0xa2, 0xda, 0x00, 0x59, 0x99};
IPaddress IP (10, 22, 5, 199);
IPaddress Gateway (10,22, 1, 1);
Подсеть iPaddress (255, 255, 0, 0);
IPaddress Server (10,22, 5, 4);
EthernetClient Client;
EthernetClient dClient;
Ethernet.init (MSPI, PA4);
Ethernet.начинать (Mac, ip, шлюз, шлюз, подсеть);
Стивестронг
Пн 31 июля 2017 г. 8:44
Тогда вы должны использовать:
#include
#include
Акронис
Пн 31 июля 2017 г. 8:47 утра
Я сделал все, как написано в этой теме ViewTopic.PHP?F = 39&t = 2215
Стивестронг
Пн 31 июля 2017 г. 8:48
Вы тестировали отдельно SDIO и Ethernet?
Акронис
Пн 31 июля 2017 г. 8:53 утра
Нет - не тестируется.
Как проверить получение файла с FTP -сервера без записи на SD -карту ?
Как проверить получение файла с FTP -сервера без записи на SD -карту ?
Акронис
Пн 31 июля 2017 г. 9:07
проверил еще раз - программа останавливает или зацикливает ее на
Dclient.останавливаться();
если(!ercv ()) return 0; // <<<<<<<<< эта рутина
и
клиент.println (f ("quit"));
если(!ercv ()) return 0; // <<<<<<<<<<<<< эта рутина
Dclient.останавливаться();
если(!ercv ()) return 0; // <<<<<<<<< эта рутина
и
клиент.println (f ("quit"));
если(!ercv ()) return 0; // <<<<<<<<<<<<< эта рутина
byte eRcv()
{
byte respCode;
byte thisByte;
while(!client.available()) delay(1);
respCode = client.peek();
outCount = 0;
while(client.available())
{
thisByte = client.read();
Serial.write(thisByte);
if(outCount < 127)
{
outBuf[outCount] = thisByte;
outCount++;
outBuf[outCount] = 0;
}
}
if(respCode >= '4')
{
efail();
return 0;
}
return 1;
}
Стивестронг
Пн 31 июля 2017 г. 9:24
[Акронис - Пн 31 июля 2017 г. 8:53] - Нет - не тестируется.Вы должны проверить отдельно.
Как проверить получение файла с FTP -сервера без записи на SD -карту ?
Вы можете просто распечатать сериал полученных байтов.
Я не знаю, что делает ercv (), но если он работает без того.
Проверьте предупреждающие сообщения в Arduino IDE.
victor_pv
Пн 31 июля 2017 г. 12:56
Проверьте это значение на этой рутине:
respCode = client.peek();
Стивестронг
Пн 31 июля 2017 г. 13:10
клиент.peek () возвращает байт, поэтому я не вижу здесь никакой проблемы, что не означает, что это не может быть что -то не так с этой функцией.
victor_pv
Пн 31 июля 2017 г. 16:02
[Стивестронг - Пн 31 июля 2017 г. 13:10] - клиент.peek () возвращает байт, поэтому я не вижу здесь никакой проблемы, что не означает, что это не может быть что -то не так с этой функцией.Да, я имею в виду, что не является недействительным тип возврата, а скорее заглядывая, возвращая значение выше 4, когда он не ожидается, либо из -за ошибки, либо из -за некоторой коррупции в общении.