从串行缓冲区打印C#的问题

时间:2010-10-13 17:21:27

标签: c#

我有一个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 []然后退出。

3 个答案:

答案 0 :(得分:3)

您的buffer变量是byte数组。

Console.WriteLine没有对字节数组进行特殊处理,因此它只打印ToString()函数的结果。

如果要打印有意义的内容,则需要从包含内容的字节数组中创建一个字符串。

您可能想要致电Convert.ToBase64StringEncoding.ASCII.GetStringBitConverter.ToString

答案 1 :(得分:1)

类似于SLaks所说的,这将是修复:

string bufferText = System.Text.Encoding.Default.GetString(buffer);
Console.WriteLine(bufferText);

答案 2 :(得分:0)

因为byte[].ToString()不能很好地打印数组的每个元素,所以它会打印出类型的名称。循环遍历它并首先构建一个字符串。