AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wiegand 26bit über COM Schnittstelle erfassen
Thema durchsuchen
Ansicht
Themen-Optionen

Wiegand 26bit über COM Schnittstelle erfassen

Ein Thema von hronny · begonnen am 26. Okt 2009 · letzter Beitrag vom 26. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#1

Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 10:02
Hallo

ich suche eine Möglichkeit über die Serielle Schnittstelle die Daten zu erfassen. Dabei würde ich das Datenformat Wiegand26 (26bit) bekommen. Wie liest man solche Daten ein, denn soweit ich hier im Forum gesehen habe, kann man nur Bytegrößen angeben. Dann ist es ja auch so, dass ich nur Daten empfange und keine sende. Geht das, und wie mit RAD Studio 2007?
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 10:48
Am einfachsten ist du besorgst die eine Klasse (TComPort o.ä.), die für dich die Arbeit mit der Kommunikation abnimmt. (vielleicht existiert die auch schon in den neueren Delphi Versionen)

Dann musst du nur noch den Datenstrom in 26-Bit Stücke zerteilen (da dürfte noch ein Beitrag zu in der CodeLib-Warteschleife stehen)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 11:02
Danke ich versuche es damit! Wenn ich nicht weiter komme, melde ich mich wieder.

Danke!
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Reinhard Kern

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

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 11:52
Zitat von sirius:
Am einfachsten ist du besorgst die eine Klasse (TComPort o.ä.), die für dich die Arbeit mit der Kommunikation abnimmt. (vielleicht existiert die auch schon in den neueren Delphi Versionen)

Dann musst du nur noch den Datenstrom in 26-Bit Stücke zerteilen (da dürfte noch ein Beitrag zu in der CodeLib-Warteschleife stehen)
Hallo,

dem kann ich mich nicht anschliessen. Erstens kommen die 26 bit am Stück, lassen sich also über eine asynchrone Schnittstelle ÜBERHAUPT NICHT einlesen - nirgends Start und Stopbits, und asynchrone Schnittstellen mit 26bit Wortlänge sind mir auch noch nicht begegnet.

Zweitens kommen Einsen und Nullen auf 2 verschiedenen Leitungen, und das Timing dafür darf in einem weiten Bereich streuen. Wie soll das mit einem Comport gehen??? Das ist eher eine typische Aufgabe für ein Prozessorchen etwa aus der PIC-Reihe.

Trotzdem viel Erfolg,
Gruss Reinhard
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 19:01
Das Wiegand26 protokoll kommt ja auch aus dem RS485 Bereich. Dafür gibt es extra einen Wiegand2TCPIP Converter. Dieser kommuniziert aber nur mit einem virtuellen COM-port (Treiber). Den gleichen Effekt erziele ich mit dem RS485 auf RS232 Converter. Das ist aber auch gleichzeitig das Problem, denn 26 bit ist halt ein "krummes" Byte
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 19:36
Guten Abend,

ich weiß ja nicht, wie hoch das Datenaufkommen ist?
Wenn der Datenfluß hoch genug wäre, könnte es sich lohnen
immer 8 x 26 Bit (26 x 1 Byte)zu laden und diese dann
in der Nachverarbeitung wieder auseinanderdröseln.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 19:42
Es kann sein, dass nur ein 26bit Block kommt und dann minutenlang nichts. Da ich es aber in "Echtzeit" (also nicht Minuten später) auswerten möchte, ist das Warten wohl keine gute Wahl.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 19:54
.. ja, das ist verständlich.

Kannst Du dir die Daten im Hyperterminal (o.ä) anschauen/mitschneiden
und schauen ob da wirklich nur 26 Bit ankommen oder doch 32 Bit wobei dann
6 Bits nicht beachtet werden?

Wenn dann doch mehrere Blöcke am Stück kommen,
kann man dann nicht die Bitanzahl div 26 rechnen
um die Anzahl der Blöcke zu ermitteln und dann entsprechend trennen.


Code:
Wiegand Output Protocol
 
The Wiegand protocol (26 bit mode) itself is made up of a leading even parity bit (for b0 - b11),
24 bits of data (from transponder data) and a trailing odd parity bit (for b12- b23). The 36 bit
mode has the same format except 34 bits are used to form the data sequence.
 
For example:- 
 
Converted BCD data:           00 00 04 60 22 12 75   (14 digits)
Truncated BCD data:           04 60 22 12 75   (10 digits)
 
Wiegand 26 bit sequence:-    E    (b0 --------- b11) (b12 -------- b23)  O
                             E    (   0      4       6          0       2      2   )  O
                             1      0000 0100 0110   0000 0010 0010    1 
 
Where E is EVEN parity bit for bit 0 to 11 and O is ODD parity bit for bits 12 to 23
Quelle

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 19:59
Also meine Versuche im Hyperterminal endeten immer mit einem "y" mit 2 Punkten drauf. Kann man im Hyperterminal denn noch andere Daten sehen?
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#10

Re: Wiegand 26bit über COM Schnittstelle erfassen

  Alt 26. Okt 2009, 20:48
Wenn du nur Lesen mußt, dann könntest du es ja auch erstmal so versuchen.
Das Programm ließt vom COM-Port Byteweise ein und gibt die Werte Hexadezimal aus.
Delphi-Quellcode:
Program Project1;

{$APPTYPE CONSOLE}

Uses Windows, SysUtils;

Var S: String;
  H: THandle;
  B: Byte;
  C: LongWord;

Begin
  Try
    Write('Gib die Nummer des COM-Ports ein: ');
    ReadLn(S);
    S := Trim(S);
    H := CreateFile(PChar('COM' + S), GENERIC_READ,
      FILE_SHARE_READ   or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
    If H = INVALID_HANDLE_VALUE Then
      Raise Exception.CreateFmt('Port COM%s konnte nicht geöffnet werden.'#13#10,
        [S, SysErrorMessage(GetLastError)]);
    While ReadFile(H, B, 1, C, nil) and (C = 1) do
      Write(Format('%.2x ', [B]));
    WriteLn;
    WriteLn(SysErrorMessage(GetLastError));
    CloseHandle(H);
  Except
    On E: Exception do WriteLn(E.ClassName, ': ', E.Message);
  End;
  ReadLn;
End.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 23:23 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