Serielle Schnittstelle

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
juergen_aschen
User
Beiträge: 2
Registriert: Montag 10. Februar 2014, 12:09

Möchte eine Profibusschnistelle am Rasberry Pi mit 187500 Baud einrichten. Da diese Baudrate nicht zu den normalen gehört, läst sie sich nicht deklarieren. Wie oder wo kann ich die nun trotzdem einrichten?
BlackJack

@juergen_aschen: Was meinst Du mit „lässt sich nicht deklarieren”? Wie sieht der Code und die resultierende Fehlermeldung aus? Du kannst die 187500 einfach als Baudrate übergeben und wenn das `serial`-Modul weiss wie es auf der Plattform nicht-standard Baudraten einstellen kann, dann tut es das.
juergen_aschen
User
Beiträge: 2
Registriert: Montag 10. Februar 2014, 12:09

Hier das Testprogramm:

Code: Alles auswählen

#

import array
import serial

maxReadCount=50
readBuffer = array.array('c')


print('Dises einfaches Beispiel liest vom rs-485 Port')

# Port öffnen
print('Öffne Gerät: /dev/ttyAMA0')
try:
        ser = serial.Serial(port='/dev/ttyAMA0', baudrate=187500)   # Schnittstelle deklarieren
except:
    print('Fehler!')
    print('Mögliche Ursache:')
    print('1) Der raspicomm Gerätetreiber ist nicht geladen. type \'lsmod\' and verify that you \'raspicommrs485\' is loaded.')
    print('2) Der raspicomm Gerätetreiber ist in Benutzung. Eine anderer Application benutzt den Gerätetreiber?')
    print('3) Irgendetwas anders beim Laden des Gerätetreibers. type \'dmesg\' and check the kernel messages')
    exit()

print('Erfolgreich.')

# read in a loop
print('Starte das lesen vom rs-485 port mit maximal ' + str(maxReadCount) + ' bytes')
readCount=0
while readCount < maxReadCount:
    readBuffer.append(ser.read(1))
    readCount=readCount+1

# print the received bytes
print('Gelesene Bytes:')
i=0
while i < maxReadCount:
    val=ord(readBuffer[i])
    hx=''
    if val >= 32 and val <= 126:
        hx=' - \'{0}\''.format(readBuffer[i])
    print('[{0:2d}]: 0x{1:2X}{2}'.format(i, val, hx))
    i=i+1
Keine Fehlermeldung,
aber auch keine brauchbaren Daten.
BlackJack

@juergen_aschen: Was heisst keine brauchbaren Daten? Es kommen welche an, aber nicht das was Du erwartest? Stimmen denn die anderen Parameter der Verbindung? Kannst Du mit einem Terminalprogramm mit dem externen Gerät kommunizieren?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ist vermutlich eines dieser Programme die nur mit Strg-C funktionieren.
Werden denn "Gelesene Bytes" angezeigt?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten