C# 用serialport控件怎么接收数据详解步骤
2个回答
展开全部
这个控件的事件里面有个数据接收,每次有数据流入都会触发,你可以在那里面写上写一些接收数据的代码。然后在处理数据,要注意的是,这个接收动作是在别的线程上完成的,所以不能直接在主线程显示。那样是不安全的。需要调用委托才可以。我会的也不多,你参考下我的代码吧。
private void serialPortB_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[200];
int length = serialPortB.Read(data, 0, 200);
string Read = Encoding.Default.GetString(data, 0, length);
W_Reveive(Read);
}
private void W_Reveive(string text)//这里调用了一个委托,这样就可以在主线程刷新数据了
{
if (this.textBox1.InvokeRequired)
{ D_power d = new D_power(W_Reveive);
this.Invoke(d, new object[] { text });
}
else
{
Scane(text);//这个函数是最后实际处理数据的,此次可以设置为显示数据。
}
}
private void serialPortB_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[200];
int length = serialPortB.Read(data, 0, 200);
string Read = Encoding.Default.GetString(data, 0, length);
W_Reveive(Read);
}
private void W_Reveive(string text)//这里调用了一个委托,这样就可以在主线程刷新数据了
{
if (this.textBox1.InvokeRequired)
{ D_power d = new D_power(W_Reveive);
this.Invoke(d, new object[] { text });
}
else
{
Scane(text);//这个函数是最后实际处理数据的,此次可以设置为显示数据。
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |