MyMach.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef __MY_MACH_H
  2. #define __MY_MACH_H
  3. /* 包含的头文件---------------------------------------------------------------*/
  4. #include <stdio.h>
  5. /* 类型定义 ------------------------------------------------------------------*/
  6. /* 常量定义 ------------------------------------------------------------------*/
  7. enum
  8. {
  9. A_SENDING, //发送中
  10. A_WAITTING, //等待回复
  11. A_RE_SENDING, //重发
  12. A_RES_OK, //结果:成功
  13. A_RES_ERROR, //结果:一次错误
  14. A_RES_OUTTIME, //结果:超时
  15. A_RES_ALLSTEP_OK, //结果:所有步骤都成功
  16. A_RES_DOMSG_OK, //获取DO信息OK
  17. A_MAX
  18. };
  19. /* 宏定义 --------------------------------------------------------------------*/
  20. #define max(a,b) ( ((a)>(b)) ? (a):(b) )
  21. #define min(a,b) ( ((a)>(b)) ? (b):(a) )
  22. #define ARRAY_SIZE( ARRAY ) (sizeof (ARRAY) / sizeof (ARRAY[0]))
  23. #define GetBit(dat,bit) (((dat)&(1<<(bit)))?1:0)
  24. #define SetBit(dat,bit,val) ((val)?((dat)|=(1<<(bit))):((dat)&=(~(1<<(bit)))))
  25. #define setBitMask(dat, bitMask, setval) ((dat)=(((dat)&(~(bitMask)))|((setval)&(bitMask))))
  26. #define Put16Byte(Low8Byte,Hig8Byte) (((Low8Byte&(0xFF*1UL)))|(((Hig8Byte&(0xFF*1UL)))<<8))
  27. #define GetHig8Byte(dat) (((dat*1UL)>>8)&0xFF)
  28. #define GetLow8Byte(dat) (((dat*1UL)>>0)&0xFF)
  29. typedef unsigned int uint_32 ;
  30. typedef unsigned short uint_16 ;
  31. //16位
  32. #define BSWAP_16(x) \
  33. (uint_16)((((uint_16)(x) & 0x00ff) << 8) | \
  34. (((uint_16)(x) & 0xff00) >> 8) \
  35. )
  36. //32位
  37. #define BSWAP_32(x) \
  38. (uint_32)((((uint_32)(x) & 0xff000000) >> 24) | \
  39. (((uint_32)(x) & 0x00ff0000) >> 8) | \
  40. (((uint_32)(x) & 0x0000ff00) << 8) | \
  41. (((uint_32)(x) & 0x000000ff) << 24) \
  42. )
  43. #define BinToHex(n) \
  44. ( \
  45. ((n>>21)&0x80)| \
  46. ((n>>18)&0x40)| \
  47. ((n>>15)&0x20)| \
  48. ((n>>12)&0x10)| \
  49. ((n>>9)&0x08)| \
  50. ((n>>6)&0x04)| \
  51. ((n>>3)&0x02)| \
  52. ((n)&0x01) \
  53. )
  54. #define Bin(n) BinToHex(0x##n##l)
  55. #define _STR(s) #s
  56. #define STR(s) _STR(s) // 转换宏
  57. #define _CONS(a,b) int(a##e##b)
  58. #define CONS(a,b) _CONS(a,b) // 转换宏
  59. /* 函数定义------------------------------------------------------------------ */
  60. #endif