![]() |
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 |
Re: An com port gesendete daten lesen
Zitat:
|
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 ;) |
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:
und so sieht mein Packetding aus:
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; [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? |
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 |
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. |
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? |
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
|
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? |
Re: An com port gesendete daten lesen
Zitat:
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. |
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