private void BTNSend_Click(object sender, EventArgs e)
{
try
{
this.serialPort1.Write(this.TXTSend.Text.ToString().Trim());
this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);//为何这一句执行完了就结束了??不会调用serialPort1_DataReceived,加断点都不会执行
}
catch (Exception Ex)
{
throw Ex;
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s = "";
int count = this.serialPort1.BytesToRead;
byte[] data = new byte[count];
this.serialPort1.Read(data, 0, count);
foreach (byte item in data)
{
s += Convert.ToChar(item);
}
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { this.TXTRecieve.Text = s; }));
}
else
{
this.TXTRecieve.Text = s;
}
}
------解决思路----------------------
看来SP更能理解你的问题
我是没往那方面联想
谁能想到你连回调函数是什么都还没弄清楚
既然它是个事件,那当然是你串口收到数据的时候,才会由系统去调用它执行,而不是立即执行
否则就不用什么+=了
直接在代码里执行serialPort1_DataReceived()不就好了