C# WPF2012 接收串口数据实时显示 10

voidReceiveData(objectsender,System.IO.Ports.SerialDataReceivedEventArgse){stringrecD... void ReceiveData(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string recData;

byte[] recBuffer = new byte[SP.BytesToRead]; //接收数据并缓存
SP.Read(recBuffer, 0, recBuffer.Length); //读取数据
recData = System.Text.Encoding.Default.GetString(recBuffer); //数据转码
TtB_ReceiveBox.Text += recData; //数据加显到TextBox接受区
}

小白,学习C#,想实时显示串口接收的数据。接收相关代码如上,未能成功显示在接收区,求解,致谢!!
展开
 我来答
lrh3321
2015-08-07 · TA获得超过2183个赞
知道大有可为答主
回答量:2296
采纳率:75%
帮助的人:2118万
展开全部

你确定串口发过来的数据一定是文本值?

把 给recData 赋值的语句改成下面的再看看有没有输入先。

recData =  BitConverter.ToString(recBuffer)//

 下面是控制台程序使用的代码

using System;
using System.IO.Ports;

class PortDataReceived
{
    public static void Main()
    {
        SerialPort mySerialPort = new SerialPort("COM1");

        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;

        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        mySerialPort.Open();

        Console.WriteLine("Press any key to continue...");
        Console.WriteLine();
        Console.ReadKey();
        mySerialPort.Close();
    }

    private static void DataReceivedHandler(
                        object sender,
                        SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
    }
}
更多追问追答
追问
首先非常感谢!
改了,没有输入。
串口过来的是16进制数据。我想好歹得有个显示先,哪怕是乱码。问题是串口助手能拿到数据,但是这边就是显示空白
追答
看看上面的代码,没输入会不会你的串口没打开?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式