Seite 1 von 1

serial/usb-stick mit python ansprechen

Verfasst: Donnerstag 30. September 2010, 07:20
von krischeu
Hallo,
ich bräuchte mal wieder einen Tip ...

Ich habe einen USB-Stick von Amberwireless. Der ist zum senden und empfangen von Daten über das 800er MHz Frequenzband. Das funktioniert soweit unter Windows (VisalBasic) ganz gut. Im Terminal von gtkterm empfange ich unter Linux (Ubuntu 10.04 LTS) auch die Daten.
Dort gibt es ein ttyUSB0 das von gtkterm funktionabel unterstützt wird.

Im Terminal nutzen mir zum einen die Daten so nichts und zum anderen würde ich gerne die Empfangenen Daten auch gleich auswerten und in eine mysql-Datenbank schreiben.
Also wieder mal Python bemühen. Es gibt "import serial" und die Beispiele: http://www.zaber.com/wiki/Software/Python. Auch gefunden habe ich: http://pyserial.sourceforge.net

Probiert habe ich folgende codesnipps:

Code: Alles auswählen

#!/usr/bin/env python
# Import the pyserial module.
#
import serial

# Open the port. Specify baudrate and handshake.
#
ser = serial.Serial('/dev/ttyUSB0',19200)
ser.read(size=1)
#
ser.close()

Code: Alles auswählen

#!/usr/bin/env python
import sys
f = open('/dev/ttyUSB0', 'r')
try:
 while 1:
  l = f.readline()
  print l
except:
 f.close

Da der Sender dauernd sendet und mein Empfänger unter Linux immer empfängt, blinkt das Teil immer (ist schon mal gut). Aber wenn ich ein python programm starte hört das auf ... und ich bekomme auch keine Zeichen angezeigt die der Sender gesendet hat.

Hat da vielleicht jemand einen heißen TIP?

Re: serial/usb-stick mit python ansprechen

Verfasst: Dienstag 5. Oktober 2010, 18:43
von DaMutz
die Methode read() liefert dir doch das Zeichen zurück, du musst es nur noch ausgeben. Oder etwa nicht?

Dies funktioniert bei mir einwandfrei (unter Windows COM9):

Code: Alles auswählen

ser = serial.Serial()
ser.port = 8
if ser.isOpen():
    ser.close()
ser = serial.Serial(8, 2400, timeout=60)
while True:
    x = ser.read()          # read one byte
    print x
falls dies nicht funktioniert so zeig doch die exception oder beschreib den Fehler. Du kannst übrigens nicht gleichzeitig mit dem Terminalprogramm und mit dem Skript auf die gleiche serielle Schnittstelle zugreifen.

Re: serial/usb-stick mit python ansprechen

Verfasst: Dienstag 19. Oktober 2010, 08:21
von krischeu
druckt es nicht mit "print l" ?

Re: serial/usb-stick mit python ansprechen

Verfasst: Dienstag 19. Oktober 2010, 10:11
von mkesper
Frag doch mal den Anbieter des Sticks freundlich, wie er initialisiert werden muss.
Wenn du ihn mit 19200 Bit/s ansprichst, er aber 9600 erwartet, wird das nichts.

Re: serial/usb-stick mit python ansprechen

Verfasst: Dienstag 19. Oktober 2010, 10:31
von krischeu
Hi,
unter Windows ist er fest auf 19200 eingestellt.
Das kann man dort mit dem Tool von den Amberwirelessjungens machen.

Re: serial/usb-stick mit python ansprechen

Verfasst: Mittwoch 27. Oktober 2010, 19:36
von DaMutz
krischeu hat geschrieben:druckt es nicht mit "print l" ?
Das verstehe ich nicht. Mit welchem Skript versuchst du es? Hast mein Skript schon einmal versucht?
Lösch einmal in deinem Skript den try-except Block weg und poste hier die Fehlermeldung. Ich vermute stark es gibt eine Exception, die mit deinem schlechten try-except konstrukt einfach verschluckt wird.
Es könnte auch sein, dass die serielle Schnittstelle bereits geöffnet ist. Aus diesem Grund habe ich die folgenden 2 Zeilen in meinem Skript:

Code: Alles auswählen

if ser.isOpen():
    ser.close()
liefere ein bissche mehr Infos über dein Skript und deine Versuche, sonst ist es nicht möglich dir besser zu helfen.

Re: serial/usb-stick mit python ansprechen

Verfasst: Donnerstag 28. Oktober 2010, 08:21
von krischeu
Also,
erst mal vielen Dank für das ausgraben des Threads.

Back to the roots.

Ich hab mal das Teil wieder rausgekramt, reingesteckt, blinkt.

Code: Alles auswählen

heinz@pippin:~/scripte$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> open('/dev/ttyUSB0', 'r')
<open file '/dev/ttyUSB0', mode 'r' at 0x7f8634973c00>
>>> 
Bei open file ... hört es dann auch wieder auf rumzublinken :(

Hilft euch das weiter um mir weiterzuhelfen ?