À quel moment tu dois envoyer ton mot de passe ? Faut-il attendre un message en particulier ?
À quel moment tu dois envoyer ton mot de passe ? Faut-il attendre un message en particulier ?
Lorsque la carte envoie "Autoboot in 5 seconds"
A ce moment-là dans mon code il y a le 123 qui est envoyé puis ça connecte en série et les commandes suivantes sont envoyées.
Montre cette ligne telle qu'elle s’affiche dans ta console.
Le "ZynqMP>" s'affiche une fois que le mot de passe a été rentré par le script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 phy reset forced ZYNQ GEM: ffffffff, mdio bus ffffffff, phyaddr 1, interface sgmii eth0: ethernet@ffffffff Autoboot in 5 seconds ZynqMP>
Ça continue tout simplement comme si il voulait se connecter en ssh.
Et le code continue encore longtemps comme ça mais ça ferait trop de ligne à mettre ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 line: "eth0: ethernet@ffffffff\r\n" line: "Autoboot in 5 seconds\r\n" line: "SF: Detected nnnqqqqa with page size 512 Bytes, erase size 128 KiB, total 128 MiB\r\n" line: "device 0 offset 0xfffffff, size 0xfffff\r\n"
Avec ta carte, est-ce que tu veux interagir avec de manière interactive ou ça doit être automatique ?
Automatique. C'est ce que mon entreprise demande sinon ils disent que ça n'a pas d'intérêt.
Ceci devrait te mettre sur les rails :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 bool keep_reading= true; while (keep_reading) { if (serial.waitForReadyRead() && serial.canReadLine()) { QByteArray line= serial.readLine(); qDebug()<< "line: "<< line<< '\n'; if (line.contains("Autoboot in 5 seconds") { qDebug()<< "---> sending password... "; if (serial.write("password\n") != -1) // voir si la carte attend un \n ou un \r\n à la fin de la chaine qDebug()<< "ok\n"; else qDebug()<< "error\n"; } if (line.contains("le bla bla bla pour sortir de la boucle") { keep_reading= false; } } else { qDebug()<< "waiting for data...\n"; } }
Je vais essayer. Je reviens si jamais il y a un autre problème en attendant je vais régler le problème des guillemets (je sais pas pourquoi ça me dit que ça va pas.).
Merci beaucoup.
Bonjour,
J'ai essayé le code mais cela ne marche pas.
Il ne comprend sans doute pas que c'est un mot de passe et donc une commande. Il ne fait que l'écrire dans le terminal.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager