Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seriellen Anschluss auslesen (RFID) (https://www.delphipraxis.net/70884-seriellen-anschluss-auslesen-rfid.html)

UtopianBuddy 6. Jun 2006 11:06


Seriellen Anschluss auslesen (RFID)
 
Moin,

Ich weiß das die meißte wenn sie meinen Titel gelesen haben denken werden "schau doch mal in die Suche". Mein Problem ist das ich dort meißtens nur Threads fand wo auch stand, schau doch mal in die Suche oder die Threads mir einfach nicht geholfen haben.

Mein Problem stellt sich eigentlich recht einfach dar, nur bin ich jetzt seit 2h am suchen gewesen und komme einfach nicht weiter.

Zum einen habe ich async pro glaube ich nicht richtig installiert gekriegt, das sollte aber das kleinere Problem darstellen, beim "richtigen" geht es um folgendes:

Ich habe mir einen RFID leser zugelegt der über einen com anschluss mit dem PC verbunden wird.
Sobald ein RFID Tag in Reichweite kommt werden Daten an mich übermittelt. Eigentlich würde mir schon reichen wenn ich ein Programm hätte das einfach alle Daten die über den rs232 Port reinkommen in einen string speichern würde, ich möchte gar nichts senden, einfach nur "zuhören".

Alle Lösungen die ich bis jetzt irgendwo gesehen habe funktionieren einfach nicht und ich hoffe das sich jemand erbarmt und mir genaueres beschreibt. Verwendet wird Delphi 7.

MfG
UtopianBuddy :angel2:

s.h.a.r.k 6. Jun 2006 11:19

Re: Seriellen Anschluss auslesen (RFID)
 
Wie das mit demAsync Pro geht kann ich dir leider nicht sagen - dazu musst du wir was suchen *lol* (soll keine Ironie, sondern wirklich ein Tipp sein)

Ansonsten kannst es ja auch mal so probieren - schau dir den Link hier mal an und dann lese die Daten mit dem folgenden Code aus (hab ich im forum gefunden)

Delphi-Quellcode:
Function RecieveByte(COMHandle: THandle): Byte;
Var
  tmp: cardinal;
  ByteToRead: Byte;
Begin
  ReadFile(COMHandle, BytetoRead, 2, tmp, Nil);
  Result := ByteToRead;
End;


// Beispiel-Verwendung...
Procedure TForm1.Timer1Timer(Sender: TObject);
Var tmp: integer;
Begin
  tmp := RecieveByte(com);
  If tmp <> 217 and 0 Then // Nur um den "Müll" zu ignorieren...
    memo1.lines.add(inttostr(tmp));
End;

robinWie 6. Jun 2006 11:24

Re: Seriellen Anschluss auslesen (RFID)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hatte auch mal ein Problem mit ein Programm für eine Serielle Schnittstelle. Da habe ich diese Unit bekommen. Vielleicht hilft sie dir.

Nach "TRS232.Create" musst du "TRS232.InitCom()" aufrufen. Das geht so
Delphi-Quellcode:
TRS232.InitCom('COM1', CBR_9600, 8, NOPARITY, ONESTOPBIT)

chaosben 6. Jun 2006 11:25

Re: Seriellen Anschluss auslesen (RFID)
 
Und wenn du ganz schnell ohne viel Aufwand (aka klickibunt) was sehen willst, dann kannst du mal bei Torry suchen :-D . Da gibts ein Set von Komponenten namens TComPort. Mit ihnen kann man sehr schnell etwas optisches zusammenklicken.

UtopianBuddy 6. Jun 2006 11:40

Re: Seriellen Anschluss auslesen (RFID)
 
danke erstmal allen für die flotten und guten antworten, ich werd mich gleich ransetzen und schauen wie was geht.
Die ComPort Library wollte ich auch mal versuchen, aber ich hab die nicht installiert gekriegt und die readme checkt ja auch kein mensch... :wall:

mmh naja mal schaun :)

UtopianBuddy 6. Jun 2006 12:23

Re: Seriellen Anschluss auslesen (RFID)
 
Zitat:

Zitat von robinWie
Nach "TRS232.Create" musst du "TRS232.InitCom()" aufrufen. Das geht so
Delphi-Quellcode:
TRS232.InitCom('COM1', CBR_9600, 8, NOPARITY, ONESTOPBIT)

danke, aber beim aufruf von der InitCom kommt eine Access violation obwohl ich wirklich nur diesen code aufrufe

Delphi-Quellcode:
rs232.Create;
rs232.InitCom('COM1', CBR_9600, 8, NOPARITY, ONESTOPBIT);
vorher wurde rs232 als globale variable von Trs232 festgelegt...
:gruebel:


edit: leider funktioniert die Möglichkeit von S.H.A.R.k. auch nicht weil variablen fehler bzw vorher nicht deklariert worden sind und ich ja nicht erahnen kann um welchen typus es sich handelt...
:duck:

chaosben 6. Jun 2006 12:39

Re: Seriellen Anschluss auslesen (RFID)
 
Zitat:

Zitat von UtopianBuddy
Die ComPort Library wollte ich auch mal versuchen, aber ich hab die nicht installiert gekriegt und die readme checkt ja auch kein mensch

Wo ist denn das Problem? (Stichwort: Fehlermeldung) Vielleicht kann man helfen.

Der_Unwissende 6. Jun 2006 12:45

Re: Seriellen Anschluss auslesen (RFID)
 
Hi,
also die TComPort (ist glaube ich bei SF gehostet) ist echt super, hab schon mehrere Projekte problemfrei mit der gearbeitet (was nicht heißt, dass andere Komponenten schlechter sind).
Jedenfalls hättest du dort recht einfach alles was du brauchst, einfach einen TComport auf dein Formular ziehen, die Einstellungen des Port vornehmen (wie man alle verfügbaren Comports auflistet lasse ich hier einfach mal weg), Connected auf True setzen und benutzen. Das OnReceiveChar-Event benachrichtigt dich dann immer, wenn etwas im Puffer landet.


Zitat:

Zitat von UtopianBuddy
Delphi-Quellcode:
rs232.Create;
rs232.InitCom('COM1', CBR_9600, 8, NOPARITY, ONESTOPBIT);

Äh, muss wohl eher
Delphi-Quellcode:
rs232 := TRs232.Create;
heißen

UtopianBuddy 6. Jun 2006 12:55

Re: Seriellen Anschluss auslesen (RFID)
 
ähm shit, nee ist recht ist klar, aber geht trotzdem nicht.
die TComPort ist mir wirklich schon von vielen ans Herz gelegt worden die ich gefragt habe, aber ich check folgendes nicht:
als erstes muss über |Tools-Environment Options-Library-Library Path| der Ordner eingebunden werden, soweit kein Problem, dann aber folgendes:

Zitat:

Use "File/Open" menu item in Delphi/C++ Builder IDE to open
ComPort run-time package source file (see above). Click "Compile"
button in Package window to compile the library. Now move run-time
package library file or files (see above) from ComPort folder to a
folder that is accessible through the search PATH (e.g. WinNT\System32).
Welches soll denn die ComPort run-time package source file sein?

alles blödsinn :(

D11 6. Jun 2006 13:29

Re: Seriellen Anschluss auslesen (RFID)
 
CPORTLIB.dpk = run-time package = only "Compile"
DsgnCPort.dpk = "INSTALL"

Ps. Auf meiner Homepage liegt eine DEUTSCHE VERSION incl. Hilfedatei zum Download.
Comport VCL
die ist zwar für jede Modellbahn (via Comport)
geht aber auch für alles andere am Comport.
(Vorteil alles in Deutsch & English) ect.
Beschreibung
Benutzen Sie die Komponente TComPort, um auf einfache Art mit externen Geräten, wie z.B. Modems, Barcode-Lesegeräte, PBX u.s.w., über eine RS232-Verbindung zu kommunizieren. TComPort bietet verschiedene Properties zur detaillierte Konfiguration der seriellen Schnittstelle, zahlreiche Methoden zum Lesen und Schreiben auf die Schnittstelle und Ereignisse, um die Schnittstelle zu überwachen. Lese- und Schreiboperationen können synchron und asynchron ausgeführt werden.

Am besten immer "asynchron" unter WinXP durchführen.
Guter Beispielcode für Delphi im Open-Source des Hauptprogramm...
Digitales am Comport (RS232)
Direktlink zur VCL... (D5 bis D2006) auch PERSONAL
Comport VCL als gepackte (Winrar.exe)



Kleiner Tip zum auslesen:
Liest Daten vom Eingangspuffer in eine Stringvariable im asynchronen Modus ein.
function ReadStrAsync(var Str: String; Count: LongWord; var AsyncPtr: PAsync): LongWord;
Beschreibung
Rufen Sie die Methode ReadStrAsync auf, um Count Bytes in die Variable Str einzulesen. Die Methode wird sofort beendet und wartet nicht, bis die Operation beendet ist. Rufen Sie WaitForAsync auf, um sicherzustellen, daß die Operation beendet ist. Der Parameter AsyncPtr ist ein PAsync-Record, der von der Methode InitAsync initialisiert wurde. Die Anwendung ist dafür verantwortlich, AsyncPtr-Pointer mit Hilfe von DoneAsync freizugeben, nachdem die Operation beendet ist.
Der Rückgabewert entspricht der Anzahl an Bytes, die tatsächlich gelesen wurden.
Hinweis
Falls das Ergebnis von WaitForAsync verschieden vom Count-Parameter ist, muß die Anwendung die Länge des Str-Parameters mit Hilfe von SetLength manuell anpassen.
:cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Seite 1 von 2  1 2      

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