命令信息到文本框

本文关键字:文本 信息 命令 | 更新日期: 2023-09-27 18:03:16

我想问一下如何发送命令信息到文本框?

我的代码是
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+..")则没有错误,但是当我运行程序并单击我的按钮时,我的程序直接关闭

命令信息到文本框

问题是,你的eventandler与你的ui线程在不同的线程上。您需要在文本框上调用Invoke来设置您的文本。

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

调用可能有点不同。

看起来你没有处理你的异常,这就是为什么它关闭,但是如果readeexisting()为你工作,然后尝试这个

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

和Process的代码在

后面
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只是读取缓冲区到指定的字符串,指定的字符串不包括,它被从缓冲区中删除,所以它的替代readto尝试这个