Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Daten auslesen mit Asyc Pro (https://www.delphipraxis.net/73844-daten-auslesen-mit-asyc-pro.html)

Mucki 24. Jul 2006 20:25


Daten auslesen mit Asyc Pro
 
Hi!?

Ich möchte Daten (9600, pEVEN, 8, 1)über die RS-232 Schnittstelle auslesen.

Ich benutze dafür die Komponente AsyncPro.

Allerdings habe ich Schwierigkeiten Daten zu senden bzw. zu empfangen.

Kann mir jemand einen Tipp geben wie ich Daten im Hex Format senden
und empfangen kann. Möchte die Daten dann weiter verarbeiten (speichern und wandeln)

Ich trete seit einigen Tagen auf der Stelle und komme einfach nicht weiter... Frust. :gruebel:

Zuerst lief es ganz gut, habe den ComPort konfiguriert und einen Terminal
zur Kontrolle des Datenverkehrs eingefügt.

Mit ApdComPort1.Output konnte ich Daten senden und diese auch auf dem
Terminal sehen. Das klappt jetzt nicht mehr. Egal was ich sende, der Terminal
bleibt leer. :wall:

Über jedem Vorschlag der zur Lösung führt, wäre ich sehr dankbar. :)

Grüße Mucki

Der_Unwissende 24. Jul 2006 21:28

Re: Daten auslesen mit Asyc Pro
 
Hi,
ich hab leider keine großartigen Tipps was AsyncPro angeht (benutze lieber den TComPort), aber was genau meinst du denn damit, dass du Daten im Hex Format verschicken möchtest? Du verschickst nur einzelne Bytes, die Darstellung in deinem Editor ist dem Kabel relativ egal. Du kannst den gleichen Wert (soweit unterstütz von AsyncPro) auch als Char, dezimal oder sonst wie verschicken. An dem eigentlichen Wert ändert das nichts.
Wenn du schauen willst, was gesendet wird (auch empfangen), dann bietet sich SysInternals an. Die haben einen Treiber, der sich zwischen deine Ports und Windows hängt. Du kannst dann alles (sowohl als Character/String als auch Sedezimal) sehen, was ankommt bzw. verschickt wird.

Gruß Der Unwissende

Hansa 24. Jul 2006 23:07

Re: Daten auslesen mit Asyc Pro
 
9600 Baud scheint Dein Ernst zu sein. :shock:

Trotzdem : was soll das werden ? Wie groß ist die zu übertragende Datenmenge ? Wie oft wird was übertragen ?

Mucki 25. Jul 2006 20:06

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von Der_Unwissende
Hi,
ich hab leider keine großartigen Tipps was AsyncPro angeht (benutze lieber den TComPort), aber was genau meinst du denn damit, dass du Daten im Hex Format verschicken möchtest? Du verschickst nur einzelne Bytes, die Darstellung in deinem Editor ist dem Kabel relativ egal. Du kannst den gleichen Wert (soweit unterstütz von AsyncPro) auch als Char, dezimal oder sonst wie verschicken. An dem eigentlichen Wert ändert das nichts.
Wenn du schauen willst, was gesendet wird (auch empfangen), dann bietet sich SysInternals an. Die haben einen Treiber, der sich zwischen deine Ports und Windows hängt. Du kannst dann alles (sowohl als Character/String als auch Sedezimal) sehen, was ankommt bzw. verschickt wird.

Gruß Der Unwissende

Hi, Danke erst Mal für Deine Antwort. :)

Ja da hast Du vermutlich recht. Im Prinzip werden Nullen & Einsen gesendet.
Ich habe da eine Anlage, die möchte ich auslesen. Die Daten werden vom Hersteller im Hex Format
angegeben. Das heisst wenn ich das Telegramm zum zum auslesen der Daten sende,
bekomme ich ein Telegramm im Hex Format zurück, welches ich mir dann in Dezimalzahlen wandeln
und speichern (Exeltabelle) möchte.
Nur bekomm ich einfach nicht raus, wie das mit dem senden funktioniert.
Bisher ist alles fehlgeschlagen. :wall:
Ist TComPort auch eine Komponente und kann man das mit der realisieren?

