Delphi-PRAXiS
Seite 1 von 3  1 23      

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)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 1 von 3  1 23      

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