我有一个C#程序。我想打印出程序从串口获取的内容。
class Serial
{
public static void Main()
{
byte[] buffer = new byte[256];
using (SerialPort sp = new SerialPort("COM2", 6200))
{
sp.Open();
//read directly
sp.Read(buffer, 0, (int)buffer.Length);
//read using a Stream
sp.BaseStream.Read(buffer, 0, (int)buffer.Length);
Console.WriteLine(buffer);
}
}
}
程序写出System.byte []然后退出。
答案 0 :(得分:3)
您的buffer
变量是byte
数组。
Console.WriteLine
没有对字节数组进行特殊处理,因此它只打印ToString()
函数的结果。
如果要打印有意义的内容,则需要从包含内容的字节数组中创建一个字符串。
您可能想要致电Convert.ToBase64String
,Encoding.ASCII.GetString
或BitConverter.ToString
。
答案 1 :(得分:1)
类似于SLaks所说的,这将是修复:
string bufferText = System.Text.Encoding.Default.GetString(buffer);
Console.WriteLine(bufferText);
答案 2 :(得分:0)
因为byte[].ToString()
不能很好地打印数组的每个元素,所以它会打印出类型的名称。循环遍历它并首先构建一个字符串。