关于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;
} 展开
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;
} 展开
1个回答
展开全部
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时间,然后再读。
读取到的数据,有可能没有分隔开来,所以需要你的数据在发送到端口时最好加个分隔符来区分是不同的信号来源。
{
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();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询