⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typeconversion.c

📁 Modbus串口通讯协议通讯源代码
💻 C
字号:

*******************************************************************************/

#include "TypeConversion.h"

//---------------------------------------------------------------------------
/*把0到15(0XF)的数转化为单个字符*/
INT8U HexToChar(INT8U value)
{
    return (value < 10) ? (value + '0') : (value - 10 + 'A');
}
//---------------------------------------------------------------------------
/*把单个字符转化为0到15(0XF)的数*/
INT8U CharToHex(INT8U data)
{
    return (data<='9')?(data-'0'):((data<='F')?(data-'A'+10):(data-'a'+10));
}




//---------------------------------------------------------------------------
/*把位信息转化为单字符*/
void BitToStr(INT8U value, INT8U *array)
{
    array[0] = HexToChar(value);
}
//---------------------------------------------------------------------------
/*把0到255(0XFF)的单个字节转化为字符串*/
void ByteToStr(INT8U value, INT8U *array)
{
    array[0] = HexToChar(value >> 4);
    array[1] = HexToChar(value & 0X0F);
}
//---------------------------------------------------------------------------
/*把0到65535(0XFFFF)的单个字转化为字符串*/
void WordToStr(INT16U value, INT8U *array)
{
    INT16U tmpHigh = 0;
    INT16U tmpLow = 0;
    tmpHigh = value >> 8;
    tmpLow = value & 0X00FF;

    ByteToStr((INT8U)tmpHigh, array);
    ByteToStr((INT8U)tmpLow, &array[2]);
}
//---------------------------------------------------------------------------
/*把0到4294967295(0XFFFFFFFF)的双字转化为字符串*/
void DWordToStr(INT32U value, INT8U *array)
{
    INT32U tmpHigh = 0;
    INT32U tmpLow = 0;
    tmpHigh = value >> 16;
    tmpLow = value & 0X0000FFFF;

    WordToStr((INT16U)tmpHigh, array);
    WordToStr((INT16U)tmpLow, &array[4]);
}





//---------------------------------------------------------------------------
/*把单个字符转化为位信息*/
INT8U AsciiToBit(const INT8U *array)
{
    return (CharToHex(array[0]));
}
//---------------------------------------------------------------------------
/*把字符串转化为0到255(0XFF)的单个字节*/
INT8U AsciiToByte(const INT8U *array)
{
    return ((CharToHex(array[0]) << 4) | CharToHex(array[1]));
}
//---------------------------------------------------------------------------
/*把字符串转化为0到65535(0XFFFF)的单个字*/
INT16U AsciiToWord(const INT8U *array)
{
    INT16U temp = 0;
    INT8U  tmpHigh = 0;
    INT8U  tmpLow = 0;
    tmpHigh = AsciiToByte(array);          //取前两个字节组成高半字
    tmpLow = AsciiToByte(&array[2]);       //取后两个字节组成低半字

    temp = ((INT16U)tmpHigh << 8) | ((INT16U)tmpLow);
    return temp;
}
//---------------------------------------------------------------------------
/*把字符串转化为0到4294967295(0XFFFFFFFF)的双字*/
INT32U AsciiToDWord(const INT8U *array)
{
     INT32U temp = 0;
     INT16U tmpHigh = 0;
     INT16U tmpLow = 0;
     tmpHigh = AsciiToWord(array);          //取前四个字节组成高字
     tmpLow = AsciiToWord(&array[4]);       //取后四个字节组成低字

     temp = ((INT32U)tmpHigh << 16) | ((INT32U)tmpLow);
     return temp;
}
//---------------------------------------------------------------------------
/*计算字符串msg的校验码
INT8U  CaculateLRC(const INT8U *msg, INT16U msgLength)
{
  INT8U uchLRC = 0;
  while (msgLength--)
  {
    uchLRC += *msg++;
  }
  return (INT8U)(-(INT8S)uchLRC);
} */
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -