2013-03-06 3 views
0

Я изучаю команду AT в C#.Не получать ответ от GSM-модема с помощью команды AT

public static void Main(string[] args) 
    { 

     String command = "AT"; 
     SerialPort serialPort = new SerialPort 
            { 
             PortName = "COM4", 
             BaudRate = 9600, 
             DataBits = 8, 
             Parity = Parity.None, 
             ReadTimeout = 300, 
             WriteTimeout = 300, 
             StopBits = StopBits.One, 
             Handshake = Handshake.None 
            }; 
     serialPort.Open(); 
     serialPort.WriteLine(command + "\r"); 
     String outPut = serialPort.ReadExisting(); 

     Console.WriteLine(outPut); 


    } 

Я уверен в PortName. Что я делаю неправильно в программе?

Заранее спасибо :)

+0

Проверьте это: http://stackoverflow.com/questions/636758/serial-port-readline-vs-readexisting-or-how-to-read-the-data-from-serial-port-pr –

ответ

0

Трудно сказать, если это ваша единственная проблема, но SerialPort.ReadExisting() только считывает данные, немедленно доступны (например, в потоке и буфера).

Ваша программа записывает данные на модем и сразу вызывает ReadExisting(). ReadExisting немедленно вернется без каких-либо данных, поскольку модем не успел ответить.

+0

I изменили мой код, как показано ниже. 'SerialPort serialPort = new SerialPort {// previus properties RtsEnable = true, DtrEnable = true }; serialPort.Open(); Thread.Sleep (100); serialPort.WriteLine ("AT" + "\ r"); Thread.Sleep (100); String outPut = serialPort.ReadLine(); Thread.Sleep (100); Console.WriteLine (outPut); serialPort.Close(); ' –

+0

Первый раз, когда вывод программ нормально, когда я подключаю модем на ПК, но после этого он показывает ** Операция завершена ** Любая идея? Что я делаю неправильно + Йоахим Исакссон –

Смежные вопросы