Data_deal.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __data_deal_H__
  2. #define __data_deal_H__
  3. #include "stdio.h"
  4. #include "string.h"
  5. #include "stdint.h"
  6. #include <ctype.h>
  7. typedef struct _SDateTime{
  8. int year;
  9. char month;
  10. char day;
  11. char hour;
  12. char min;
  13. char sec;
  14. char week;
  15. int msec;
  16. }SDateTime;
  17. void StrToHex(uint8_t *pbDest, uint8_t *pbSrc, int nLen); //字符串转成16进制数
  18. void HexToStr(uint8_t *pbDest, uint8_t *pbSrc, int nLen); //16进制转换成字符串
  19. void Switch_U32_To_BYTE4(unsigned long temp_U32_data, unsigned char*data); //将32位无符号整数转成4字节数组存储
  20. unsigned long Switch_BYTE4_To_U32(unsigned char*data); //将U32的4字节数组转成32位无符号整数
  21. void Switch_S32_to_ASCII(signed long data, unsigned char*str); //将32位有符号整数转成ASCII字符串显示
  22. void Switch_Float_To_ASCII(float temp_float_data, unsigned char*str); //将浮点数转成ASCII字符串
  23. void Switch_S16_To_Byte2(signed short temp_S16_data, unsigned char*data); //将有符号整数转成2字节数组存储
  24. signed short Switch_Byte2_To_S16(unsigned char*data); //2字节数组转成有符号整数
  25. float Switch_Byte4_To_Float(unsigned char*data); //四字节数组转成浮点数
  26. void Switch_Float_To_Byte4(float temp_float_data, unsigned char*data); //将浮点数转成四字节数组存储
  27. void Data32ToBuf(uint16_t *buf, uint32_t data32); //4字节数存放到数组中 数组起始地址存放高字节
  28. int32_t BufToData32(uint16_t *buf); //2字节数组组成一个32位数 数组起始地址存放高字节
  29. void S32_to_u8(signed long data,unsigned char*str);
  30. uint16_t LRC_Check(uint8_t *data);
  31. uint16_t Calc_LRC(uint8_t* data, int data_len);
  32. uint8_t MODBUS_ASCII_GetLrc(uint8_t *pCyAsciiBuf, uint16_t cyLen);
  33. uint8_t MODBUS_Hex_GetLrc(uint8_t *pCyAsciiBuf, uint8_t cyLen);
  34. uint8_t MODBUS_ASCII_AsciiToHex(uint8_t *pbDest);
  35. void MODBUS_S32_to_ASCII(int32_t data32 ,uint8_t *pAsciiBuf );
  36. void MODBUS_S16_to_ASCII(int16_t data16 ,uint8_t *pAsciiBuf );
  37. void MODBUS_S8_to_ASCII(int8_t data8 ,uint8_t *pAsciiBuf );
  38. uint16_t CRC16(unsigned char *pBuf,int nLength) ;
  39. unsigned short CRC16_MODBUS(unsigned char *puchMsg, unsigned int usDataLen);
  40. float MODBUS_ASCII_AsciiToFlaot(uint8_t *pbDest);
  41. void MODBUS_Float_to_ASCII(float data32 ,uint8_t *pAsciiBuf );
  42. //单字节BCD转为HEX子程序
  43. unsigned char BCDtoHEX(unsigned char bcd_data);
  44. //单字节HEX转为BCD子程序
  45. unsigned char HEXtoBCD(unsigned char hex_data);
  46. /********** BCD to HEX **********/
  47. //双字节数值范围:0~9999
  48. uint16_t BCD2HEX(uint16_t bcd);
  49. /********** BCD to HEX **********/
  50. //双字节数值范围:0~9999
  51. uint16_t HEX2BCD(uint16_t hex);
  52. #endif