EDatabaseError 25. Jul 2006 20:08

Re: Daten auslesen mit Asyc Pro
 
bei der Async Komponente ist eine Gute Doku dabei. Versuch mal daraus schlau zu werden. Wenn nicht kann ich mal was rauskramen.

Senden: Comm1.Write();

Und zum Empfangen das Ereignis OnRxIrgentwas nicht das mit dem Flag das andere ;-)

Mfg
Tobi

EDatabaseError 25. Jul 2006 20:11

Re: Daten auslesen mit Asyc Pro
 
Sodele:
Senden:
Sti = String mit den zu sendenden Daten
Comm1.Write(Sti[1], Length(Sti));

Inzialisieren:
Comm1.BaudRate := cbgr9600;
Comm1.Databits := da8;
Comm1.Parity := paNone;
Comm1.Stopbits := sb10;
Comm1.DeviceName := 'Com1';
Comm1.Open;

Empfangen:
procedure TMainForm.Comm1RxChar(Sender: TObject; Count: Integer);
var
buffer : array[0..1024] of Char;
begin
Fillchar(Buffer, SizeOf(buffer), 0);
Comm1.Read(Buffer, Count);
end;


Mfg

Mucki 25. Jul 2006 20:18

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von Hansa
9600 Baud scheint Dein Ernst zu sein. :shock:

Trotzdem : was soll das werden ? Wie groß ist die zu übertragende Datenmenge ? Wie oft wird was übertragen ?

Hallo Hansa.

Wieso ist 9600 Baud zuviel, oder zu wenig... eher zu viel meinst Du? :gruebel:

Da bin ich flexibel. Ich möchte ca. 200 Daten (200 Telegramme senden und empfangen).
Das ist die Datenmege die ich transportieren muß. :idea:

Hast Du Erfahrungen mit AsyncPro?
Ich bekomme das einfach nicht gebacken.
Die einfachste Weise etwas zu senden ist Laut Beschreibung,
Comport.output := 'Text';
oder
Comport.PutString (#XX);
zusätzlich noch einen Terminal auf die Form gezogen, zur Überwachung und schon sollte sich etwas tun!
Aber nicht bei mir, am 1.Tag wurden die gesendeten Wörter dargestellt, jetzt nicht mehr.
Jetzt denke ich mir, vielleicht ist ja der Buffer voll und ich muß ihn erst löschen?

Ein toller Tipp, würde mich besser schlafen lassen... :zwinker:

EDatabaseError 25. Jul 2006 20:20

Re: Daten auslesen mit Asyc Pro
 
:roll: Probier das von mir aus das funktioniert ganz bestimmr. Läuft schon in mehreren Projekten.

Mucki 25. Jul 2006 20:22

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
bei der Async Komponente ist eine Gute Doku dabei. Versuch mal daraus schlau zu werden. Wenn nicht kann ich mal was rauskramen.

Senden: Comm1.Write();

Und zum Empfangen das Ereignis OnRxIrgentwas nicht das mit dem Flag das andere ;-)

Mfg
Tobi

O.K.

Die Doku ist halt ganz schön englisch, was ich bis jetzt probiert habe (aus der Doku)
ging nicht. Selbst das Beispiel S.74 oder 79 TpdComport + Terminal geht nicht (mehr).

EDatabaseError 25. Jul 2006 20:24

Re: Daten auslesen mit Asyc Pro
 
was auch wichtig ist du darfst den Port nicht anderweitig belegen. Also kein anderes Termial... darf drauf zugreifen da er sonst gesperrt ist.

(bssst schau den 2. post von mir an)

Mucki 25. Jul 2006 20:26

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
Sodele:
Senden:
Sti = String mit den zu sendenden Daten
Comm1.Write(Sti[1], Length(Sti));

Inzialisieren:
Comm1.BaudRate := cbgr9600;
Comm1.Databits := da8;
Comm1.Parity := paNone;
Comm1.Stopbits := sb10;
Comm1.DeviceName := 'Com1';
Comm1.Open;

Empfangen:
procedure TMainForm.Comm1RxChar(Sender: TObject; Count: Integer);
var
buffer : array[0..1024] of Char;
begin
Fillchar(Buffer, SizeOf(buffer), 0);
Comm1.Read(Buffer, Count);
end;


Mfg

Natürlich werde ich es ausprobieren!! :lol:

Nur ist das jetzt mit AsyncPro? :gruebel:

Danke für den Tipp :-D

Mucki 25. Jul 2006 20:27

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
was auch wichtig ist du darfst den Port nicht anderweitig belegen. Also kein anderes Termial... darf drauf zugreifen da er sonst gesperrt ist.

(bssst schau den 2. post von mir an)

yeeep bin net so schnell...

Mucki 25. Jul 2006 20:33

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
was auch wichtig ist du darfst den Port nicht anderweitig belegen. Also kein anderes Termial... darf drauf zugreifen da er sonst gesperrt ist.

(bssst schau den 2. post von mir an)

Wie kann ich das feststellen?

Mucki 25. Jul 2006 20:36

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
:roll: Probier das von mir aus das funktioniert ganz bestimmr. Läuft schon in mehreren Projekten.

Projekt ist gut... das soll nämlich auch so etwas werden... :pale:
Dann wird sich ja der Quelltext wie daheim fühlen... O.K. O.K. ich höhr ja schon auf. :|

Hansa 25. Jul 2006 21:13

Re: Daten auslesen mit Asyc Pro
 
9600 haben für mich wie Modem ausgesehen. Es geht also lediglich um eine serielle Übertragung von Daten ? Dann müßte der ComPort eigentlich reichen. Das Handshake wird wohl so nicht stimmen. Wie ist das eingestellt ?

EDatabaseError 25. Jul 2006 21:16

Re: Daten auslesen mit Asyc Pro
 
Und läuft schon was???
Die Parity muss im inizialize auf paEven ;-)

Mucki 25. Jul 2006 21:26

Re: Daten auslesen mit Asyc Pro
 
Das Handshake sagst Du?
:gruebel:

Das sagt mir leider nchts, sorry.
Damit habe ich mich noch nicht auseinander gesetzt!

Wie sollte es den aussehen :?:

EDatabaseError 25. Jul 2006 21:26

Re: Daten auslesen mit Asyc Pro
 
Schau mal im OI nach Handshaking würd ich auf Default stellen.

Mucki 25. Jul 2006 21:27

Re: Daten auslesen mit Asyc Pro
 
Zitat:

Zitat von EDatabaseError
Und läuft schon was???
Die Parity muss im inizialize auf paEven ;-)

Ne, komm erst morgen wieder dran. Ich melde mich, danke erst mal für die schnelle Hilfe!

EDatabaseError 25. Jul 2006 21:28

Re: Daten auslesen mit Asyc Pro
 
wenn du garnicht weiter kommst send mir ne PN dann schick ich dir ein fertiges Projekt das du umschreiben musst ;-)

Mucki 25. Jul 2006 21:30

Re: Daten auslesen mit Asyc Pro
 
O.K. das mach ich wenns nicht klappt...

Gruß Mucki

Mucki 26. Jul 2006 21:11

Re: Daten auslesen mit Asyc Pro
 
Ich bekomms nicht hin...

EDatabaseError 26. Jul 2006 21:16

Re: Daten auslesen mit Asyc Pro
 
check mal deine PNs ;-)

Mucki 5. Aug 2006 20:01

Re: Daten auslesen mit Asyc Pro
 
Hallo Leute... :)

ich möchte mich für Eure Hilfe bedanken. :cheers:

Bin jetzt schlauer als vorher, das senden ist jetzt geknackt! :coder:

Danke & Grüsse,

Mucki :nerd:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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