Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi An com port gesendete daten lesen (https://www.delphipraxis.net/148540-com-port-gesendete-daten-lesen.html)

LargoD 5. Mär 2010 11:26

Re: An com port gesendete daten lesen
 
Um com-ports anzusteuern benutze ich immer TComPort von Dejan Crnila.
Da sind auch Beispiele im Paket, die Du leicht modifiziert direkt einsetzen kannst.
Auf die Antwort des Modems wartest Du nicht, sondern wenn Zeichen auf der seriellen Schnittstelle ankommen, wird ein Event ausgelöst und die Zeichen kannst Du aus einem Puffer abholen. TComPort hat sogar eine einfache Paket-Erkennung, sodass dann ein Event getriggert wird, wenn eine bestimmte Zeichenkombination, z. B. CR/LF erkannt wird. Das macht die Sache noch einfacher.
Gruß
Erich

s.h.a.r.k 5. Mär 2010 14:56

Re: An com port gesendete daten lesen
 
Zitat:

Zitat von schweindi
Dazu hab ich schon mal von S.h.a.r.k das verwendet und bisschen umgeschrieben:

Das ist gar nicht direkt von mir, auch wenn ich mehrfach zitiert werde für diesen Code :mrgreen: hatte da echt eine nette Hilfe (Dirk Meyer hieß der Herr glaub), mit der ich den Code erarbeitet hatte!

schweindi 5. Mär 2010 16:19

Re: An com port gesendete daten lesen
 
okay ... danke :) Ich versuch mal TComPort und melde dann evtl Fehler!

und ja, ich hab dich einfach mal weiterzitiert ;)

schweindi 5. Mär 2010 19:14

Re: An com port gesendete daten lesen
 
okay ich habe jetzt mal TComPort installiert und alles verwendet... also es läuft super, nur beim auslesen hab ich noch probleme:

Also wenn ich

ComPort1.ReadFile(str,255);

mache dann wird ja immer nur 1 zeichen gelesen -> ComDataPacket, stimmt doch oder damit kann man es als "ganzes Packet" lesen?
So dann hab ich start parameter leer gelassen und als Stopparam ist #13, da das Modem ja nach jedem befehl eine neue zeile beginnt...

Doch iwie wenn ich jetzt in meinem virtual com nach dem befehl vom programm etwas eingeben, passiert nichts. Vorher habe ich in meinem Memo immer jeden Buchstaben einzeln gesehen, doch jetzt passiert garnichts, was habe ich vergessen?

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject); //da sende ich die Eingabe zum port
var Str : String;
    i : Integer;
begin
//write to port
Str := Edit2.Text;
//ComPort1.WriteStr(Str); // string type variable
ComPort1.Write(Str[1], Length(Str)); // no defined type
ComPort1.TransmitChar(#13);
ShowMessage('Write Data Successfull');
//answer
end;
und so sieht mein Packetding aus:

[delphi]object ComDataPacket1: TComDataPacket
ComPort = ComPort1
StopString = '#13'
OnPacket = ComDataPacket1Packet
Left = 48
Top = 200
end
end[/delpi]

das OnPacket Event gibt ja an, wenn ein vollständiges packet gefunden wurde, da hab ich einfach mal ein ShoMessage() reingeschrieben, doch nichts passiert! Wenn ich zb: "abc#13" eingebe im Modem, tut mein programm so, als ob es nichts im InputBuffer hätte.

Ne idee?

Matczek 5. Mär 2010 19:31

Re: An com port gesendete daten lesen
 
versuche mal #13 (CR) und #10 (LF) zu senden...
Ich glaube, dass sind die Endezeichen für Modems.

gruß matthias

schweindi 5. Mär 2010 19:37

Re: An com port gesendete daten lesen
 
naja mein Problem ist ja, dass die Pakete garnicht erkannt werden.

Ich habe ja beim Startparameter nichts eingetragen, das heißt, es muss bei jedem zeichen beginnen zu lesen und stopparameter ist #13 dh wenn ich #13 eingebe müsste es fertig gelesen haben.

Matczek 5. Mär 2010 19:56

Re: An com port gesendete daten lesen
 
Also ich kenne die TComPort Komponente nicht ich benutze immer AsyncPro. Dort hatte ich immer Probleme mit dem Packet-Komponente, deswegen schreibe ich die Werte immer in einen Buffer und werte selbst aus.

Habe ich das richtig verstanden du sendest z.B. "AT"+CR und bekommst keine Antwort vom Modem?

schweindi 5. Mär 2010 20:01

Re: An com port gesendete daten lesen
 
naja ich teste das programm gerade nur auf einem virtuellen modem, indem ich di eigentlichen antworten slbr reinschreibe... aberich bekomme eben diese nicht

Matczek 5. Mär 2010 20:05

Re: An com port gesendete daten lesen
 
[edit]Sorry ich sollte mal richtig lesen[/edit]

Was ist ein virtuelles Modem? Ein Modem der einen virtuellen COM Port via USB anbietet?

WoGe 5. Mär 2010 20:16

Re: An com port gesendete daten lesen
 
Zitat:

Zitat von Matczek
Sorry noch ne doofe Frage:
Was ist das für ein Gerät welches an den virtuelle COM Port angeschlossen ist?

Würde mich auch mal interessieren

Wenn es nur darum geht SMS zu verschicken, kann man auch ein ganz normales Handy mit Bluetooth nehmen. Hab ich mit meinem Uralt-Handy mal ausprobiert und ging einwandfrei. Hat zudem den Vorteil keinerlei Kabel zwischen Rechner und Handy notwendig.

Gruss
wo


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz