AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Serielle Schnittstelle - wie kann man Daten mitlesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Serielle Schnittstelle - wie kann man Daten mitlesen?

Ein Thema von Andy · begonnen am 19. Feb 2004 · letzter Beitrag vom 26. Dez 2005
Antwort Antwort
Andy

Registriert seit: 30. Jan 2004
17 Beiträge
 
Delphi 5 Enterprise
 
#1

Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 19. Feb 2004, 08:43
Hallo,

ein Barcode Scanner sendet verschiedene Daten (gelesener Barcode, Status, Anzahl der 'Good-Reads' usw. ) an den COM Port eines Rechners. Ein dazugehöriges Programm wertet die empfangenen Strings aus und stellt diese dar. Leider nicht alle, weil dies der Hersteller der Scanner Software nicht vorgesehen hat.
Ich suche nun nach einer Möglichkeit den Datenverkehr auf der (bereits geöffneten) Schnittstelle mit einem Programm mitzulesen und somit alle empfangenen Daten zu erhalten. Eine Hardwarelösung mittels eines Y- Kabels (COM1 und COM2 parallel schalten und dann von COM2 lesen) funktioniert ohne Probleme. Eine Software Lösung wäre mir aber lieber.

Weiß da jemand was?

Schöne Grüße
Andy
  Mit Zitat antworten Zitat
Benutzerbild von hm988
hm988

Registriert seit: 20. Dez 2002
132 Beiträge
 
Delphi 7 Personal
 
#2

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 18. Apr 2004, 11:58
hallo,

habe zu deiner Hardwarelösung eine Frage, hast du dazu ein Programm ??

oder benutzt du Hyperterminal ?? will nämlich so ein Programm in naher Zukunft
erstellen, brauche aber auch die Empfagszeiten in ms

Danke für eine Antwort
Grüsse, Steven
  Mit Zitat antworten Zitat
Andy

Registriert seit: 30. Jan 2004
17 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 19. Apr 2004, 06:41
Guten Morgen,

nein, ich hab dazu kein spezielles Programm sondern zu Testzwecken auch nur Hyperterminal verwendet.
Ich denke aber, dass es einiges an Share- oder Freeware dazu gibt. Oder selber programmieren z.B. mit der TComPort Komponente von Dejan Crnila (findest Du unter http://www.vclcomponents.com) .

Leider hab ich zu meiner eigentlichen Anfrage noch keine Antwort. Deshalb nochmal meine Frage: Wer hat Erfahrungen beim Zugriff auf eine geöffnete serielle Schnittstelle?

Schöne Grüsse
Andy
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 19. Apr 2004, 10:21
schau dir mal PortMon for Windows an.
Andreas
  Mit Zitat antworten Zitat
Ugums

Registriert seit: 26. Apr 2004
1 Beiträge
 
#5

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 26. Apr 2004, 09:45
Ein interessantes Programm dafür fand ich hier:
http://www.docklight.de/
RS232 Terminal / RS232 Monitor - Version 1.3
Docklight is a test, analysis and simulation tool for serial communication protocols (RS232, RS485/422 and others). It allows you to monitor the communication between two serial devices or to test the serial communication of a single device. Docklight is easy to use and runs on almost any standard PC using MS Windows 98/NT 4/2000/XP operating system.


Und jetzt mein Problemchen

Ich hätte zu allen eine Frage: woran kann es liegen, dass ich mit einer Komponente (TComm) auf einmal nur die ersten 8 Bytes aus dem Com1-Port kriege? Der Rest kommt nur nach einer Pause (20-50 ms).
  Mit Zitat antworten Zitat
Andy

Registriert seit: 30. Jan 2004
17 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 27. Apr 2004, 05:57
Guten Morgen,

bei der oben erwähnten TComPort Komponente mach ich's so:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
myRecString : string;
begin
Form1.ComPort1.ReadStr( myRecString, Count );
end;


Grüsse
Andy
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Serielle Schnittstelle - wie kann man Daten mitlesen?

  Alt 26. Dez 2005, 20:34
Hallo,

interessant wird es ja, wenn man nicht genau weiss, was überhaupt erst einen Datenfluss auslöst. Ich
such schon seit einiger Zeit nach einer Möglichkeit, von meinem, am Com-Port angeschlossenen BZ Messgerät
die Daten auszulesen. Ich schaffe es aber nicht, das BZ Messgerät dazu zu überreden, Daten zu senden...


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?
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:13 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