Hallo,
die Stringzerlegung habe ich nun mit Perl hinbekommen.
Perl kannte ich bis gestern "nur vom hören", aber in diese Sprache (wohl
eher Slang) kann man sich echt schnell reinarbeiten!
Den neu zusammengewürfelten String habe ich mittels Perl-Modul
IO::Socket::INET an den anderen Rechner schicken können.
Mit "zusammengewürfelt" meine ich in diesem Fall einen fest von Hand
erstellten String!
Denn: Ich habe nun ein paar Probleme mit dem Einlesen der seriellen
Daten, die vom USB-Device kommen:
Ich kann partout das Perl-Modul Device::SerialPort nicht installieren.
Die Forenbeiträge zu diesem Modul lesen sich sehr vielversprechend, aber
es will einfach nicht.
Weder das *.ipk für OpenWRT noch für NSLU2 lassen sich installieren.
Ich habe eine NSLU2, auf der OpenWRT Backfire (sollte Big Endian sein)
läuft.
Mit dem neu erstellen des Moduls habe ich Probleme, jedenfalls besitze
ich keinen Linux-Rechner und habe noch nie etwas mit dem Crosscompiler
zu tun gehabt. Denn anscheinend benutzt Device::SerialPort termios.h,
das wohl angepasst werden muss.
SerialPort.pm habe ich per Hand in die NSLU2 kopiert (im richtigen
Verzeichnis), auch ohne Erfolg.
Gibt es einen anderen Weg den SerialPort über die Systembefehle direkt
in Perl einzulesen? Dann brauche ich gar kein Device::SerialPort von
CPAN.
Das USB-Device spricht mit 9600,8N1 und... ich habe es in meinem
Anfangspost vergessen, jeder komplette String vom USB-Device wird mit
\r\n abgeschlossen.
In meinem Perl-Skript verwende ich folgenden Code:
1 | while(1)
|
2 | {
|
3 |
|
4 | my($count,$string) = $port->read(255);
|
5 | if($count > 0)
|
6 | {
|
7 |
|
8 | #split lines
|
9 | @rows=split(/\r\n/,$string);
|
10 | #reset buffer
|
11 | #$string="";
|
12 |
|
13 | foreach(@rows) {
|
14 |
|
15 | usw...
|
Kann man diesen auf systemeigene Funktionen für die serielle
Schnittstelle umbiegen?
Gruß,
Marque