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

Дело в том, что я пытаюсь отправлять 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
        };

person Daniel Žeimo    schedule 28.05.2018    source источник


Ответы (1)


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

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