![]() |
async Fragen
Hallo zusammen,
mit hilfe von profis aus diesem board, habe ich es schon geschaft binäre daten über den comport zusenden. apdcomport1.putstring(#10); nun ist nur noch das problem, dass ich auch daten empfangen muss nun hab ich allerdings keinen plan wie ich das anstellen kann. am schönsten wärs, wenn ich eine funktion oder prozedur hätte, der immer 1 byte von den insgesammt acht in eine variable speichert, also dass ich am schluss insgesammt acht variablen hab z.b. byte1 - byte8. wär super wenn mir bei meinem problem jemand helfen könnte xeus |
Re: async Fragen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich will ja nicht die profis unterlaufen, aber ich hätt da auch eine funktionierende Methode für Senden und Empfangen vom Com-Port anzubieten: Man lade sich diese DLL runter ![]() ich hab mir so schon selbst ein kleines terminal für die RS232 geschrieben. Das einzige problem ist, dass ich bisher auf keine Interrupts der Schnittstelle hören kann. Gruß, Borti |
Re: async Fragen
Liste der Anhänge anzeigen (Anzahl: 1)
Oder, ganz ohne DLL, dafür uralt, mit Komponente und echt simpel:
Die war noch Freeware: Ich hatte nie Probleme damit, obwohl die Implementierung eines Protokolls nicht so einfach ist, da die Komponente komplett eventgesteuert ist. Aber einen Versuch ists wert... |
Re: async Fragen
Hi,
nur für den Fall, dass AsyncPro immer noch eine Chance hat - eine Antwort hatte ich im original thread gepostet: ![]() Grüße vom marabu |
Re: async Fragen
Will eigentlich schon mit async weitermachen.
hab den code soweit übernommen, schmeist er mir einige fehler aus: comport: undef bezeichnung receivebuffer1: " hilfe, danke |
Re: async Fragen
OK,
hab den fehler selber beheben können. nur zum verstzändniss: die über die schnittstelle eingehenden daten, werden im puffer hinterlegt. in welcher form werden sie hinterlegt, werden alle daten hintereinander eingefügt, oder gibt es für jedes byte einen puffer? oder wie kann ich jedes kommende byte seperat abbarbeiten? am schönsten wäre es, wenn er mir jedes byte in eine var hinterlegt, z.b byte1 = b1 .. byte8 = b8 so das ich mit diesen inhalten in anderen proceduren weiter arbeiten kann. vielen dank |
Re: async Fragen
Hi,
sobald die empfangenen Daten im Empfangspuffer abgelegt wurden, kannst du jedes Byte über seinen Index ansprechen:
Delphi-Quellcode:
Grüße vom marabu
var
i: integer; begin Memo.Clear; for i := Low(ReceiveBuffer1) to High(ReceiveBuffer1) do Memo.Lines.Add(Format('Byte %d hat den Wert %d', [i, ReceiveBuffer1[i]])); end; |
Re: async Fragen
suupppiii,
und wie kann ich den puffer, wieder löschen? |
Re: async Fragen
Delphi-Quellcode:
Aber du wirst doch nicht etwa so weiter machen wollen? Einen "Ringpuffer" hatte ich dir nahe gelegt...
SetLength(ReceiveBuffer1, 0);
marabu |
Re: async Fragen
ertsmal danke, für deine ganze hilfe.
ich bin mir sicher, das es mit einem ringbuffer besser geht. nur das problem ist, dass ich nicht weiss was ein ringbuffer ist, und wie ich ihn erzeuge |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz