1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef _COMM_CAR_485_H_
- #define _COMM_CAR_485_H_
- //--------------私有包含
- #include "FreeRTOS.h"
- #include "task.h"
- #include "main.h"
- #include "cmsis_os.h"
- #include "task_ec800_upload.h"
- #include "usart.h"
- #include "task_communication.h"
- #include <string.h>
- //--------------私有define
- #define SEND_ENALE
- #define REC_ENALE
- #define MB_SLAVEADDR 0x01 // 从站地址
- #define FUN_CODE_03H 0x03 //功能码03H
- #define FUN_CODE_05H 0x05 //功能码05H
- //--------------重定义
- typedef struct{
- uint16_t vehicleSpeed; // 实时车速
- uint16_t dailyDrivTime; // 当日行驶时长 高字节用来表示小时,低字节用来表示分钟
- uint16_t dailyDrivMileage; // 当日行驶里程 0.1km
- uint16_t accTotalDrivTime_day; // 累积行驶总时长 天
- uint16_t accTotalDrivTime_h_min; // 累积行驶总时长 小时 分钟 高字节用来表示小时,低字节用来表示分钟
- uint16_t accTotalMileage_h; // 累积行驶总里程 高16字节
- uint16_t accTotalMileage_l; // 累积行驶总里程 低16字节
- uint16_t runTime; // 单次运行时长 高字节用来表示小时,低字节用来表示分钟
- uint16_t batCompartmentTemp; // 电池仓温度
- uint16_t demandCur; // 需求电流 0.1A
- uint16_t demandVol; // 需求电压 0.1V
- uint16_t alarmLevel; // 告警等级
- uint16_t alarmType; // 告警类型
- uint8_t batSn[40]; // 电池编码ASCII码
- uint8_t Vehicle_Num[20]; // 车辆编号
- uint8_t VIN[26]; // 车架号
- }rs485RecDate;
- extern rs485RecDate s_rs485RecDate;
- typedef struct{
- uint8_t speed; // 服务器下发的车速
- }rs485SendDate;
- extern rs485SendDate s_rs485SendDate;
- //--------------参数声明
- //--------------函数声明
- // @brief 轮询发送接收
- void rs485_poll_sendReceive(uint16_t speed);
- // @brief 485接收分析函数
- int parseModbusResponse(uint8_t *response, uint16_t responseSize);
- // 构造Modbus RTU请求函数 03 功能码
- void modbus_read_holding_registers(uint8_t slave_id, uint16_t start_address, uint16_t num_of_registers);
- // 构建Modbus 10功能码(写多个寄存器)请求帧
- void modbus_write_holding_registers(uint8_t slaveID, uint16_t startAddress, uint16_t numRegisters, uint16_t *values);
- #endif
|