Forum: PC-Programmierung Probleme mit serieller Schnittstelle


von Lienen0102 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Gemeinde,
ich habe ein Problem mit meiner seriellen Schnittstelle und/oder mit dem 
Programm.
Ich möchte das eingefügte Programm nutzen, um Daten aus einer Wärmpumpe 
zu übertragen.
Wenn ich jetzt einen normalen Pc verwende, übertragt er mir die Daten 
auch einwandfrei. Nun besteht bei einem gewöhnlichen Pc jedoch das 
Problem, dass dieser eindeutig zu viel Strom verbraucht. Also möchte ich 
das ganze mit einer NSLU2 realisieren. Debian habe ich auch schon 
"draufgeflasht".
Die Wärmpumpe war einerseits mit der seriellen Schnittstelle verbunden, 
die sich intern befindet (über einen Pegel-converter) und beim x. 
Versuch auch über einen Serial-USB Adapter. Beide Ergebnisse brachten 
nur ein Timeout.
Könnt ihr mir sagen, wo das Problem liegt?

P.S.: Das Programm sollte sich eigentlich im Anhang befinden.

Gruß,
Lienen

von Hc Z. (mizch)


Lesenswert?

Aus gen.c:
1
  r = select(fd+1, &inFds, NULL, NULL, &t);
2
3
  if (r == 1)
4
  {
5
    l=read (fd, b, 1);

Ich denke, Deine Prüfung des Rückkehrwerts (r) ist falsch.  Zunächst 
solltest Du einmal getrennt auf -1 testen, um Fehlermeldungen 
abzufangen.  Timeout ist es nur, wenn 0 zurückgegeben wird; Du meldest 
aber Timeout bei allen Werten != 1.

Dann aber sagt der Rückkehrwert (r) (wenn kein Fehler aufgetreten ist) 
aus, wie viele Bits in allen drei Sets (also auch denen, an denen Du 
nicht interessiert bist und die NULL sind) gesetzt sind.  Da Du zum 
Lesen und Schreiben geöffnet hast, sind das mindestens mal schon 2 Bits, 
also würde ich 2 erwarten und auf > 0 prüfen.

EDIT:  Streiche den letzten Absatz; ich habe gerade nachgeschaut und mit 
NULL übergebene Sets zählen nicht.  Dennoch würde ich anders auf Fehler 
testen und Fehler nicht dem Timeout zuschlagen.

von Rolf Magnus (Gast)


Lesenswert?

> Beide Ergebnisse brachten nur ein Timeout.

Bei dir sind alle Rückgabewerte außer 1 ein Timeout. Vielleicht gibt es 
aber auch irgendeinen Fehler, den du deshalb nicht bemerkst. Teste mal, 
ob der Rückgabewert -1 ist und lass dir dann die Fehlermeldung ausgeben.
Übrigens: Wozu dienen diese Massen an stty-Aufrufen?

von Christian L. (christianlienen)


Lesenswert?

Vielen Dank für eure Bemühungen :)
Das Problem hat sich jedoch selbst aus der Welt geschafft.
Ich habe nochmal alle Verweise auf die Serielle Schnittstelle überprüft 
und musste feststellen, dass nicht alle auf ttyUSB0, sondern ein Punkt 
noch auf dem Ursprünglichen ttyS0 eingestellt war.
Trotzdem Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.