-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
10. Dez 2005
Herzlich willkommen in der Delphi-PRAXiS, Stefan.
Wir haben schon die ganze Zeit auf dich gewartet - allerdings nicht in diesem thread. Mach doch bitte ein Neues Thema auf und, wenn du schon dabei bist, beschreibe dein Vorhaben etwas genauer.
Freundliche Grüße vom marabu
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
19. Sep 2005
Hi xeus,
alles klar bei dir? Lebst du noch? Wie weit ist dein Projekt? Ich hänge dir mal ein bischen Code an. Schmeiß weg, wenn du es nicht mehr brauchst.
Sorgenvolle Grüße vom marabu
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Hi xeus,
noch besser können wir alle helfen, wenn du uns sagst, wo im Netz wir uns ein Handbuch zu deinem Messgerät ziehen können (hai sharky) - oder sage uns wenigstens um welchen Typ / Hersteller es sich handelt. Vielleicht kennt jemand das Gerät oder wir finden irgendwo die passenden Unterlagen. Es sind so viele Fragen noch offen, dass mir manchmal unwohl wird...
marabu
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Etwa so:
CommandCode := Chr(50); // 'U'
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Aufgrund deiner Beispielwerte war schon klar, dass da kein overhead zurückgeschickt wird, aber im Gegenzug bedeutet das: Keine Antwort ohne Frage, rein sequentielles Protokoll. Du kannst natürlich für jedes Gerät einen eigenen ReceiveBuffer definieren, aber du kannst auch einfach zusätzlich zu CommandCode noch eine Variable DeviceNumber vom Typ Byte pflegen. Wenn du dann die Daten empfangen hast,...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Jetzt, ja.
Zu deinem ReceiveBuffer1 führe noch eine weitere Variable ein:
type
TDemoForm = class(TForm)
...
private
CommandCode: Char;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Sieht doch so aus, als ob du für jede Antwort zuerst eine Frage schicken musst. Was meinst du mit zyklisch? Willst du in festen Zeitabständen die Spannung abfragen? Oder willst du möglichst schnell hintereinander Spannung, Stromstärke und CosPhi (beipielsweise) abfragen?
marabu
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
14. Sep 2005
Hi,
seltsame Frage...
Nach meinem Verständnis solltest du mehrere Befehle für das Messgerät zur Verfügung haben, deren Sendeformat immer eine feste Anzahl Bytes umfassen. Jeder Befehl erhält Antwort innerhalb einer bestimmten Zeitspanne (time-out). Auch eine Antwort vom Messgerät hat ein festes Format (8 Byte, Struktur kennst du). Eventuell gibt es Befehle, die keine Antwort erhalten oder...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
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:
CLCLabel.Caption := IntToStr(ReceiveBuffer1);
Auf jeden Fall holst du dir den Wert nicht aus dem Memo,...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
Sicher doch - alles was du willst:
begin
Label1.Caption := IntToStr(ReceiveBuffer1);
Label2.Caption := CardToDual(ReceiveBuffer1);
Label3.Caption := IntToHex(ReceiveBuffer1, 2);
...
end;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
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
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
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...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
SetLength(ReceiveBuffer1, 0);
Aber du wirst doch nicht etwa so weiter machen wollen? Einen "Ringpuffer" hatte ich dir nahe gelegt...
marabu
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
13. Sep 2005
Hi,
sobald die empfangenen Daten im Empfangspuffer abgelegt wurden, kannst du jedes Byte über seinen Index ansprechen:
var
i: integer;
begin
Memo.Clear;
for i := Low(ReceiveBuffer1) to High(ReceiveBuffer1) do
-
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
12. Sep 2005
Hi,
nur für den Fall, dass AsyncPro immer noch eine Chance hat - eine Antwort hatte ich im original thread gepostet: klick
Grüße vom marabu