C # AT Информация о команде в текстовое поле

c# at-command

226 просмотра

2 ответа

я хочу спросить, как отправить по команде информацию в текстовое поле?

Мой код

serialPort1.Open();

//manuf
serialPort1.Write("AT+CGMI" + System.Environment.NewLine);
//Thread.Sleep(1000);
txtmanuf.text=serialport1.ReadTo("AT+CGMI").ToString();

//TYPE MODEM
serialPort1.Write("AT+CGMM" + System.Environment.NewLine);
Thread.Sleep(1000);
txtType.Text= serialPort1.ReadExisting().ToString();

//IMEI
serialPort1.Write("AT+CGSN" + System.Environment.NewLine);
Thread.Sleep(1000);
txtimei.text=serialport1.ReadTo("AT+CGSN").ToString();

//phone number
serialPort1.Write("AT+CNUM" + System.Environment.NewLine);
Thread.Sleep(1000);
txtphone.text=serialport1.ReadTo("AT+CNUM").ToString();

Если я использую ReadExisting (), вся информация вводится в одно текстовое поле, и если я использую ReadTo («AT + ..»), ошибок нет, но когда я запускаю программу и нажимаю кнопку, моя программа сразу закрывается

Автор: TomiTeruz Источник Размещён: 08.11.2019 10:56

Ответы (2)


0 плюса

Проблема в том, что ваш Eventhandler находится в другом потоке, чем ваш поток пользовательского интерфейса. Вам нужно вызвать Invoke в текстовом поле, чтобы установить текст.

textbox.Invoke(()=>{textbox.Text=serialport.ReadExisting().ToString();});

Может быть, Invoke называется немного по-другому. Я не могу проверить это в настоящее время.

Автор: Thomas Voß Размещён: 20.08.2016 06:21

0 плюса

Похоже, вы не обрабатываете свое исключение, поэтому оно закрывается, однако, если ReadExisting () работает для вас, попробуйте это

string data=Process(serialPort1.readExisting(),"AT+..");

и код для процесса следующий

private string Process(string input,string rto)
{
   int location=input.indexOf(rto);
   string temp=null;
   char[] array=input.toCharArray();
   for(int i=0;i<location;i++)
   {
      temp+=array[i];
   }
   temp=temp.Remove(location,rto.Length);
   serialPort1.DiscardInBuffer();
  return temp;
}

Согласно этой ссылке readto просто читает буфер в указанную строку, и указанная строка не включается, она удаляется из буфера, так что это альтернатива read, чтобы попробовать это

Автор: Zain Ul Abidin Размещён: 20.08.2016 06:44
Вопросы из категории :
32x32