Probleme mit serieller Schnittstelle

Gast #1728946
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
Angehängte Dateien:
#1728984
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.
Gast #1729001
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren