| Name |
Nachricht |
Peterwarb

Siedler
11 Beiträge
|
Haltestellenanzeige mit dem Raspberry Pi betreiben, 17 Nov. 2014 15:04
|
Liebe Community, Seit geraumer Zeit bereits versuche ich beide Geräte unter einen Hut zu bekommen. Leider klappt es mit der Kommunikation nicht richtig. Irgendwie klappt es mit der Schnittstelleneinstellung nicht richtig. Kann mir irgendjemand die korrekten Schalterstellungen von stty nennen? Ich habe bereits mit Cutecom einen Hexcode an das Ibis Utility gesendet. Die Daten werden dort korrekt empfangen. In der anderen Richtung also vom Ibis Utility zum Linuxrechner erhalte ich Werte statt 0x20 0xa0 statt 0x73 0xf3 usw., als würde der Linuxrechner den Startbit als Inhalt des binärcodes interpretieren. Bin nun etwas verwirrt. Ich benutz im Übrigen den ganz einfachen vcode. Ziel ist es meine Haltestellenanzeige mit dem Raspberry Pi zu betreiben und dafür dann ein Programm zu schreiben. Über Eure Hilfe wäre ich sehr erfreut. Danke schon mal |
|
| |
Beitragsbewertung:
|
Brose-Matrix


Gelehrter
246 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 17 Nov. 2014 20:06
|
Hallo Peter,
deine Schnittstellenparameter stimmen garantiert nicht. Deine Schnittstelle ist auf 8Bit eingestellt. Die Datenübertragung erfolgt mit dem niederwertigsten Bit zu Beginn d.h. das IBIS-Utility sendet 7Bit-Daten, das achte (höchstwertige Bit) bleibt demzufolge immer "Hi". Umgekehrt funktioniert das Empfangen mit dem IBIS-Utility trotzdem, das achte Bit wird als Paritätsbit angenommen und da der Bus danach wieder auf "Hi" ist, fällt das fehlende zweite Stoppbit gar nicht auf.
So weit ich weiß ist es nicht möglich, die Schnittstelle korrekt auf die IBIS-Spezifikation einzustellen. Hilfe bringt nur eine extra softwaremäßig "gebaute" Schnittstelle.
1200Baud, 7 Datenbits, gerade Parität, 2 Stoppbits
Schau mal hier:
|
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 18 Nov. 2014 14:34
|
Danke schon mal für die schnelle Antwort. Mein Bestreben ist allerdings meinen USB zu RS232 Adapter zu verwenden. Ich kann mir kaum vorstellen, daß Linux nicht in der Lage sein soll die Schnittstellenparameter korrekt zu setzen. Das mit der Kodierung leuchtet mir schon ein, zumal ich in eine ähnliche Richtung dachte. Leider gibt es innerhalb von stty so viele Schalterchen, daß man schnell den Überbliuck verlieren kann. So habe ich mal versucht den Schalter iutf8 einzuschalten, hat aber auch nichts gebracht. Derzeit sind folgende Schalter gesetzt: 1200 cs7 parenb -parodd hupcl cstopb cread -clocal -crtscts iutf8 -ixon -ixoff -ixany u.a. Damit sollten die maßgeblichen Werte für die Schnittstelle eingestellt sein. Irgendetwas fehlt da aber noch. In Cutecom sind die Werte analog zu Windows einstellbar. Baudrate, 7bit Zeichensatz 2Stopbit gerade parität sowie Abschalten der Datenlußkontrolle Software, wie Hardwareseitig.
Hat da noch jemand eine Idee? |
|
| |
Beitragsbewertung:
|
Brose-Matrix


Gelehrter
246 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 18 Nov. 2014 19:42
|
1200 cs7 parenb -parodd hupcl cstopb cread -clocal -crtscts iutf8 -ixon -ixoff -ixany u.a.
parodd das stimmt nicht, muss even sein. Wenn der Schalter aus ist, automatisch even?
|
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 18 Nov. 2014 20:20
|
Stimmt , parodd ist ungerade Parität -parodd ist gerade Parität Lt. Linux howto |
|
| |
Beitragsbewertung:
|
Thijs van de Bles


