Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi InfraRot Kabel am Com Port abfragen (https://www.delphipraxis.net/58708-infrarot-kabel-am-com-port-abfragen.html)

AirJordan 11. Dez 2005 14:02


InfraRot Kabel am Com Port abfragen
 
Hallo,

ich habe, als Com-Port Laie, mal eine Frage. Ich setze TMS Async32 und/oder TurboPower Async Professional
ein und möchte ein Gerät, das über ein Infrarot Kabel am Com-1 hängt abfragen.

Wie spreche ich das Gerät überhaupt an? Open Routine ok, Com Port ist auf 1 eingestellt auch ok, aber
das Gerät reagiert nicht drauf.

Ich möchte nur Daten lesen, keine senden! Muss ich die VaComm Komponente noch mit etwas Anderem verbinden?
Oder brauche ich gar eine Art Datenblatt für das Gerät, um zu sehen, was ich ihm senden muss.

Ich wollte eigentlich erstmal alles auslesen, was es so liefert und dann meine Software entsprechend in
der Datenbank etc anpassen und die gelesenen Daten verarbeiten.

Ich hoffe ich habe das Problem soweit verständlich beschrieben. Hier gibt es schon n´Menge Tipps, aber
irgendwie kann ich sie nicht für mein Problem umsetzen.

AirJordan 13. Dez 2005 08:17

Re: InfraRot Kabel am Com Port abfragen
 
Hat keiner einer Idee? Ich habe schon nach den Schnittstellen Parametern der Geräte gegoogelt. Leider ohne Erfolg. Es muss doch möglich sein, ein Gerät am ComPort "anzusprechen" und dann das gelesene zb in eine Datei zu schreiben... ??

Oder mache ich da einen Gedankenfehler?

hitzi 13. Dez 2005 08:24

Re: InfraRot Kabel am Com Port abfragen
 
Steht die Verbindung zu dem anderen IR Gerät schon? Erst nach dem erfolgreichen Herstellen der IR Verbindung kannst du über den jeweiligen COM Port kommunizieren.

AirJordan 13. Dez 2005 08:45

Re: InfraRot Kabel am Com Port abfragen
 
Hallo Hitzi,

wie meinst du das? Man kann mit dem Gerät, das über das Infrarot Kabel angeschlossen ist,
über eine andere Software (die ich durch meine ersetzen möchte :???: ) kommunizieren.

Also Gerät, Infrarot Kabel (hier eine Abbildung: Accu Check Kabel )Treiber etc funzen.

hitzi 13. Dez 2005 09:02

Re: InfraRot Kabel am Com Port abfragen
 
Ich bin bei meinen Handytools mit der seriellen Port Kommunikation in Berührung gekommen. Ich nutze die CPort Komponenten dafür. Diese werden leider nicht weiter entwickelt, aber funktionieren in meinem Fall - Kommunikation über direkt über einen serielle Anschluss, über den seriellen Bluetooth Port, IR (solange ein Port zur Verfügung gestellt wird), USB (Treiber stellen meist auch einen seriellen Port zur Verfügung) - ohne Probleme.

In meinem Fall hängt der IR meistens direkt im Rechner und der Comport wird per IR Treiber bereitgestellt. Dieser Port wird allerdings nur im System aktiv sobald die Verbindung zu einem anderen Gerät steht. Vorher ist der Port nicht im System verfügbar. Deshalb meine Frage im anderen Post.

In deinem Fall hängt der IR Empfänger jedoch schon an einem seriellen Anschluss - das Gerät sollte also wenigstens auf deine Anfragen antworten.
Ein gutes Programm zum Testen von serieller Kommunikationen ist HyperTerminal (Start/Programme/Zubehör/Kommunikation). Stell dort mal eine Verbindung zum COM1 her. Lass die Baudrate lieber niedrig da einige Geräte bei zu hohen Baudraten nicht ordentlich kommunizieren können. Wenn du die Verbindung aufbauen konnte gib mal den Befehl AT* ein. Dieser listet alle verfügbaren Befehle des angeschlossenen Gerätes auf.
Wenn das alles klappt sieht es schonmal sehr gut aus :)

Im nächsten Schritt kannst du mit dem Portmon und der original Software des Gerätes den Kommunikationsablauf beobachten und hast dann eine Grundlage diesen in deinem Programm zu integrieren.

