AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

async Fragen

Ein Thema von xeus · begonnen am 12. Sep 2005 · letzter Beitrag vom 10. Dez 2005
Antwort Antwort
Seite 3 von 5     123 45      
xeus

Registriert seit: 12. Sep 2005
31 Beiträge
 
#21

Re: async Fragen

  Alt 14. Sep 2005, 09:28
Ich ´bins mal wieder, steh schon wieder vor einem problem:

ist es irgendwie möglich anstatt 1 ner antwort drei zu bekommen?
aber jede dieser antworten muss abgearbeitet werden.

z.b

antwort a:8 byte
antwort b:8 byte
antwort c:8 byte

antwort a wird das 2. byte in die var x hinterlegt
antwort b wird das 8. byte in die var y hinterlegt
antwort c wird das 2,3. byte in die var w,z hinterlegt

ist so was möglich???

gruß

xeus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#22

Re: async Fragen

  Alt 14. Sep 2005, 10:11
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 auch solche, auf die mehrere Antworten eingehen. Auf den letzten Fall scheinst du anzuspielen.

Habe ich bis hierher alles richtig verstanden?

Deine drei Antworten kommen hintereinander weg ohne hand shaking? Weisst du vorher wieviele Antwort-Pakete eingehen werden oder ist die Anzahl eine Überraschung?

marabu
  Mit Zitat antworten Zitat
xeus

Registriert seit: 12. Sep 2005
31 Beiträge
 
#23

Re: async Fragen

  Alt 14. Sep 2005, 10:22
Also, ich sende eine anfrage:

z.b gib mir die spannung

adr. 2
commando. 50
par.32
par.32
par.32
par.32
par.32
par.32
clcl.3
clch.177

daraufhin bekomme ich z.b

transstat. 0
stat. 6
e3. 0
e2.12
e1. 5
e0. 1
clcl.4
clc.98

aus den bytes e3-e0 berechne ich dan den integer z.b

spannung 200


diese 200 lass ich mir z.b im label1 anzeigen.

nun will ich z.b die alle werte zyklisch nacheinander abfragen, aber sie müssen wegen der weiterverarbeitung natürlich seperat hinterlegt werden, damit ich sie z.b jeden wert in einem anderen label ausgeben kann


ich stell mir das so vor

frage1
frage2
frage3
usw

antwort1 => in x1 hinterlegt
antwort2 => in x2 hinterlegt
antwort3


usw


kannst du mir helfen????
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#24

Re: async Fragen

  Alt 14. Sep 2005, 10:29
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
  Mit Zitat antworten Zitat
xeus

Registriert seit: 12. Sep 2005
31 Beiträge
 
#25

Re: async Fragen

  Alt 14. Sep 2005, 10:36
sehr richtig, ich will mehrere fragen nacheinander stellen


die problematik, ich hoffe verständlich, gestellt

es funktioniert schon, wenn ich auf button1click (frage U stell), dass er mir dann die passende antwort sendet und mir den wert in label1 (für U)ausgibt.
doch wenn ich auf button2 click (Frage A stell), soll er mir doch den wert nicht im label1 für u ausgeben sondern z.b im label2 für A

ich hoff du verstehst was ich mein
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#26

Re: async Fragen

  Alt 14. Sep 2005, 10:43
Wir dir denn in der Antwort vom Gerät gesagt was die Antwort beinhaltet? (Ich frage jetzt aber nicht noch einmal nach dem Befehlsprotokoll des Gerätes).
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#27

Re: async Fragen

  Alt 14. Sep 2005, 10:45
Jetzt, ja.

Zu deinem ReceiveBuffer1 führe noch eine weitere Variable ein:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
  ...
  private
    CommandCode: Char;
    ReceiveBuffer1: array of byte;
  end;
Wenn du dein Command mit PutString() sendest, dann speichere es auch gleich noch in CommandCode ab. So kannst du beim Eintreffen der Antwort erkennen, wo du die Werte sichtbar machen willst:

Delphi-Quellcode:
begin
  ...
  case CommandCode of
    'U': LabelU.Caption := IntToStr(Messwert(ReceiveBuffer1));
    'A': LabelA.Caption := ...
  end;
end;
Die Funktion Messwert() habe ich mir eben ausgedacht - nur damit du die nicht irgendwo suchst...

marabu
  Mit Zitat antworten Zitat
xeus

Registriert seit: 12. Sep 2005
31 Beiträge
 
#28

Re: async Fragen

  Alt 14. Sep 2005, 11:02
das problem ist, in der antwort ist weder die adresse des geräts empfangenen geräts noch die info um welchen wert es sich handelt. kann mann es nicht so machen, dass mann sagt receivebuffer[0] ist begrenzt bis auf [7] alles was nun empfangen wird,wird im receivebuffer2 gespeichert usw.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#29

Re: async Fragen

  Alt 14. Sep 2005, 11:26
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, dann kannst du CommandCode und DeviceNumber auswerten:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
  ...
  private
    CommandCode: Char;
    DeviceNumber: Byte;
    RequestPending: boolean;
    ReceiveBuffer: array of byte;
  end;
Wenn du jetzt beim senden noch zusätzlich die Variable RequestPending auf TRUE setzt und im TriggerAvail-Ereignis diese Variable wieder auf FALSE setzt, dann kannst du die Abfragen serialisieren und es gibt keine überschriebenen Daten im Empfangspuffer.

marabu
  Mit Zitat antworten Zitat
xeus

Registriert seit: 12. Sep 2005
31 Beiträge
 
#30

Re: async Fragen

  Alt 14. Sep 2005, 12:15
also wär es theoauch möglich, das ich für jeden wert eine eigene frage hät und für jeden wert einen entsprechenden buffer, so das ich nacheinander fragen stelle und pro frage einen eigenen antwortbuffer bekomme?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz