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 3 von 3     123   
messie

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 07:33
Scheint an Deiner Übertragunsgsstruktur zu liegen. Du musst Anfang und Ende finden. Was schickst Du denn für eine Abschlusssequenz, wenn die Übertragung des Prozessors beendet ist? CR/LF oder so?

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

n/a Beiträge
 
#22

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 08:36
so nun hab ichs das schon mal geschafft, der string ist mit den richtigen daten gefüllt. es wird die zeichenkette im memo und im label agezeigt allerdings kommt es im memo noch manchmal zu störungen, bei denen dann nicht die ganze zeil erichtig übretragen wird.

Code dazu:
Delphi-Quellcode:
procedure TForm3.ComPort1RxBuf(Sender: TObject; const Buffer; Count: Integer);
var
RXStr_LS1 : string;
begin
sleep(568);
ComPort1.Readstr(Strx, 20);
 Memo1.Lines.Add(strx);
if Strx = 'MV 26,92km/h 5,76m/sthen
 label24.caption := strx;

Application.ProcessMessages;
end;

JETZT würde ich aber noch gerne aus der zeichenkette die beiden geschwindigkeiten auslesen und einzelen in einem label anzeigen lassen. dazu hab ich mir mal so möglichkeiten zur extraction angesehen, wie expect(),.... aber ich kenn mich da gar nicht aus. Wie könnt ich das am besten machen??
  Mit Zitat antworten Zitat
oki

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 08:44
Na denn, prüfe auf Vorkommen MV + #$20, lese erste Geschwindigkeit mittels Pos und Copy bis zum nächsten Leerzeichen und zweite Geschwindigkeit in gleicher Form aus und die Welt ist wieder in Ordnung.

oki
42
  Mit Zitat antworten Zitat
messie

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 08:51
Zitat von oki:
Na denn, prüfe auf Vorkommen MV + #$20, lese erste Geschwindigkeit mittels Pos und Copy bis zum nächsten Leerzeichen und zweite Geschwindigkeit in gleicher Form aus und die Welt ist wieder in Ordnung.

oki
Zusätzlich hilft noch delete(). Aber ich würde auch prüfen, ob Du auch genug Zeichen im Puffer hast. Gibt es variable Längen (z.B. 5m/s ist kürzer als 111 m/s, füllt Du das mit Nullen auf?). Wenn Du am Ende der Sequenz vom µC ein #13 schickst, kannst Du das Ende erkennen (und damit ob Du eine vollständige Sequenz hast), das ist eins der üblichen Verfahren.

Grüße, Messie
  Mit Zitat antworten Zitat
oki

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 08:54
Zitat von messie:
Zusätzlich hilft noch delete(). Aber ich würde auch prüfen, ob Du auch genug Zeichen im Puffer hast. Gibt es variable Längen (z.B. 5m/s ist kürzer als 111 m/s, füllt Du das mit Nullen auf?). Wenn Du am Ende der Sequenz vom µC ein #13 schickst, kannst Du das Ende erkennen (und damit ob Du eine vollständige Sequenz hast), das ist eins der üblichen Verfahren.

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

n/a Beiträge
 
#26

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 10:28
Danke für die schnellen Anworten Leute, aber ich check nicht wie ich pos() und copy() richtig einsetzen soll.

Und das funzt auch nicht:

Delphi-Quellcode:
if Strx = ('MV' + #$20) then
 label24.caption := strx;
@messie
ich fülle die werte mit nullen auf also an der stellenanzahl und belegung ändert sich gar nichts, Wie hilft mir das weiter?
  Mit Zitat antworten Zitat
messie

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 16:57
Zitat von Dark Angel:
das funzt auch nicht:
Delphi-Quellcode:
if Strx = ('MV' + #$20) then
 label24.caption := strx;
Logisch, denn Du liest ja 20 Zeichen in die Variable ein und fragst dann, ob die Variable GLEICH der 3 Zeichen ist. Kann also nicht gehen.
Eher mit Pos:
Delphi-Quellcode:
if Pos('MV'+#20,strx) = 1 then
begin
  //aha, Du bist am Beginn Deiner Sequenz
end;

//andere Variante

if Pos('MV'+#20,strx) > 0 then //ist die 3er-Squenz in der Variable enthalten?
begin
  i := Pos('MV'+#20,strx); //Anfang suchen
  strZ := copy(strx,i+4,5);//damit solltest Du "26,92" im Kasten haben.
end;
Alles ungetestet.

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

n/a Beiträge
 
#28

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 18:34
WOW vielen herzlichen DANK es klappt. JUHU


Aber leider wars das noch nicht. Ich muss ja auch was senden. mit:

  ComPort1.WriteStr('TEST'); müsste doch eigentlich klappen oder? nur wie überprüf ichs am PC obs auch rausgegangen ist. Terminalprob hätt ich versucht aber ich kann ja nicht mit dem Programm und dem Hterm eine Verbindung aufbauen.

Habt Ihr ne idee??
  Mit Zitat antworten Zitat
messie

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

Re: Verbindung mit COM-Schnittstelle aufbauen über TComPort

  Alt 17. Jul 2008, 19:06
Also eine Überprüfung der gesendeten Sachen ist nicht vorgesehen. Die Daten werden ins COM-Register geschrieben und dann irgendwie umgesetzt. Das macht unter Windows der Treiber und jeder macht es anders (sonst gäbe es keine virtuellen Ports einer BT-Hardware ). Da musst Du tatsächlich einen anderen Rechner mit Hyperterminal dranhängen (oder etwas Vergleichbares). Ich hab' für solche Zwecke immer ein ein Lauscherkabel bei mir - Du verbindest Deinen µC mit dem PC und lässt es laufen - am Lauscherport hängst Du Dein Notebook oder notfalls ein Oszi dran. Funzt meistens prima.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 09:44 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