Gruss

chrisw 13. Dez 2005 09:13

Re: InfraRot Kabel am Com Port abfragen
 
Schau mal hier!

AirJordan 13. Dez 2005 09:51

Re: InfraRot Kabel am Com Port abfragen
 
Hallo Thomas, hallo Chris,

wow. :o Danke für eure Tipps. :thumb:

Ich werde das heute Abend mal alles testen. Hier in der Firma kann ich das nicht ausprobieren
Sieht ja nicht schlecht aus, auch der Link von Chris.

Melde mich heute Abend dann nochmal. Roche hat ja bei den neuen Geräten und deren Kabel nur
eine Unterstützung der eigenen Software angekündigt. Ein Schelm wer Böses dabei denkt. :mrgreen:

AirJordan 13. Dez 2005 19:00

Re: InfraRot Kabel am Com Port abfragen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Thomas,

sooo. Über HyperTerminal bin ich gar nicht weitergekommen. AT* hat nicht geklappt, weil keine Chance war,
überhaupt etwas in dem Terminalfenster einzugeben. Das Einzige was lief war die Anzeige der Uhr für die
Verbindungszeit. :roll:

Mit Portmon bin ich etwas weiter gekommen. Ich habe Daten übernommen und siehe da, Portmon hat etwas auf-
gezeichnet. Nur kann ich aus den Einträgen irgendwie keine brauchbaren Infos für mich herausziehen. Was
die einzelnen Befehle bedeuten kann ich mir ja noch denken, aber was ich da für meine Komponenten heraus-
nehmen muss um die Befehle dort zu übergeben... :gruebel:

Ich habe die Portmon Log Datei mal angehängt. Wer du sie dir mal anschauen könntest und mir die vielleicht
wichtigen Stellen zeigen könntest, wäre das super.

hitzi 14. Dez 2005 06:05

Re: InfraRot Kabel am Com Port abfragen
 
Wenn du im Hyperterminal nichts eingeben kannst, dann stimmt noch was mit dem Kommunikationsparametern nicht. Diese kann man aber theoretisch aus dem Portmonlog rauslesen. Leider liest es sich in der Fassung sehr schlecht.

AirJordan 14. Dez 2005 07:50

Re: InfraRot Kabel am Com Port abfragen
 
Im Log steht mit 9600 baud, StopBits 1, Parity: None, WordLength 8 :?: Ich habe das mit 2400 probiert. Ich werde heute Abend nochmal diese Einstellungen im HyperTerminal übernehmen und es erneut probieren. Melde mich dann nochmal. :roll:

AirJordan 16. Dez 2005 08:03

Re: InfraRot Kabel am Com Port abfragen
 
Hallo,

sorry bin noch nicht dazu gekommen, das mit meinem PC zuhause zu checken. Ich werde das am Wochenende mal ausprobieren. Ich bin aber in anderen Diabetes Foren vermehrt auf die Information gestossen, das die Hersteller der Messgeräte ihre eigene Software "verkaufen" möchten und daher die Schnittstellen nur sehr spärlich oder gar nicht rausrücken. :twisted:

Ich vermute also, das ich mit dem HyperTerminal und unterschiedliche Baudraten keinen Kontakt zum Gerät herstellen kann. :cry: Teste es aber trotzdem und berichte dann. Vielen Dank an euch für die Hilfe. :thumb:

AirJordan 17. Dez 2005 09:52

Re: InfraRot Kabel am Com Port abfragen
 
Hi,
so habe das mal getestet. Ich habe die Einstellungen für die Verbindung auf 9600baud, 8 Datenbits, 1 StopBit, Parität kein
und "Flusssteuerung" Xon/Xoff. Ich konnte dann immerhin schon etwas eingeben. Allerdings wurde hinter jedem Buchstaben ein "§" gesetzt... :?: :roll: Auf Enter reagierte HyperTerminal aber gar nicht.

Irgendwie bringt mich das aber nicht weiter. :gruebel: Noch einer eine Idee???

AirJordan 27. Dez 2005 08:21

Re: InfraRot Kabel am Com Port abfragen
 
Hallo,

