none
C# 串口通讯数据格式 RRS feed

  • 问题

  • 请问怎么把123.56转成0X01  0X02  0X03 0X88 0X05 0X06 ,其中0X88为小数点

    +123.56转成 0XAA 0X01  0X02  0X03 0X88 0X05 0X06 
    -123.56转成  0X55 0X01  0X02  0X03 0X88 0X05 0X06 

    2013年10月25日 3:02

答案

  • 你好:

    欢迎来到MSDN中文论坛。

    如果按照你的要求的话,最简单的方法可以这样做:

    1. 将double类型转换为string类型

    2. 便利string类型中的每一个char

    3. 判断char是一个数字的话就直接转换为0x0+char.ToString(),如果是.转换为0x88,如果是+转换为0xAA,如果是-转换为0x55

    不过我不太确定你这种转换方法是否是正确的,串口接收的数据格式一般是byte[]类型的吧,一般情况下串口通讯中下面2个方法就可以了,一个是将需要传送的数据转换为byte[]格式发送给串口,一个是将串口接收到的byte[]格式转换为字符串:

    public static string ByteToString(byte[] InBytes)
            {
                string StringOut = "";
                foreach (byte InByte in InBytes)
                {
                    StringOut = StringOut + String.Format("{0:X2} ", InByte);
                }
                return StringOut;
            }
    
            public static byte[] StringToByte(string InString)
            {
                string[] ByteStrings;
                ByteStrings = InString.Split(" ".ToCharArray());
                byte[] ByteOut;
                ByteOut = new byte[ByteStrings.Length - 1];
                for (int i = 0; i == ByteStrings.Length - 1; i++)
                {
                    ByteOut[i] = Convert.ToByte(("0x" + ByteStrings[i]));
                }
                return ByteOut;
            } 


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年10月28日 12:06
    版主