[英]How to print Serial port incomming data to lable
private void cliButton_Click(object sender, EventArgs e)
{
sp = new SerialPort();
sp.PortName = "COM14";
sp.BaudRate = 19200;
sp.Parity = Parity.None;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Handshake = Handshake.RequestToSend;
sp.DtrEnable = true;
sp.RtsEnable = true;
sp.Open();
if (!sp.IsOpen)
{
MessageBox.Show("Serial port is not opened");
return;
}
sp.WriteLine("AT" + Environment.NewLine);
sp.WriteLine("AT+CLIP=1" + Environment.NewLine);
byte [] data= new byte [sp.BytesToRead];
sp.Read(data, 0, data.Length);
}
这是我的代码。 用于通过串口与手机通讯。 在这里,我向串行端口发送AT命令(AT + CLIP = 1,此命令用于接收传入呼叫的CLI)。 然后,我读取了串行端口的数据。 我的问题是如何在标签中打印此读取的数据。
当您在没有调试器的情况下运行此代码时,BytesToRead将为0。 串行端口设备发送响应需要花费时间。 这应该可以解决您的问题:
label1.Text = sp.ReadLine();
ReadLine()保持读取状态,直到在响应中检测到SerialPort.NewLine为止。
如果只想显示返回的结果,则可以执行以下操作:
label.Text = sp.ReadExisting();
如果要以空格分隔的十六进制格式显示端口输出,请使用以下命令:
_label.Text = string.Join(" ", data.Select(b => string.Format("{0:X2}", b)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.