Gelehrter
120 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 18 Nov. 2014 21:29
|
DS001 test für piserial (linie 300)
CODE:
import serial import operator
def ibisString( str ): "Deze functie zet een ASCII gecodeerde string om naar HEX + IBIS pariteit" bytestring = str+"
" bits = chr(0x7f) + bytestring checksum = reduce(lambda x,y:chr((ord(x)^ord(y))&0xff),bits) message = bytestring+checksum output = map(lambda x:hex(ord(x)),message) bytes = bytearray(int(x, 16) for x in output) print output return bytes
ser = serial.Serial(‘/dev/ttyUSB0‘, 1200, parity=‘E‘, stopbits=2, timeout=1) ser.write(ibisString(‘l300‘)) |
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 18 Nov. 2014 23:00
|
Hui interessant, hört sich niederländisch oder belgisch an. Ok!! Neu ist für mich das timeout am Ende Sehe ich das richtig , wenn das in Perl geschrieben wurde? Auf jeden Fall werde ich mir den Code morgen einmal genauer anschauen. Vielen Dank schon mal |
|
| |
Beitragsbewertung:
|
Thijs van de Bles


Gelehrter
120 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 19 Nov. 2014 07:39
|
Niederlande in der Tat. Das timeout kann wahrscheinlich weg bleiben, aber es funktioniert hier, wie es steht.
Und mit 2 Stopbits Sie tatsächlich automatisch gewesen 7 Datenbits, aber man könnte noch brauchen, um davon 7 Datenbits angeben. Hängt, welche Hardware Sie verwenden, es geht gut. Mit einem Standard-USB-RS232-Dongle funktioniert es hier gut.
Geändert von Thijs van de Bles am 19.Nov.2014 7:43 |
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 19 Nov. 2014 08:53
|
Hallo Thijs, Der Programmausschnitt wird mir bei der Entwicklung eines eigenen Programms eine große Hilfe sein, da er vermittelt, wie der zu sendende String aufgebaut sein muß. Wie ich aber feststelle ruft das Programm noch eine weitere Datei namens serial und operator mittels der import Funktion auf. Interessant wäre hier das Programm serial. Da bei Übergabe der Parameter die Datenflußkontrolle nicht vorkommt, welche software-, wie hardwaremäßig abgeschaltet werden muß, könnte es sein,daß dort noch andere Maßnahmen eingeleitet werden. Zudem hoffe ich, daß das Programm für Linux geschrieben wurde? könntest Du mir diesen Teil "serial" mal zukommen lassen? Denn das ist der Knackpunkt bei mir unter Linux. Danach wende ich mich der Stringverarbeitung zu. Vielen Dank schon mal und schöne Grüße ans Nachbarland. Peter |
|
| |
Beitragsbewertung:
|
Kunsi


Siedler
37 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 19 Nov. 2014 13:47
|
serial und operator sind vermutlich fertige Python-Libraries.
Damit erübrigt sich auch die Frage, welche Programmiersprache das ist :)
EDIT: Hier der Programmcode ohne Forum-Formatierung, damit er nach Copy&Paste direkt funktioniert: pastebin.com/mm9HKiLF
Geändert von Kunsi am 19.Nov.2014 14:05 |
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 19 Nov. 2014 19:20
|
Hallo Kunsi, Besten Dank für diesen Link. Ein grober Überblick zeigt mir eine einfache Strucktur mit der ich sehr gut anfreunden kann. Hatte mit Python noch nichts zu tun, doch sind die Kommandostrukturen erfreulicher Weise sehr gut zu verstehen. Gleich morgen werde ich mich ein wenig einarbeiten und mal versuchen wie das Programm bei mir läuft.Einzig die Zeile mit der checksummenberechnung, wo nach dem xor das errechnete Byte mit &0xFF verknüpft wird. Nochmals vielen Dank an Alle, die mir diese Lösungsansätze vermittelt haben. Ich gebe bescheid, sowie es etwas neues gibt Euer Peter |
|
| |
Beitragsbewertung:
|
Peterwarb

Siedler
11 Beiträge
|
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 23 Nov. 2014 09:41
|
|
so erster Schritt ist getan. das Script habe ich zum Laufen gebracht. jetzt muß ich es nur noch an das v-Protokoll anpassen, d.h. 16 Zeichen übertragen bzw. den Rest mit Leerzeichen auffüllen und das v voransetzen. Heiliger Python hilf. Melde mich wieder. Peter |
|
| |
Beitragsbewertung:
|
Kunsi


Siedler
37 Beiträge
|
RE: Haltestellenanzeige mit dem Raspberry Pi betreiben, 14 Dec. 2014 16:51
|
Hast du an dem Script jetzt nochmal was geändert - und wenn ja, was? Bei mir tut es nämlich irgendwie nicht :o
|
|
| |
Beitragsbewertung:
|
|
|