Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique

Message 150 Starting data transfer et puis plus rien d'autre

Le Pico est animé par le microcontrôleur RP2040, un Cortex-M0+ double coeurs à 133 Mhz avec 2 Mio de Flash (QSPI) et une RAM dépassant les 256 Kio (~265Kio). La carte propose 26 GPIOs avec 6 bus (2x I2C, 2x SPI, 2x UART, 16x PWM, 3x ADC 12 bits).
Sous MicroPython, le RP2040 dispose d'un système de fichiers de ~128 Kio.
Forum rules
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).

Merci de suivre les recommandations suivantes.
Pensez à:
  • Titre claire: permettant d'identifier le produit et le problème
  • Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
  • Fichier joint: Max 300 Ko
  • Courtoisie et précision
Post Reply
fuz20
Posts: 2
Joined: Sun 31 Dec 2023 14:42

Message 150 Starting data transfer et puis plus rien d'autre

Post by fuz20 »

Hello

J'essaye de connecter mon programme micropython qui tourne sur mon Raspberry Pi Pico à un serveur FTP Filezilla Server installer sur un PC distant en FTP_TLS
J'utilise les bibliothèques ftplib.py et ftplibtls.py mais qui sont écrites pour ESP
J'arrive a me logger et a m'authentifier :
Image
Mais j'ai le message : 150 Starting data transfer et puis plus rien d'autre.
J'ai vérifié mes autorisations de pare-feu sur mon serveur (j'ai essayé sans pare-feu aussi)
Je suis en mode Passif
Mais je n'arrive pas à lire le contenu du répertoire sur mon serveur avec le code suivant :

```
def retrlines(self, cmd, callback=None):
"""Retrieve data in line mode.

A new port is created for you.

Args:
cmd: A RETR, LIST, or NLST command.
callback: An optional single parameter callable that is called
for each line with the trailing CRLF stripped.
[default: print]

Returns:
The response code.
"""
if callback is None:
callback = print

self.sendcmd('TYPE A')

print("========= retrlines - ftplib : cmd : ", cmd)

with self.ntransfercmd(cmd)[0] as conn:
print("========= retrlines - ftplib : OK ")

data = conn.recv(1024) # Lire 1024 octets du socket (ajustez la taille selon vos besoins)

print("========= retrlines - ftplib : conn (raw data):", data)

if hasattr(conn, 'makefile'):
print("========= retrlines - ftplib : makefile ")
fp = conn.makefile('rb')
print("========= retrlines - ftplib : makefile (suite)")
else:
fp = conn._sock

n = 1
while True:
print("========= retrlines - ftplib : while true => " , n)
n = n+1
line = fp.readline(MAXLINE + 1).decode()

print("========= retrlines - ftplib : line : ", line)

if not line:
print("========= retrlines - ftplib : not line ")
break

if len(line) > MAXLINE:
raise Error("got more than %d bytes" % MAXLINE)

if self.debugging > 2:
print('*retr*', repr(line))

if line[-2:] == CRLF:
line = line[:-2]
elif line[-1:] == '\n':
line = line[:-1]

callback(line)

print("========= retrlines - ftplib : while false")

# shutdown ssl layer
if _SSLSocket is not None and isinstance(conn, _SSLSocket):
conn.unwrap()

fp.close()
print("========= retrlines - ftplib : close")

return self.voidresp()

items = []
ftp_conn.retrlines("LIST",items.append)
```
En fait, c'est cette commande qui bloque : data = conn.recv(1024) # Lire 1024 octets du socket (ajustez la taille selon vos besoins)
Et je n'ai pas plus d'informations

Quelqu'un pourrait il m'aider ?

Pour rappel, je travaille avec un Raspberry Pi Pico WH (RP2040) avec le Micropython version 1.22.0

Merci d'avance
Attachments
FTP Server.jpg
User avatar
Dominique
Administrateur du site
Posts: 265
Joined: Sun 17 May 2020 22:43

Re: Message 150 Starting data transfer et puis plus rien d'autre

Post by Dominique »

Bonjour Fuz20,
Très ambitieux comme utilisation du Pico (faudrait que tu donne un lien vers les sources).

Voici quelques pistes:
1) As tu essayé avec un client ftp en ligne de commande ? (histoire de voir si tu arrive à avoir la réponse attendue)
2) As tu beaucoup de fichiers dans ton répertoire ftp? voire aucun? (ce sont deux cas particuliers qui pourraient bien faire sauter du code).
3) `data = conn.recv(1024)` et s'il y a moins de 1024 octets ? de combien est le timeout ?

Cordialement,
Dominique
Dominique, MC Hobby.
Post Reply