命令信息到文本框
本文关键字:文本 信息 命令 | 更新日期: 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尝试这个