dlt645_sample.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*************************************************
  2. Copyright (c) 2019
  3. All rights reserved.
  4. File name: sample.c
  5. Description: DLT645 软件包使用样例
  6. History:
  7. 1. Version:
  8. Date: 2019-09-23
  9. Author: wangjunjie
  10. Modify:
  11. *************************************************/
  12. #include "dlt645.h"
  13. #include "rtthread.h"
  14. #include "stdio.h"
  15. #include "dlt645_port.h"
  16. // dlt645 采集测试标识符 (A相电压)
  17. #define DLT645_2007_READ_TEST_CODE 0x02010100
  18. #define DLT645_1997_READ_TEST_CODE 0xB611
  19. uint8_t test_addr[6] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
  20. /**
  21. * Name: dlt645_read_test
  22. * Brief: dlt645协议采集测试程序
  23. * Input: None
  24. * Output: None
  25. */
  26. static void dlt645_read_test(void) {
  27. uint8_t read_buf[4];
  28. rt_memset(read_buf, 0, 4);
  29. // 设置从机地址
  30. dlt645_set_addr(&dlt645, test_addr);
  31. // 设置debug模式
  32. dlt645_set_debug(&dlt645, 0);
  33. // if(dlt645_read_data(&dlt645,DLT645_1997_READ_TEST_CODE,read_buf,DLT645_1997) > 0) //1997采集测试
  34. if (dlt645_read_data(&dlt645, DLT645_2007_READ_TEST_CODE, read_buf, DLT645_2007) > 0) // 2007采集测试
  35. {
  36. printf("读取成功,A相电压值为: %.2f \r\n", *(float *)read_buf);
  37. } else {
  38. rt_kprintf("读取失败\r\n");
  39. }
  40. }
  41. /**
  42. * Name: dlt645_entry
  43. * Brief: dlt645协议测试线程
  44. * Input: None
  45. * Output: None
  46. */
  47. void dlt645_entry(void *param) {
  48. // dlt645 硬件层初始化
  49. dlt645_port_init();
  50. while (1) {
  51. // 采集测试
  52. dlt645_read_test();
  53. rt_thread_mdelay(1000);
  54. }
  55. }
  56. int dlt645_test(void) {
  57. rt_thread_t tid;
  58. tid = rt_thread_create("dlt645", dlt645_entry, RT_NULL, 4096, 8, 20);
  59. if (tid != RT_NULL) rt_thread_startup(tid);
  60. return 0;
  61. }
  62. MSH_CMD_EXPORT(dlt645_test, dlt645 test);