comm_car_485(1637).h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef _COMM_CAR_485_H_
  2. #define _COMM_CAR_485_H_
  3. //--------------私有包含
  4. #include "FreeRTOS.h"
  5. #include "task.h"
  6. #include "main.h"
  7. #include "cmsis_os.h"
  8. #include "task_ec800_upload.h"
  9. #include "usart.h"
  10. #include "task_communication.h"
  11. #include <string.h>
  12. //--------------私有define
  13. #define SEND_ENALE
  14. #define REC_ENALE
  15. #define MB_SLAVEADDR 0x01 // 从站地址
  16. #define FUN_CODE_03H 0x03 //功能码03H
  17. #define FUN_CODE_05H 0x05 //功能码05H
  18. //--------------重定义
  19. typedef struct{
  20. uint16_t vehicleSpeed; // 实时车速
  21. uint16_t dailyDrivTime; // 当日行驶时长 高字节用来表示小时,低字节用来表示分钟
  22. uint16_t dailyDrivMileage; // 当日行驶里程 0.1km
  23. uint16_t accTotalDrivTime_day; // 累积行驶总时长 天
  24. uint16_t accTotalDrivTime_h_min; // 累积行驶总时长 小时 分钟 高字节用来表示小时,低字节用来表示分钟
  25. uint16_t accTotalMileage_h; // 累积行驶总里程 高16字节
  26. uint16_t accTotalMileage_l; // 累积行驶总里程 低16字节
  27. uint16_t runTime; // 单次运行时长 高字节用来表示小时,低字节用来表示分钟
  28. uint16_t batCompartmentTemp; // 电池仓温度
  29. uint16_t demandCur; // 需求电流 0.1A
  30. uint16_t demandVol; // 需求电压 0.1V
  31. uint16_t alarmLevel; // 告警等级
  32. uint16_t alarmType; // 告警类型
  33. uint8_t batSn[40]; // 电池编码ASCII码
  34. uint8_t Vehicle_Num[20]; // 车辆编号
  35. uint8_t VIN[26]; // 车架号
  36. }rs485RecDate;
  37. extern rs485RecDate s_rs485RecDate;
  38. typedef struct{
  39. uint8_t speed; // 服务器下发的车速
  40. }rs485SendDate;
  41. extern rs485SendDate s_rs485SendDate;
  42. //--------------参数声明
  43. //--------------函数声明
  44. // @brief 轮询发送接收
  45. void rs485_poll_sendReceive(uint16_t speed);
  46. // @brief 485接收分析函数
  47. int parseModbusResponse(uint8_t *response, uint16_t responseSize);
  48. // 构造Modbus RTU请求函数 03 功能码
  49. void modbus_read_holding_registers(uint8_t slave_id, uint16_t start_address, uint16_t num_of_registers);
  50. #endif