Fehler beim Senden von 'CTRL+Z' zu comport
-
Hi,
I benutze die ComPort Komponente (www.winsoft.sk) um mit einem GSM Modem zu kommunizieren. Um eine SMS zu senden, muss ich 'CTRL+Z" zum Modem schicken.
Leider ist 'CTRL+Z' ein Windows keyboard shortcut fuer 'undo', was dann mein Programm auch macht. Wenn ich die Commands in ein Edit-Feld eingebe, passiert das selbe. Aber wenn ich die Commands (CTRL+Z oder '', scheinen beide das selbe zu sein) von einer Testsoftware kopiere, dann funktionierts und sendet die SMS.
Was kann ich tun, um das Problem zu loesen oder zu umgehen?
Ich bin dankbar fuer jede Hilfe.
Gruss,
Ronald
-
Finde heraus, welchem ASCII-Wert CTRL + Z entspricht und sende diesen Wert.
-junix
-
-junix
-
Danke,
Ich habe das alles schon ausprobiert. Mein eigentliches Problem ist, dass wenn ich 'CTRL+Z' sende, egal ob als hex oder in ein text kopiert, Windows denkt, es ist ein Keyboard Shortcut und macht 'Undo'. Im klartext sendet mein Programm dann das selbe nochmal, was ich vorher schon gesendet habe und nicht 'CTRL+Z'.
Aber wenn ich die 'CTRL+Z'('') von einer Testsoftware in ein Edit-Field kopiere, dann funktionierts und sendet die SMS.
Weiss jemand eine bessere Loesung?
Gruss,
Ronald
-
Äh das versteh ich jetzt nicht. Du sollst doch das CTRL+Z (Gemäss ASCII-Tabelle 0x1A) an das GSM-Modem senden dachte ich? Häng doch das Teil einfach selber im Code an den String an und sende den String erst dann?
-junix
-
Das ist genau das, was nicht geht. Wenn ich das sende:
ComPort->WriteString("AT+CMGS=\"0790000000000\"\0x0DTest-SMS\0x1A\0x0D");macht Windows XP "Undo", weil CRTL+Z genau das bedeutet. Es funktioniert nur, wenn ich 'CTRL+Z'('') von einer GSM Modem Testsoftware in ein Edit-Field kopiere und dann den text von dort sende:
ComPort->WriteString(Form1->Edit1->Text + '\xd');
dann funktionierts und sendet die SMS.Kann ich die Keyboard Shortcuts ausstellen? Kann ich das irgendwie anders loesen?
Gruss,
Ronald
-
rsch1973 schrieb:
Das ist genau das, was nicht geht. Wenn ich das sende:
ComPort->WriteString("AT+CMGS=\"0790000000000\"\0x0DTest-SMS\0x1A\0x0D");macht Windows XP "Undo",
Das ist genau das, was ich nicht verstehe. Wo wirkt sich denn dieses undo aus? Nimmt der Com-Port das Zeichen zurück das er zuvor gesendet hat? (o; (SCNR)
Btw: Wenn du Hex-Sequenzen reinescapen willst, musst du das 0 weglassen. Also nur \x1a z.B. (soviel mir war)
-junix