Grundsätzlich hast du da recht.
Die Treffer von MS hab ich auch schon alle ausprobiert und die liefern auch alle was aus.
Da kommen aber immer wieder Paketendezeichen rein, die ich nicht wegbekomme.
Egal was ich bisher konfiguriert habe und synaser/sdposerial macht das eben nicht.
Hier ein Beispiel:
Das gibt MS-Serialport aus:
A0 23 0 90
A0 2
3 1 90
A2349
A0 23 3 90
A0
23 4 90
A0 23
5 90
A0 23 6 90
I
I75
A2³49
A0 23
7 90
A2349
I
I75
A2³49
A0 23 8 90
Und das hier sdposerial:
A0 23 0 90
A0 23 1 90
A2349
A0 23 3 90
A0 23 4 90
A0 23 5 90
A0 23 6 90
I
I75
A2³49
A0 23 7 90
A2349
I
I75
A2³49
A0 23 8 90
Event-Übergabe an C Sharp mittels DLL
Re: Event-Übergabe an C Sharp mittels DLL
Sieht für mich aus, dass das Zeilenende nicht erkannt wird.
Musst du mal genauer untersuchen, ob da ein #10 oder #13 oder beides kommt.
Musst du mal genauer untersuchen, ob da ein #10 oder #13 oder beides kommt.
Gruß, Michael
Re: Event-Übergabe an C Sharp mittels DLL
Ja, da kommen in C# zuviel #10 und #13 rein. Und auch nur sporadisch ohne Regelmäßigkeit.
Die falschen kann ich bisher als solche nicht identifizieren und bekomme sie nicht weg.
Die falschen kann ich bisher als solche nicht identifizieren und bekomme sie nicht weg.
Re: Event-Übergabe an C Sharp mittels DLL
könnte auch am WriteLn aus dem Beispiel liegen.
Re: Event-Übergabe an C Sharp mittels DLL
Welches WriteLn meinst du?
Re: Event-Übergabe an C Sharp mittels DLL
Code: Alles auswählen
public static void Read()
{
while (_continue)
{
try
{
string message = _serialPort.ReadLine();
Console.WriteLine(message);
}
catch (TimeoutException) { }
}
}
- af0815
- Lazarusforum e. V.
- Beiträge: 6848
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Event-Übergabe an C Sharp mittels DLL
Ich gehe bei seriellen Kommunikationen immer davon aus, das es ein Datenstream ist, den ich selbst aufbereiten muss. Daher lese ich jeden Teil in einen kontinuierlichen Puffer ein und zerlege den selbst soweit wie möglich. Damit kann ich doppelte Endzeichen, halbe Übertragungen bekämpfen. Die halben Übertragungen, die durch TimeOuts oder stocken im Device passieren sehe ich gar nicht, weil ich immer auf definierte Anfangs bzw. Endzeichen (wie CRLF, LF,CR) warte und dann erst den String zerlege.
Besonders so mancher Industriedrucker oder Barcodescanner macht dir sonst schöne Probleme.
Die Automatik im Endkennzeichen, die man beim Synaser verwenden kann, habe ich nicht aktiv. Ich verwende den Callback wo ich alles geliefert bekomme.
Besonders so mancher Industriedrucker oder Barcodescanner macht dir sonst schöne Probleme.
Die Automatik im Endkennzeichen, die man beim Synaser verwenden kann, habe ich nicht aktiv. Ich verwende den Callback wo ich alles geliefert bekomme.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).