AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TComport, probleme beim Lesen

Ein Thema von angos · begonnen am 1. Aug 2007 · letzter Beitrag vom 11. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#1

TComport, probleme beim Lesen

  Alt 1. Aug 2007, 14:59
Hallo,

ich habe ein kleines Problem. Ich versuche auf einen Barcodescanner CS1504 per Comport zuzugreifen. Ich nutze die Komponente ComportLibrary.
Ich kann dort auch die Initialisierungsroutine rüberschicken, und der Scanner piept, also kommt etwas an. Nur kann ich mit der TComport - Komponente nun gar nichts vom Comport lesen.... Ist mein erstes Projekt mit Zugiff auf einen Comport und ich weis noch nicht so recht, worauf ich da vielleicht noch achten muss.
Ich habe:
- Die Baudrate passend eingestellt: 9600
- Stopbits passend auf OneStopBit eingestellt.
- Databits werden in 8Bits übergeben

Das habe ich laut folgendem Auszug aus der Handbuch so eingestellt:
Zitat:
6. COMMUNICATION CHARACTERISTICS
The character framing shall be 8 data bits, 1 stop bit, and odd parity. The default baud rate shall be 9600.
The maximum length of any command message shall be 70 bytes while the maximum length of any response
message shall be 6144 bytes (6 KB). Messages shall be transmitted starting with the command/status byte and ending
with the CRC. Each byte shall be transmitted from LSB to MSB.
Jemand eine Idee worauf ich vielleicht noch achten muss?

Folgender Code wird genutzt um die Daten zum Comport zu senden und vom Comport zu lesen:

Delphi-Quellcode:
procedure ResetBuffer(var aBuff: Array of Char);
var
  i: Integer;
begin
  for i := 1 to Length(aBuff) do
    aBuff[i] := CHR($00);
end;

procedure TForm1.btnClick(Sender: TObject);
var
  aBuff: Array[0..50] of Char;
begin
  ComPort.Open;
  ResetBuffer(aBuff);
  aBuff[0] := CHR($01);
  aBuff[1] := CHR($02);
  aBuff[2] := CHR($00);
  aBuff[3] := CHR($9F);
  aBuff[4] := CHR($DE);
  ComPort.Write(aBuff, 5);
  ComPort.Read(aBuff, 1);
end;
Danke
Ansgar
  Mit Zitat antworten Zitat
oki

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

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 15:16
Du mußt die Parität noch auf ungerade (odd) setzen.

Gruß oki
42
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 15:22
hi,

hab ich vergessen oben zu erwähnen, Parity=odd ist gesetzt.
Ansgar
  Mit Zitat antworten Zitat
oki

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

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 15:29
Hi,

es macht mehr Sinn das Ereignis für den Empfang von Daten der komponente zu benutzen. Leider kenne ich diese Kompo nicht. Das Prinzip ist aber eigentlich immer das gleiche. Im Ereignis die daten auslesen.

gruß oki
42
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 15:57
Hallo,

Leider komm ich so immer noch nicht an die Dtaen. Da das aber mit einem Drittprogramm geht und ich mit einem Portmonitor geprüft habe, dass die gleiche Zeichenfolge auf den COM geschrieben wird, gehe ich noch von einem Einstellungsproblem des TComport aus.
vielleicht hier nochmal eine Zusatzinfo. Folgende Ereignisse des TComport werden in der gegebenen Reihenfolge ausgeführt.

Zitat:
ComPortBeforeOpen
ComPortAfterOpen
ComPortCTSChange
ComPortDSRChange
ComPortRLSDChange
ComPortTxEmpty
ComPortCTSChange
ComPortDSRChange
ComPortRLSDChange
ComPortBeforeClose
ComPortAfterClose
Grüße
Ansgar
  Mit Zitat antworten Zitat
shmia

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

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 16:21
Hast du schon mal das Programm Hyperterminal (Programme->Zubehör->Kommunikation) oder ein anderes Terminalprogramm benützt, um festzustellen, ob der Scanner überhaupt Daten sendet ???
Falls nicht: unbedingt ausprobieren, vorher brauchst du gar nicht weiterprogrammieren.
Andreas
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 16:34
Zitat von angos:
Hallo,

Messages shall be transmitted starting with the command/status byte and ending
with the CRC.
Hallo,

nach dieser Aussage wird ein Sicherungsprotokoll verwendet mit Command - Status - Data - CRC.
Ein solches Protokoll muss zusätzlich zum Zugriff über eine serielle Komponente selbst programmiert werden,
z.B. mit einer Zustandsmaschine. Dazu braucht man natürlich eine exakte Protokoll-Definition.

Gruss Reinhard
  Mit Zitat antworten Zitat
oki

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

Re: TComport, probleme beim Lesen

  Alt 1. Aug 2007, 16:46
Hallo angos,

ich hab mir mal schnell die Kompo runter geladen. Dort sind auch einige Beispiele dabei. Die Kompo implementiert z.B. das Ereignis RxChar.

Dieses kann laut Demo wie folgt benutzt werden:
Delphi-Quellcode:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort.ReadStr(Str, Count);
  Memo.Text := Memo.Text + Str;
end;
Damit müsste für den Empfang der Daten auf dem Port alles klar sein.

Wie du aus den empfangenen Zeichen dann die Scannerdaten decodierst sagt dir die Doku des Scanners.

Gruß oki

[edit] Noch mal ein bischen Rechtschreibung korrigiert. [/edit]
42
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: TComport, probleme beim Lesen

  Alt 2. Aug 2007, 07:19
Hi oki,

das Prinzip an sich ist mir schon klar, nur er springt halt gar nicht in die Routine ComPortRxChar. Deswegen gehe ich ja nach wie vor von einem Konfigurationsproblem des TCoomport aus

Hatte ja in dem Thread oben die Events gezeigt, welche nacheinander durchlaufen.

Klick auf den Button zum Verbinden/Datenauslesen
Zitat:
ComPortBeforeOpen
ComPortAfterOpen
ComPortCTSChange
ComPortDSRChange
ComPortRLSDChange
ComPortTxEmpty

Klick auf den Disconnect-Btn:
Zitat:
ComPortCTSChange
ComPortDSRChange
ComPortRLSDChange
ComPortBeforeClose
ComPortAfterClose
naja, deswegen komm ich halt nicht weiter...


Gruß
Ansgar
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TComport, probleme beim Lesen

  Alt 2. Aug 2007, 07:42
Habs rausgefunden

Es war tatsächlich eine Einstellung am TComport. Die Einstellung ControlDtr muss in meinem Fall auf dtrHandshake stehen.


trotzdem danke für die Hilfen oki
Ansgar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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