Как правильно настроить последовательный порт для связи AT через GSM модем C # .NET - PullRequest
0 голосов
/ 28 мая 2018

Дело в том, что я пытаюсь отправлять SMS-сообщения с помощью GSM-модема, но не знаю, как правильно настроить последовательный порт.
Пример ниже прекрасно работает с моим Samsung Galaxy S5, который был подключен к COM-порту.

public class AtSmsSender
{
    private SerialPort _serialPort;

    public void SmsSend(string phoneNr, string messageText)
    {
        string portName = "COM3";
        int portBaudRate = 9600;

        _serialPort = new SerialPort(portName, portBaudRate);

        Thread.Sleep(200);

        _serialPort.Open();

        Thread.Sleep(200);

        _serialPort.Write("AT+CMGF=1\r");

        Thread.Sleep(200);

        _serialPort.Write("AT+CMGS=\"" + "+"+phoneNr + "\"\r\n");

        Thread.Sleep(200);

        _serialPort.Write(messageText + "\x1A");

        Thread.Sleep(200);

        _serialPort.Close();
    }
}

Но когда я подключил GSM-модем, этот код перестал отправлять SMS, хотя все еще мог отправлять его через Терминал.В терминале отмечены DTR и RTS, но я не знаю, в чем дело в этих опциях.
Также попробовал этот тип конфигурации, но он не работает до

 _serialPort = new SerialPort("COM3", 9600)
        {
            Parity = Parity.None,
            DataBits = 8,
            StopBits = StopBits.One,
            Handshake = Handshake.None,
            DtrEnable = true,
            WriteBufferSize = 1024
        };

1 Ответ

0 голосов
/ 29 мая 2018

Проблема была в неправильной скорости передачи, поэтому после изменения все заработало. лицевая поверхность

_serialPort = new SerialPort("COM3", 115200)
    {
        Parity = Parity.None,
        DataBits = 8,
        StopBits = StopBits.One,
        Handshake = Handshake.None,
        DtrEnable = true,
        WriteBufferSize = 1024
    };
...