Sms tramite telefono cellulare nokia su una porta seriale
-
13-09-2019 - |
Domanda
Sto cercando di inviare un sms tramite telefono cellulare Nokia su seriale che è abbastanza facile via di stucco.I comandi dal nokia documentazione funziona bene.
Tuttavia, il tentativo di inviare gli stessi comandi da un'applicazione c# fallisce miseramente.Ho eseguito Sysinternals PortMon e può vedere i comandi vengono attraverso OK, l'unica differenza che posso vedere è il modo in cui si connette, ma sto avendo problemi a trovare i comandi in grado di appianare le differenze.
Il codice che sto usando sembra un po ' come questo
using (SerialPort port = new SerialPort(comPort, 9600, Parity.None, 8, StopBits.One))
{
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.ErrorReceived += new SerialErrorReceivedEventHandler(port_ErrorReceived);
//port.ReceivedBytesThreshold = 1;
port.DtrEnable = true;
port.RtsEnable = true;
port.ReadTimeout = 1;
port.Handshake = Handshake.XOnXOff;
try
{
port.Open();
port.WriteLine("AT");
port.WriteLine("AT+CMGF=1");
port.WriteLine("AT+CMGS=\"" + number + "\"");
port.WriteLine(message);
port.Write(new byte[] { (byte)26 }, 0, 1);
}
finally
{
if (port.IsOpen)
{
port.Close();
}
}
Le differenze sto vedendo nella traccia dalla porta seriale sono
All'inizio
0.00001844 aspnet_wp.exe IOCTL_SERIAL_SET_HANDFLOW USBSER001 SUCCESS Shake:1 Replace:43 XonLimit:4096 XoffLimit:4096
E alla fine
0.00061153 aspnet_wp.exe IOCTL_SERIAL_PURGE USBSER001 SUCCESS Purge: RXABORT RXCLEAR
0.00004442 aspnet_wp.exe IOCTL_SERIAL_PURGE USBSER001 SUCCESS Purge: TXABORT TXCLEAR
Qualcuno ha avuto qualche consiglio su come ferro questi problemi?Ho anche notato che il telefono non risponde all'applicazione con il riconoscimento quando ho emettere un comando così ho il sospetto che il problema è la connessione, e non i messaggi alla fine.
Soluzione
È necessario attendere che la ">" prima di scrivere il messaggio. Inoltre, non interrompere il messaggio con un CR / LF (WriteLine).
Altri suggerimenti
Prova a vedere se è possibile leggere il seriale di comunicazione dal telefono.Dopo l'invio di 'A', il telefono dovrebbe rispondere con "OK".Potrebbe essere una buona idea per verificare che la comunicazione seriale di lavoro prima di assumere l'SMS bit.
Da quello che mi ricordo, penso che dopo AT+CMGS il messaggio deve essere inserito e seguito da ctrl-z, e senza carattere di nuova riga è necessario.Potresti provare a cambiare il WriteLine ("messaggio") per Scrivere(messaggio)?
Spero che questo aiuta!