AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Verbindung mit COM-Schnittstelle aufbauen über TComPort
Thema durchsuchen
Ansicht
Themen-Optionen

Verbindung mit COM-Schnittstelle aufbauen über TComPort

Ein Thema von Dark Angel · begonnen am 15. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Seite 2 von 3     12 3      
Dark Angel
(Gast)

n/a Beiträge
 
#11

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 12:18
ja aber sollte es denn nicht beim stesten schon einnigermaßen gehen.


EDIT: Ja du hast recht, bei der exe klappts. Gibt es eine Möglichkeit erkennen zulassen (ohne selbst Daten versenden zu müssen), dass zB
der andere Teilnehmer keine Verbindung mehr hat (etwa durch Stromunterbrechung)
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 12:34
Zitat von Dark Angel:
Gibt es eine Möglichkeit erkennen zulassen (ohne selbst Daten versenden zu müssen), dass zB
der andere Teilnehmer keine Verbindung mehr hat (etwa durch Stromunterbrechung)
Ja, Du kannst mit einem Heartbeat arbeiten. Lass Deinen Prozessor im Leerlauf ein Zeichen senden (z.B. jede sec), was sonst nicht vorkommt. Das Programm muss dann unterscheiden, ob das jetzt das Heartbeat-Signal oder das Start/Stopp-Signal ist und entsprechend handeln.
Wenn das Heartbeat-Signal kommt, setzt Du eine Variable auf Null. Dann nimmst Du einen Timer, der die Variable inkrementiert. Wenn im Ontimer der Wert größer als der Alarmwert ist, kannst Du eine Nachricht bringen und die Schnittstelle schliessen.

Grüße, Messie
  Mit Zitat antworten Zitat
Dark Angel
(Gast)

n/a Beiträge
 
#13

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 13:12
Ja einen Heartbeat hab ich nur wie mach ich des mitm Timer, der arbeitet doch im sec takt oder nicht mein heartbeat kommt alle 0,568s aber einer darf schon mal verloren gehen, zur Sicherheit.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#14

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 13:19
Du kannst den Timer doch mit dem Property Intervall auf 250ms oder sonst was einstellen.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Dark Angel
(Gast)

n/a Beiträge
 
#15

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 19:42
Ach das ist ja schön das wüsste ich noch gar nicht.

damit ist das Problem gelöst und ich stehe vorm nächsten. In Comterminal sehe ich die Zeiche und wie bekomme ich die jetzt in eine Variable??

EDIT: Wenn ich schreibe:


ComPort.Readstr(Str, count); //count = irgendwas zB.30
showmessage(str);

Dann sehe ich in der message den str aber wenn ich

label1.caption := str;

mache dann kommt gar nichts


WIESO???
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 16. Jul 2008, 21:09
Eigentlich solltest du den String auch im Label sehen. Setz dir doch mal einen Haltepunkt an der Stelle und schau im Debugger nach, was in dem String drin steht.

Versuch's mal mit einem Sleep(500) vor dem ComPort.ReadStr(...);, nur zu Testzwecken.

Ansonsten schau dir mal die Ereignisse OnRxChar oder OnRxBuf an, die werden ausgelöst wenn ein Zeichen eintrifft oder wenn der Puffer voll ist.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Dark Angel
(Gast)

n/a Beiträge
 
#17

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 01:50
@ Dicby0

also das mit dem debugger kann ich nicht, aber ich hab nen sleep davor gesetzt und jetzt blinkt ganz kurz der übertragene Wert auf und dann ist im string '' (also nichts) doch das Senden ist alle 0,5sec und das sieht man auch im comterminarl. kann es sein, dass im sting alles steht, also wenn der alle 0,5sec das überträgt und das dann etwa 20ms dauert und der rest der Zeit wird ja nichts übertragen, dass also die meiste zeit nichts im string steht.

Und noch was worein soll ich die ReadStr schreiben, habs nämlich mal bei allen probiert. Klappt nirgens

procedure TForm3.ComPort1RxFlag(Sender: TObject); ODER
procedure TForm3.ComDataPacket1Packet(Sender: TObject; const Str: string); ODER
procedure TForm3.ComPort1RxChar(Sender: TObject; Count: Integer); ODER
procedure TForm3.ComPort1RxBuf(Sender: TObject; const Buffer; Count: Integer);

Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 06:32
Möglicherweise ist das Programm so beschäftigt, das es gar nicht auf den Repaint-Request reagiert. Füg mal Application.ProcessMessages; nach der Zuweisung an den Label aus.
Markus Kinzler
  Mit Zitat antworten Zitat
Dark Angel
(Gast)

n/a Beiträge
 
#19

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 06:44
Naja es ist nicht unbedingt besser, das label zeigt mir nun zwar manchmal die richtige reihenfolge "MV 26,92km/h 5,76m/s" aber auch manchmal wieder nichts odr nur "V 26,92km/h 5,76m/s" oder nur "M".

ich will daraus ja die beiden Zahlen extrahieren, die sich je nach Messwert ändern, wie kann ich das bei diesen schwankenden werten anstellen??
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 07:30
lese den empfangenen Wert in eine Variable ein (oder adde ihn in eine Stringliste) oder was auch immer. Dann kannst du an anderer Stelle diese Werte anzeigen. Der Einfachheit halber tu es mal in einem Memo.

Für deinen Beispiel-Code sollte das dann so aussehen:
Delphi-Quellcode:
ComPort.Readstr(Str, count); //count = irgendwas zB.30
Memo1.Lines.Add(str);
Application.ProcessMessages;
du wirst dehen, wie dein Memo anfängt sich mit den Werten zu füllen.
Der Hinweis mit Application.ProcessMessages ist berechtigt. Wenn dein Port ständig streamt wird andauernd dein Read-Ereignis aufgerufen und deine Anwendung kommt dann mit dem Neuzeichnen nicht mehr hinterher.

Gruß oki
42
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:45 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