Das Problem ist nur folgendes: Das im Wiki beschriebene Code-Beispiel funktioniert nur einmal pro Session, sprich wenn ich Linux gestartet habe, funktioniert das Programm. Sobald ich es im Terminal mit STRG-C unterbreche und nochmal starte, bekomme ich nur eine endlos lange Schlange an
Code: Alles auswählen
00 00 00 00 00
Code: Alles auswählen
program serialtest;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,SysUtils,Synaser
{ you can add units after this };
var
ser: TBlockSerial;
begin
ser:=TBlockSerial.Create;
sleep(1000);
try
ser.Connect('/dev/ttyUSB0');
Sleep(1000);
ser.config(1200, 7, 'N', SB1, False, False);
Sleep(1000);
Write('Device: ' + ser.Device + ' Status: ' + ser.LastErrorDesc +' '+
Inttostr(ser.LastError));
Sleep(5000);
while True do
Write(IntToHex(ser.RecvByte(10000), 2), ' ');
finally
ser.free;
end;
end.
Code: Alles auswählen
Device: /dev/ttyUSB0 Status: Bad file number 9
Apropos: GTKTerm hat keine Probleme mit der Schnittstelle. GTKTerm kann ich pro Session endlos oft aufrufen, es liest mir immer korrekt die serielle Schnittstelle aus.
Ich hoffe, ihr könnt mir helfen!
mfg