繁体   English   中英

如何将串口输入数据打印到标签

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM