![]() |
Re: async Fragen
Bevor ich dir einen Ringpuffer entwerfe - den Ringpuffer brauchst du, wenn dein Messgerät kontinuierliche oder auch periodische Datenströme produziert. Wenn die Kommunikation mit dem Gerät immer nur nach dem Muster kurze Frage knappe Antwort stattfindet, dann besteht keine Gefahr, dass Daten überschrieben werden, bevor sie von dir verarbeitet wurden.
Also: arbeitest du mit Datenströmen? Will heißen, kannst du das Gerät in einen Dauersendemodus schalten, so daß Zeit-Messreihen übermittelt werden, die erst durch ein Kommando von dir wieder beendet werden? marabu |
Re: async Fragen
also die kommunikation ist wie folgt aufgebaut:
ich sende 10 bytes 1. Empfängeradresse, (da es mehr geräte sind) 2. Commando (welche info will ich) 3-8. sind zusätzliche parameter zum commando 9-10 ist fürs clc auf diese anfrage bekomme ich eine antwort mit acht bytes 1. transmissionstate 2. status 3-6. parameter 7-8 clc ich will die inhalte der bytes eigentlich nur in labels und einem memo darstellen. wenn ich dann wieder eine anfrage stell, sollen die labels gelöscht und der neue wert angezeigt werden. im memo am besten add line |
Re: async Fragen
Sieht nach einem rein sequentiellen Vorgehen aus. Du kannst mit dem einen dynamischen Puffer arbeiten. Gefahr für einen Datenverlust besteht nur bei Nebenläufigkeit. Viel Erfolg.
marabu |
Re: async Fragen
hhaaaaa, du willst mich doch bitte jetzt nich damit allein lassen;schlurz
wenn ich deine prozedur anwende, liefert er mir leider nur byte 7 und 8 (wobei er es als byte 0 und 1 anzeigt), die anderen werden im memo nicht mit aufgelistet. bin fast am verzweifeln!!! |
Re: async Fragen
supeer habs geschaft, dass er mir sämtliche bytes anzeigt. das einzige manko ist jetzt nur noch, das er abwechselnd vor jedes byte 'byte0, byte1' anzeigt, kann ich die empfangenen bytes nicht jeweils in eine integer hinterlegen? um sie dann in labels anzeigen zu lassen?
|
Re: async Fragen
Sicher doch - alles was du willst:
Delphi-Quellcode:
marabu
begin
Label1.Caption := IntToStr(ReceiveBuffer1[0]); Label2.Caption := CardToDual(ReceiveBuffer1[1]); Label3.Caption := IntToHex(ReceiveBuffer1[2], 2); ... end; |
Re: async Fragen
Zitat:
Jetzt zeigt er Byte1 und Byte2 ja nicht als Dezimalzahl an ;-) Entschuldigung. Das musste sein. |
Re: async Fragen
mit der methode komm ich irgendwie nicht klar, kannst du mir bitte zeigen, wie ich z.b. memo die erste zeile (den wert) in eine variable setzen kann... usw?;
weil mit deiner methode bringt er mir die reihung durcheinander nochmals vielen dank |
Re: async Fragen
Die Ausgabe im Memo ist doch nur ein Beispiel für eine Visualisierung gewesen. So, wie die Daten ins Memo geschrieben werden, kannst du sie natürlich überall hin schreiben. Wenn du sie gerne auf einer Label-Komponente anzeigen möchtest, dann sagst du halt nicht Memo.Lines.Add() sondern:
Delphi-Quellcode:
Auf jeden Fall holst du dir den Wert nicht aus dem Memo, sondern direkt aus deinem Puffer.
CLCLabel.Caption := IntToStr(ReceiveBuffer1[7]);
marabu |
Re: async Fragen
WUNDERFULL danke du profi. werd dich heut mit sicherheit noch öffter nerven. bis jetzt herzlichen dank
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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