EDN首页   博客首页

日志档案

发表于 2008-7-31 9:38:55

3

标签: 串口  通讯  

串口接收二进制数的显示问题。

串口通讯由于下位机一般都是MCU,不支持Unicode编码。我们采用二进制数据进行通讯。接收的数据为byte[]格式的字节串。而PC机的显示都是Unicode编码的string字符串。我们需要进行转化。
下面代码ToCharString()是byte[]格式的字节串转化成HEX十六进制数的显示方式。例如MCU发送“12345”,接收将显示“3132333435”。
 ToCharString()是 byte[]格式的字节串转化成Unicode编码的string字符串的显示方式 。例如MCU发送“12345”,接收将显示“12345”。


      static char[] hexDigits = {
        '0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

        public static string ToHexString(byte[] bytes)
        {
            char[] chars = new char[bytes.Length * 2];
            for (int i = 0; i < bytes.Length; i++)
            {
                int b = bytes[i];
                chars[i * 2] = hexDigits[b >> 4];
                chars[i * 2 + 1] = hexDigits[b & 0xF];
            }
            return new string(chars);
        }
        public static string ToCharString(byte[] bytes)
        {
            char[] chars = new char[bytes.Length];
            for (int i = 0; i < bytes.Length; i++)
            {
                chars[i ] = (char)bytes[i];
               
            }
            return new string(chars);
        }

系统分类: 工业控制   |   用户分类: 仪表-软件-通讯   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(731)    回复(0)  

投一票您将和博主都有获奖机会!