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#,想实时显示串口接收的数据。接收相关代码如上,未能成功显示在接收区,求解,致谢!! 展开
{
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#,想实时显示串口接收的数据。接收相关代码如上,未能成功显示在接收区,求解,致谢!! 展开
1个回答
展开全部
你确定串口发过来的数据一定是文本值?
把 给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进制数据。我想好歹得有个显示先,哪怕是乱码。问题是串口助手能拿到数据,但是这边就是显示空白
追答
看看上面的代码,没输入会不会你的串口没打开?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询