pyserial: byte kommt nicht an?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,

ich versuche gerade an meinen Microcontroller per pyserial 1 Byte an Daten zu schicken.
Das Problem ist, es kommt einfach nicht an.
Zum Aufbau:
Der Microcontroller zieht beim ersten eintrudelnden einen Interupt.
Sobald der Interupt da ist schaltet er LED 1 ein (um zu signalisieren das er in de Interupt Routine ist)
und geht dann über eine switch case anweisung alle vordefinierten befehle durch.
Wurde der Befehl "o" (0x6f) gesendet wird auch LED2 eingeschaltet.
Mit Putty geht das auch ohne Probleme.

Nun will ich das ganze aber über Python lösen und da das ganze sowohl unter Windows als
auch Linux laufen soll, nehme ich pyserial.

Ich dachte nun, gut, kann ja nciht schwer sein, machen wir mal ein

Code: Alles auswählen

import serial
ser = serial.Serial(3, 14400) #in putty nehme ich 115200 also 8*14400
ser.write("o")
Nun geht LED1 an, LED2 aber nicht.
Okay, erstmal etwas mit encoing rumprobiert, putty hat hier latin-1

Code: Alles auswählen

import serial
ser = serial.Serial(3, 14400) #in putty nehme ich 115200 also 8*14400
ser.write("o".encode("latin-1"))
geht aber auch nicht. Hm.
Okay, dann Brutforce ich halt eine Reaktion!

Code: Alles auswählen

import serial
import time
ser = serial.Serial(3, 14400)
for i in xrange(255):
  ser.write(chr(i))
  a = ser.read(1)
  time.sleep(1)
  if not a == "\xff":
    print i
Durchlaufen gelassen, 256mal geht LED1 an, kein mal LED2
Sollte ich hier den nicht alle Bit Kominationen durchgegangen sein??
Hätte LED2 nicht irgendeinmal ansprechen müssen?
Wäre super wenn ihr mir einen Tipp geben würdet.
Schöne grüße,

p91
BlackJack

@p90: Wie sieht es denn mit den anderen Einstellung ausser Port und Baudrate aus? Sind die Voreinstellungen von `Serial` da überall die gleichen, die auch von Putty benutzt werden?

Bei `Serial` würde ich ausserdem ein `flush()` nach dem `write()` machen, nur für den Fall dass das puffert.
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Oh mein Gott, entschuldige bitte, das ich deine Zeit verschwendet habe BlackJack :(

Es war die Bautrate.
Und zwar muss die bei beiden jeweils 115200 statt 14400 sein.
Arg.
Antworten