dlt645.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef _DLT645_H
  2. #define _DLT645_H
  3. #include <stdint.h>
  4. #include "ucos_ii.h"
  5. #define DL645_MAX_READ_LEN 200 //读数据的最大数据长度
  6. #define DL645_MAX_WRITE_LEN 50 //写数据的最大数据长度
  7. // port setting
  8. #define DLT645_DEFAULT_RESPONSE_TIMEOUT 500 //500ms
  9. #define MAX_DEVICE_NAME_LEN 10 //最大设备名长度
  10. #define dlt_malloc malloc
  11. #define dlt_free free
  12. #define gettick( ) ( OSTimeGet() )
  13. //DLT645 环境结构体
  14. typedef struct dlt645
  15. {
  16. uint8_t addr[6]; //从机地址
  17. uint8_t debug; //调试标志
  18. int (*write)(struct dlt645 *ctx, uint8_t *buf, uint16_t len); //底层写函数
  19. int (*read) (struct dlt645 *ctx, uint8_t *msg, uint16_t len); //底层读函数
  20. void *port_data; //移植层拓展接口
  21. } dlt645_t;
  22. typedef enum
  23. {
  24. DLT645_2007 = 1,
  25. DLT645_1997
  26. } dlt645_protocal;
  27. //设置从机地址
  28. extern void dlt645_set_addr(dlt645_t *ctx, uint8_t *addr);
  29. //设置调试开关
  30. extern int dlt645_set_debug(dlt645_t *ctx, int flag);
  31. //数据采集
  32. extern int dlt645_read_data(dlt645_t *ctx, uint32_t code, uint8_t *read_data, dlt645_protocal protocal);
  33. //十进制转BCD码(32位)
  34. extern uint32_t dec_to_bcd(uint32_t val);
  35. //字符串转BCD形式
  36. extern int str_to_bcd(char *str, uint8_t *bcd_store_address, uint16_t bcd_len);
  37. extern void dlt645_init(uint32_t timeout);
  38. extern void dlt_callback(void);
  39. #endif