データをポートから読み取ってテキストボックスに表示する必要がある次のコードがあります。この目的のためにDataReceivedイベントハンドラを使用していますが、このデータをテキストボックスに表示する方法はわかりません。さまざまな情報源から、私はInvokeメソッドをこのために使うべきだが、donotはそれを使う方法を知っていることを学んだ。提案...シリアルポートのDataReceivedイベントハンドラで読み取ったデータを表示する方法
private void Form1_Load(object sender, EventArgs e)
{
//SerialPort mySerialPort = new SerialPort("COM3");
mySerialPort.PortName = "COM3";
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);
mySerialPort.Open();
}
private void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string s= sp.ReadExisting();
// next i want to display the data in s in a textbox. textbox1.text=s gives a cross thread exception
}
private void button1_Click(object sender, EventArgs e)
{
mySerialPort.WriteLine("AT+CMGL=\"ALL\"");
}
私はあなたのサンプルコードを試して、このスレッドに基づいて簡単なC#ソリューションを構築しました。私は私のモデムで 'DataReceived'を読むことができませんでした。私はバランスをチェックするためにwavecomモデムを使用しています。私はそれを修正してください助けてください? – aminvincent