AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Senden und Empfangen mit Dejan ComPort
Thema durchsuchen
Ansicht
Themen-Optionen

Senden und Empfangen mit Dejan ComPort

Ein Thema von EccoBravo · begonnen am 22. Dez 2004 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

Senden und Empfangen mit Dejan ComPort

  Alt 22. Dez 2004, 16:18
Hallo, ich komme mit dem (?asynchronen?) Datensenden/-empfangen über serielle Schnittstelle nicht klar.
Ich sende über COM1 einen Befehl an ein Messgerät, warte einige Zeit und lese dann den seriellen Port mit der Antwort wieder aus (weil ich es nicht anders kann/weiss). Bei mir sieht es ungefähr so aus

Delphi-Quellcode:
procedure MessgeraetAbfragen;
var
    stri : string;
begin
    ComPort.Open;
    Stri:'WERT'+#13#10;
    ComPort.WriteStr(Stri); // senden eines Messbefehls an das Messgerät
    windows.Beep(100,150); // dem Messgerät Zeit zum Überlegen lassen
    ComPort.ReadStr(Stri,100); // Messwert vom Messgerät auslesen
    ComPort.Close;
end;
Ja, das ist wohl etwas komisch von mir programmiert
Nun braucht das Messgerät für jede Anfrage unterschiedlich viel Zeit zum Reagieren, und das Messgerät liefert mir öfters falsche Rückantworten, weil es entweder noch nicht so weit ist oder die Frage längst überfällig ist.
Wie kann man dieses Problem lösen, wann weiß man, wann das Messgerät eine fertige Antwort auf dem seriellen Port bereitgestellt hat?

Vielen Dank für Hilfe und ein frohes Fest

EccoBravo

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Senden und Empfangen mit Dejan ComPort

  Alt 22. Dez 2004, 16:29
Hi!

Mit welcher Komponente greifst du denn auf den Com-Port zu?


Ciao Frederic

P.S. Für Code bitte verwenden.
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 09:30
Hallo Frederic,

ich verwende nur die Komponente von Dejan TComPort.

Gruesse

EccoBravo
  Mit Zitat antworten Zitat
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 10:18
Hi,

die meisten ComPort Komponenten haben irgendwo ein Ereigniss OnEventChar oder so ähnlich. Das wird ausgelöst sobald ein Zeichen am ComPort eintrifft. Dieses Ereigniss solltes du mit einer Funktion hinterlegen.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 10:29
Danke aber -

Das Messgerät sender Zeichenketten zurück, wann ist ein Messgerät mit dem Rücksenden einer Zeichenkette fertig?

Gruss

EccoBravo
  Mit Zitat antworten Zitat
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 12:15
Sendet das Messgerät verschiedene Zeichenketten?

Normalerweise läuft es so ab:

OnEventChar wird ausgelöst -> mit ComportCompo.ReceiveText oder ähnlicher Funktion Zeichenkette abholen und verarbeiten.

Sollten mehrere Zeichenketten kommen dann wird das OnEventChar öfters ausgelöst, da die meisten Compos nach einer Abholung der Zeichenkette wieder in den Listener-Modus gehen.
Bei mehreren Zeichenketten muss aber der Buffer entsprechend hochgesetzt werden, damit nix verloren geht.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 13:31
Danke danke,
- (ComPortRxChar) -
nun arbeiten diese Befehle leider asynchron, das heißt, während man auf die Schnittstelle wartet arbeitet das Programm (an einer anderen Stelle) weiter.
Wenn man zeitsensitiv verschiedene Set/Read-Befehle mit dem Messgerät aushandelt, weis das Programm irgendwann nicht mehr welche Antwort zu welcher Frage gehört und alles gerät durcheinander.
Fazit: Funktionieren würde Dein Vorschlag bei synchroner Arbeitsweise der Schnittstellenoperation.
Das sind die Hintergründe meiner NeoGreenhornFrage.
Wie kann man dieses Problem am gescheitesten umgehen ?

Danke

EccoBravo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 14:49
Das macht man so, daß der Empfänger dem Sender STOP sagt, bis die Daten empfangen sind und wenn wieder Platz ist, dann sagt er dem Sender wieder START. Dadurch geht dann nichts verloren. Für so was gibt es Protokolle, Handshake usw. Und das muß auf beiden Seiten richtig eingestellt sein. Die Komponente hat mit Sicherheit ein Feld im OI, wo man das einstellt. Vermutlich was mit Optionen.

Da ich allerdings nur AsyncPro für so was verwende, weiß ich nicht, wie das bei Dir geht. Ich würde mir das mal ansehen, zumal da ein richtiges Handbuch dabei ist. Und das ist bei serieller Kommunikation unverzichtbar.
Gruß
Hansa
  Mit Zitat antworten Zitat
Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Senden und Empfangen mit Dejan ComPort

  Alt 23. Dez 2004, 15:36
Ich arbeite auch sehr gerne mit der TSerial Komponente von der Zeitschrift Toolbox.
Ansonsten scließ ich mich Hansa an.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#10

Re: Senden und Empfangen mit Dejan ComPort

  Alt 30. Dez 2004, 22:02
Hallo,

Danke für die Tips, ich arbeite mit D7 und dafür gibt es kein TSerial,

Guten Rutsch

EB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:22 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