nochmal zu meinem Problem die Daten von einem BZ Messgerät auszulesen, dessen Schnittstellen-
beschreibung nicht vorliegt (und wahrscheinlich vom Hersteller auch nicht zu bekommen ist,
weil dieser seine eigene Software vertreibt..). Wie kann ich die Informationen, die mir PortMon
liefert, richtig interpretieren?!? :gruebel:

Kann jemand das Protokoll von PortMon interpretieren und mir sagen, was ich an den Com-Port senden muss, damit das Gerät zb über TComPort oder TMS AsyncCom antwortet!?!?

So kommuniziert das Gerät mit einer anderen Software:
.................................................. ...

Zitat:

IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 9600
IOCTL_SERIAL_SET_RTS Serial0 SUCCESS
IOCTL_SERIAL_SET_DTR Serial0 SUCCESS
IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512
IOCTL_SERIAL_SET_DTR Serial0 SUCCESS
IOCTL_SERIAL_SET_RTS Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR CTS DSR RLSD BRK ERR RING
IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:0
Hier kommt der Teil, wo Daten gesendet werden und wo Daten empfangen werden. Wo muss man nun
genau lesen, um zu verstehen, was man selber in dem eigenen Programm senden muss???
.................................................. ....

Zitat:

IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXABORT RXCLEAR
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT TXCLEAR
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_WRITE Serial0 SUCCESS Length 1: .
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_READ Serial0 SUCCESS Length 1: .
Solche Werte werden ebenfalls mehrmals an das Gerät gesendet. Es scheint mir so, als ob vorher
irgendwas eingestellt wird.

Zitat:

IRP_MJ_WRITE Serial0 SUCCESS Length 1: C
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_READ Serial0 SUCCESS Length 1: C
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXABORT RXCLEAR
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT TXCLEAR
Ganz zum Schluss werden dann wahrscheinlich die einzelnen Datensätze aus dem Gerät ausgelesen.
Sie müssten eigentlich Datum, Uhrzeit und ein num.Wert enthalten.

Zitat:

IRP_MJ_WRITE Serial0 SUCCESS Length 1: .
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_READ Serial0 SUCCESS Length 8: .1001631
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_READ Serial0 SUCCESS Length 8: 72325120
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IRP_MJ_READ Serial0 SUCCESS Length 6: 5006C.
IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
Wer hat einen Tipp für mich, wie man die Daten "lesen" muss um sie richtig umzusetzen? :gruebel:

AirJordan 30. Dez 2005 09:25

Re: InfraRot Kabel am Com Port abfragen
 
Hallo,
hat keiner eine Idee, wie ich das Protokoll auswerten kann und erkenne kann, was man dem
Gerät am Ser.-Port senden muss??? :gruebel:

AirJordan 20. Sep 2006 16:16

Re: InfraRot Kabel am Com Port abfragen
 
Ich kram den alten Beitrag nochmal hervor. Ich habe ja jetzt das Pearl Script gefunden, nur habe ich von dieser Script Sprache überhaupt keinen Plan. Ich kann nur daraus erlesen, das über OUT (die für mich eine Variable ist) auf den Port geschrieben wird und in der Variable BAH Daten eingelesen werden.

Beispiel:

Zitat:

$out = pack("C",hex(D));
$foo = $meterport->write($out);
sleep 0.3;
$bah = $meterport->input;
$bah =~ s/$six//g;
$bah =~ s/$four//g;
$bah =~ s/$three//g;
$bah =~ s/$two//g;
oder

Zitat:

$out = "S";
$foo = $meterport->write($out);
sleep 0.1;
$out = " ";
$foo = $meterport->write($out);
sleep 0.1;
$out = "2";
$foo = $meterport->write($out);
sleep 0.1;
$bah = $meterport->input;
Hat einer eine Idee wie man das in Delphi umsetzen kann? Oder einfach 1:1 übernehmen und zb über AsyncPro oä auf den Port schreiben und von dort lesen?

Danke schonmal für eure Tipps!

AirJordan 6. Nov 2006 10:17

Re: InfraRot Kabel am Com Port abfragen
 
Moin,

sooo das Problem mit dem Einlesen der Daten aus einem Blutzuckermessgerät und der COM-Port Kommunikation ist zu 95% gelöst. :thumb: Nochmal vielen Dank an die DP Gemeinde die mir mit wertvollen Tipps hier im Beitrag oder per PN geholfen haben!!!


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