Seite 1 von 1

PySerial Problem

Verfasst: Freitag 29. Oktober 2010, 14:59
von JonasR
Hi,

ich arbeite im Moment an einem Projekt wo ich ein Marvel Board mit U-Boot über die Serielle Konsole ansteuere.

Das Problem beginnt damit die Einstellungen im U-Boot zu ändern da mir dort auf einmal stücke meines Commands fehlen.

Code: Alles auswählen

import serial

ser = serial.Serial()
ser.baudrate = 115200
ser.port = 3
ser.timeout = 2
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.bytesize = serial.EIGHTBITS
ser.open()
ser.write("setenv install_options 'backup= url=Image kernel=uImage rootfs=rootfs.tar.gz modules=modules.tar.gz apptype= access=c2hlZXZhOnBsdWcK'")
ser.write("\r")
ser.write("setenv bootargs_console 'console=ttyS0,115200'")
ser.write("\r")
ser.write("setenv bootcmd 'run recover1'")
ser.write("\r")
ser.write("setenv recover1 'setenv mainlineLinux yes; setenv arcNumber 2097; setenv bootcmd run recover2; saveenv; reset'")
ser.write("\r")
ser.write("setenv recover2 'run recover3; setenv bootcmd $(real_bootcmd); saveenv; run rec33'")
print ser.readlines()
Zurück kommt dann
setenv install_options 'backup= url=Image kernel=uImage rootfs=rootfs.tar.gz modules=modules.tar.gz apptype= access=c2hlZXZhOnBsdWcK'


Marvell>> setenv bootargs_console 'console=ttyS0,115200'


Marvell>> setenv bootcmd 'un recover1'


Marvell>> setenv recover1 arcNumber 2097; setenv bootcmd run recover2; saveenv; reset'


Saving Environment to NAND...

Erasing Nand...Writing to Nand... done

þ

__ __ _ _

| \/ | __ _ _ ____ _____| | |

| |\/| |/ _` | '__\ \ / / _ \ | |

| | | | (_| | | \ V / __/ | |

|_| |_|\__,_|_| \_/ \___|_|_|
Er führt den vorletzten befehl aus und in diesem fehlt ein Teil. Wie es kommt kann ich mir nicht erklären... Wenn ich es über das HyperTerminal eingebe funktioniert alles. Wäre nett wenn mir das wer erklären könnte =)

€dit: Ich sehe gerade die Ausgabe ist mit readline in jeder Zeile gemacht und nicht wie oben mit readlines. Kommt aber das gleiche zurück nur in einem Array :D

MfG

Re: PySerial Problem

Verfasst: Freitag 29. Oktober 2010, 20:50
von DaMutz
warum sendest du jeweils ein \r und nicht ein \n?

Auch in diesem Aufruf:

Code: Alles auswählen

ser.write("setenv bootcmd 'run recover1'")
fehlt das 'r', ich würde einmal einen Versuch machen, wo du nach jedem ser.write Aufruf jeweils mit time.sleep ein paar Millisekunden oder gar Sekunden eine Pause machst.

Re: PySerial Problem

Verfasst: Montag 1. November 2010, 08:46
von JonasR
Ich hatte am Anfang immer \n genommen :D Dann kam ich mal auf die Idee \r zu probieren und habe es seit dem nicht mehr getauscht.

Habe gerade mal probiert ein sleep zu benutzen. Funktioniert soweit ich das sehe =)

Denn mal vielen Dank