关于c# serial port 接受信号并显示的问题 20

现在的程式可以接受并显示单一信号,但是如果收到多于一个信号时,就只能显示最新的那个,我想要显示所有信号,怎么破?我现在的程式如下:privatevoidDataRecei... 现在的程式可以接受并显示单一信号,但是如果收到多于一个信号时,就只能显示最新的那个,我想要显示所有信号,怎么破?我现在的程式如下:
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
byte[] b = new byte[8];
int Received = 0;
SerialPort sp = (SerialPort)sender;
Received += sp.Read(b, Received, 8 - Received);
if (Received < 8) return;
float f11 = BitConverter.ToSingle(b, 0);
float f22 = BitConverter.ToSingle(b, 4);
this.BeginInvoke(new Action(() =>
{
textBox3.Text = f11.ToString() + " "+f22.ToString()+"\r\n";
MessageBox.Show(" New Message Received!");
}));
Received = 0;
}
展开
 我来答
ngoodshao
2014-08-19
知道答主
回答量:18
采纳率:0%
帮助的人:6.5万
展开全部
void SPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
System.IO.Ports.SerialPort serialPort = (System.IO.Ports.SerialPort)sender;
//此处 获取端口缓冲区中的所有内容
string strTmp = serialPort.ReadExisting();
}
以上你试试,另外如果你觉得时间不够怕读不到数据可以加个sleep时间,然后再读。
读取到的数据,有可能没有分隔开来,所以需要你的数据在发送到端口时最好加个分隔符来区分是不同的信号来源。
追问
你好,详细你的回答!可以再具体一点么?你说的这些我不懂,我就客串写下程序,,,
追答
那个你把我的以下代码替换你的代码后,调试一下看strTmp中得到的数据是否为你想要的,然后你就明白我的意思了,另外你要是客串的话,那和你可能解释不清楚。。。(- -):
System.IO.Ports.SerialPort serialPort = (System.IO.Ports.SerialPort)sender;
//此处 获取端口缓冲区中的所有内容
string strTmp = serialPort.ReadExisting();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式