-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
13. Mär 2010
hat keiner eine Idee??
Mir fehlt nur noch eine Möglichkeit EV_RxChar einzubinden, dann müsste das ganze Programm funktionieren!
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
11. Mär 2010
Alternative:
wäre es leichter das Windows Event: SERIAL_EV_RXCHAR zu verwenden und daraus ein (eigenes) Event zu machen.
Ich habe zwar noch nie Events selber gemacht, aber ich denke mir, irgendwo muss im Endeffekt doch auf ein Windows Event verwiesen werden. Z.B. in der TComPort Unit wird jedem Event property zugeschrieben und irgendwann kommt "If Assigned(TEVENT) then ... .DOStatus" also...
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
10. Mär 2010
okay, super funzt das alles jetzt.
Ich hab nur noch ein problem, das Modem sendet jeden Input als echo zurück. Wie kann ich diese Echos auslesen und somit aus dem Input löschen?
Gelöst! Jetzt will ich aber, dass sobald er auf dem Port Daten bekommt, etwas macht. Bei TComPort war das OnRxChar. Wie geht das hier mit dem? bzw wie kann ich es machen, dass sobald er etwas im Input hat, eine...
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
10. Mär 2010
ah sorry, hab das nicht mehr gesehen... okay, na dann verwende ich das mal.
also das Modem antwortet mit "OK"+CR+LF dh endstring ist immer #10?
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
10. Mär 2010
ich habe tiomeout auf 20000 gesetzt - 20 Sekunden sollten reichen für mich :)
ich habe schon das Problem gefunden:
ich habe eingegeben: "4 OK" aber eig sollte es sein "0004 OK" da er ja 4 byte braucht.
Jetzt muss ich nur noch herausfinden, wie ich 4 in byte darstellen kann, da, wenn ich 0004 eingeben kommt als Wert 8755723296 und nicht 4 heraus!
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
10. Mär 2010
hmm ja das ist dann das prinzip vom TComPort, ich will es jetzt aber mit den methoden von synaser machen!
ich hab da etwas gefunden:
ComPort1.RecvBlock(timeout);
Das liest ja genau soviel aus, wie viel am anfang der zeile angegeben wird.
Mein Modem schickt zb:
Lenght:4 OK..
dh 4 = anzahl der elemente und soviel müsste er auslesen, das Problem ist nur, wenn ich das ausprobiere, und ich...
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
10. Mär 2010
So sieht der traffic am Port gerade aus:#
Software: AT
Modem: OK..
S: AT+CFUN=1
M: . ERROR (Timeout)
(so das wäre der "connect" teil)
wenn ich jetzt manuell weitere Befehle sende:
S: AT
M: AT+CFUN=1..+CFUN=1..OK..OK
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
9. Mär 2010
ahso, ja :)
also wir verwenden ein Nokia CS-15 umts/gsm gateway und man muss die "telephone function of sim" erstmal einschalten, damit das ganze funktioniert.
Auszug aus AT-Commands Revision A:
Set phone functionality +CFUN
Command syntax: AT+CFUN=<functionality level>
AT+CFUN=0 (ähnlich: AT+CPOF - power off)
AT+CFUN=1 (start oder wenns schon gestartet ist modem reset)
ja ich habe...
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
9. Mär 2010
naja ich verwende ja Synaser.
Stimmt der gepostete code so?
ja ich weiß, dass es sich um ms handelt. Ich hab auch schon im hyperterm alle meine Befehle durchprobiert, um zu sehen, wie die Antworten des Modems sein werden. Aber wie bekomme ich die genauen timings?? Ich wollte nämlich genau die einstellungen von hyperterm nachahmen, da die ja sichtlich funktioniert haben.
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
9. Mär 2010
jop danke - jetzt hab ich das ganze mal mit Synaser umgeschrieben... folgendes:
procedure TForm1.Button2Click(Sender: TObject);
var StartIni : TIniFile;
Answer : string;
begin
ComPort1.Connect(Edit1.Text);
//Ini File
StartIni:=TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI'));
try
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
9. Mär 2010
hmm.. jetzt geht mir das ganze doch schon ziemlich auf die Nerven, manchmal geht das Programm manchmal nicht und ich hab eig keine Ahnung, was ich verändert habe, damit es ging.
Folgendes Problem:
Wenn ich mein Programm starte soll es zuerst "at+cfun=1" ans modem schicken, dann die Antwort des Modems abwarten und dann "at" schicken, wieder die Antwort abwarten. Klingt extrem einfach, doch...
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
8. Mär 2010
jop, danke es war genau das was ich gesucht habe.
Ich hab zwar noch bisschen Probleme die Timeouts mit dem anderen Programm übereinzustimmen, deshalb werden manche Antworten schon gesendet, obwohl die Anfrage noch nicht ganz empfangen wurde, aber das mach ich noch. Mit sleep() und die Timeouts richtig einstellen, dann sollte es gehen. danke!
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
7. Mär 2010
das klingt ausgezeichnet, könnte genau das sein, was ich suche - danke ich schaus mir mal an :)
-
Forum: Win32/Win64 API (native code)
Delphi
by schweindi,
7. Mär 2010
sodala, wieder mal ich :)
mit großer Hilfe habe ich endlich mein Programm, dass mit einem Modem kommunizieren kann, fertiggestellt (174522).
Jetzt bin ich mir garnicht sicher, ob die folgende Frage hier reinpasst, aber irgendwie hat sie doch mit Win API zu tun, denke ich.
Wie ich schon in der oben genannten Frage geschrieben habe, ist die Software die wir verwenden alt und nicht kompatibel...