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)到serialport。然后我读取串口数据。我的问题是我如何在标签中打印这个带引线的数据。
答案 0 :(得分:1)
当您在没有调试器的情况下运行此代码时,BytesToRead将为0。串口设备发送响应需要一些时间。这应该解决你的问题:
label1.Text = sp.ReadLine();
ReadLine()继续读取,直到它在响应中检测到SerialPort.NewLine。
答案 1 :(得分:0)
如果您只想显示返回的结果,可以执行以下操作:
label.Text = sp.ReadExisting();
答案 2 :(得分:0)
如果要以空格分隔的十六进制格式显示端口输出,请使用以下命令:
_label.Text = string.Join(" ", data.Select(b => string.Format("{0:X2}", b)));