123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- #include "soft_engine.h"
- #include "soft_crc.h"
- #include "crc.h"
- #include "string.h"
- #include "soft_p_2_c.h"
- #include "soft_test.h"
- #include "soft_uart.h"
- struct ENGINE_DATA engine_data;
- //串口接收奥安发动机数据
- AOAN_TYPE aoan_data = {0, .engin_warn = 0xffff};
- Connect_check aoan_engine_Link;
- //解析奥安油电混传感器数据
- short decode_aoan_engine(uint8_t *pdata, uint16_t length)
- {
- short rst = 0;
- if (pdata[0] == 0x5A && pdata[1] == 0xA5 && pdata[2] == 0x1A && pdata[3] == 0x02)
- {
- unsigned char dNum = pdata[2];
- //校验通过。
- if (Get_Crc16(pdata, dNum + 5) == 0)
- {
- rst = 1;
- aoan_engine_Link.connect_status = COMP_NORMAL;
- //赋值数据
- memcpy(&aoan_data, &pdata[3], dNum);
- aoan_engine_Link.recv_time = HAL_GetTick();
- }
- }
- return rst;
- }
- // //串口接收VKV3发动机数据
- VKV3_TYPE vkv3_data = {0, .engin_warn = 0xffff};
- // VKV3_TYPE vkv3_data2 = {0, .engin_warn = 0xffff};
- Connect_check vkv3_engine_link;
- // Connect_check vkv3_engine2_link;
- //解析V3协议油电混传感器数据
- short decode_vkv3_engine(uint8_t *pdata, uint16_t length)
- {
- short rst = 0;
- uint32_t engine_sn_temp = 0;
- static uint32_t engine_sn1 = 0;
- VKV3_TYPE *ptr = NULL;
- if (pdata[0] == 0x5A && pdata[1] == 0xA5 && pdata[2] == 0X27 && pdata[4] == 0X03)
- {
- unsigned char dLEN = pdata[2];
- unsigned char comID = pdata[3];
- //校验通过。
- if (Get_Crc16(pdata, dLEN + 6) == 0)
- {
- memcpy(&engine_sn_temp, &pdata[12], 4);
- rst = 1;
- if(engine_sn1 == 0 || engine_sn_temp == engine_sn1)
- {
- ptr = &vkv3_data;
- vkv3_engine_link.connect_status = COMP_NORMAL;
- vkv3_engine_link.recv_time = HAL_GetTick();
- if(engine_sn1 == 0)
- engine_sn1 = engine_sn_temp;
- }
- else
- {
- // ptr = &vkv3_data2;
- // vkv3_engine2_link.connect_status = COMP_NORMAL;
- // vkv3_engine2_link.recv_time = HAL_GetTick();
- }
- switch (comID)
- {
- case 0X01:
- //赋值数据
- memcpy(&ptr->engin_ver, &pdata[4], dLEN);
- break;
- default:
- break;
- }
-
- }
- }
- return rst;
- }
- bool geely_set_tcd = false,geely_set_tcd_re = false,
- geely_set_tlock = false, geely_set_tlock_re = false, geely_set_protect = false,
- geely_send_BJtime = false,geely_get_version = false,geely_get_time = false;
- GEELY2 geely_data2;
- //解析吉利发动机
- GEELY geely_data = {0};
- GEELY_MONI geely_moni = {0};
- Connect_check geely_engin_link;
- void EngGeelyCanRecvHookFunction(uint32_t cellCanID, uint8_t data[], uint8_t len)
- {
- if(cellCanID == 0x100) //第二版协议识别
- {
- geely_engin_link.connect_status = COMP_NORMAL;
- geely_engin_link.recv_time = HAL_GetTick();
- }
- else if (cellCanID == 0x1c0)
- {
- memcpy(&geely_data.engine_ver, &data[0], len);
- }
- else if (cellCanID == 0x1c1)
- {
- //木牛防地雷达会异常进入发动机识别
- geely_engin_link.connect_status = COMP_NORMAL;
-
- memcpy(&geely_data.engine_rev, &data[0], len);
- }
- else if (cellCanID == 0x1c2)
- {
- memcpy(&geely_data.engine_vol, &data[0], len);
- }
- else if (cellCanID == 0x1c3)
- {
- uint8_t checkSum = 0;
- for (uint8_t i = 0; i < 8; i++)
- {
- checkSum += data[i];
- }
- geely_moni.recv_1c3++;
- if (checkSum == 0)
- {
- memcpy(&geely_data.engine_control, &data[0], len);
- if (geely_moni.msg1c3_last + 1 != geely_data.engine_counts)
- {
- geely_moni.msg1c3_indexerr++;
- }
- geely_moni.msg1c3_last = geely_data.engine_counts;
-
-
- if(geely_data.engine_set == 0x11)
- {
- //接收保养时间反馈
- if(geely_set_tcd == true)
- {
- geely_set_tcd = false;
- geely_set_counts = 0;
-
- geely_set_tcd_re = true;
- }
- }
- if(geely_data.engine_set == 0x12)
- {
- //接收保养时间复位反馈
- if(geely_set_tcd_re == true)
- {
- geely_set_tcd_re = false;
- geely_set_counts = 0;
- }
- }
- if(geely_data.engine_set == 0x14)
- {
- //接收锁机时间反馈
- if(geely_set_tlock == true)
- {
- geely_set_tlock = false;
- geely_set_counts = 0;
-
- geely_set_tlock_re = true;
- }
- }
- if(geely_data.engine_set == 0x15)
- {
- //接收锁机时间复位反馈
- if(geely_set_tlock_re == true)
- {
- geely_set_tlock_re = false;
- geely_set_counts = 0;
- }
- }
- if(geely_data.engine_set == 0x17)
- {
- }
- }
- else
- {
- geely_moni.msg1c3_sumerr++;
- }
- }
- else if (cellCanID == 0x1c4)
- {
- memcpy(&geely_data.engine_runtime, &data[0], len);
- }
- else
- {
- if(cellCanID >= 0x1E1 && cellCanID <= 0x1EF)
- {
- geely_engin_link.connect_status = COMP_NORMAL;
- if(geely_data2.version2_flag != true)
- {
- geely_data2.version2_flag = true;
- } //作为第二版协议标志
- }
- //第二版协议
- switch (cellCanID)
- {
- case 0x031:
- geely_send_BJtime = true;
- break;
- case 0x1E1:
-
- break;
- case 0x1E2:
- geely_get_version = true;
- geely_count = 10;
- memcpy(&geely_data2.engine_ver,&data[0],8);
- break;
- case 0x1E3:
- geely_get_time = true;
- //geely_count = 10;
- memcpy(&geely_data2.engine_runtime,&data[0],8);
- break;
- case 0x1E4:
- memcpy(&geely_data2.Bit1E4,&data[0],6);
- break;
- case 0x1E8:
- memcpy(&geely_data2.engine_time,&data[0],8);
- geely_data2.engine_time = ((data[4] >> 6) & 0x3);
- break;
- case 0x1E9:
- memcpy(&geely_data2.engine_rev,&data[0],8);
- break;
- case 0x1EA:
- memcpy(&geely_data2.Bit1EA,&data[0],8);
- break;
- case 0x1EB:
- memcpy(&geely_data2.FuelConsumption,&data[0],8);
- break;
- case 0x1EC:
- memcpy(&geely_data2.EmgST0,&data[0],2);
- break;
- case 0x1ED:
- memcpy(&geely_data2.AlmST0,&data[0],8);
- break;
- case 0x1EE:
- memcpy(&geely_data2.Gear1Position,&data[0],7);
- break;
-
- default:
- break;
- }
- }
- geely_engin_link.recv_time = HAL_GetTick();
- }
- short geely_set_counts = 0;
- #pragma pack(1)
- typedef struct
- {
- uint32_t time;
- uint8_t nodecode:4;
- uint8_t message_conut0:4;
- int8_t check_sum0;
- uint8_t client_cmd;
- uint8_t syscontrol;
- uint8_t reserve0;
- uint8_t reserve1;
- uint32_t reserve2:20;
- uint8_t message_conut1:4;
- int8_t check_sum1;
- }geely_info2;
- geely_info2 geely_sendinfo2;
- #pragma pack()
- uint8_t geely_count = 15;
- uint8_t start_engine = 0; // 0x80启动 0停止
- void Geely_version2_init(void)
- {
- uint8_t can_buf[8] = {0};
- static uint8_t geely_init_count = 15;
- if(geely_data2.version2_flag != true && geely_init_count > 1)
- {
- geely_sendinfo2.client_cmd = 0x10;
- geely_sendinfo2.syscontrol = 0;
- geely_sendinfo2.check_sum1 = geely_sendinfo2.client_cmd + geely_sendinfo2.syscontrol + (geely_sendinfo2.message_conut1 << 4);
- memcpy(&can_buf[0],&geely_sendinfo2.client_cmd,8);
- geely_sendinfo2.message_conut1++;
- can_send_msg_normalstd(&can_buf[0],8,0x1E0);
- geely_init_count--;
- }
- }
- void Geely_version2_send_info( void )
- {
- uint8_t can_buf[8] = {0};
- //发送北京时间
- // if(geely_send_BJtime == false && (beijing_time.ui8Year != 0)) //上点发送,CANID不在过滤器中 不等反馈
- // {
- // geely_sendinfo2.time += beijing_time.ui8Second / 2;
- // geely_sendinfo2.time += beijing_time.ui8Minute *( 0x1 << 4);
- // geely_sendinfo2.time += beijing_time.ui8Hour *( 0x1 << 10);
- // geely_sendinfo2.time += beijing_time.ui8DayOfMonth *( 0x1 << 15);
- // geely_sendinfo2.time += beijing_time.ui8Month *( 0x1 << 20);
- // geely_sendinfo2.time += beijing_time.ui8Year *( 0x1 << 24);
- // geely_sendinfo2.nodecode = 0;
- // geely_sendinfo2.check_sum0 = geely_sendinfo2.time + geely_sendinfo2.nodecode + (geely_sendinfo2.message_conut0 << 4);
- // geely_sendinfo2.check_sum0 = 0 - geely_sendinfo2.check_sum0;
- // memcpy(&can_buf[0],&geely_sendinfo2,6);
- // geely_sendinfo2.message_conut0++;
- // can_send_msg_normalstd(&can_buf[0],6,0x030);
- // }
- //上电读取信息
- if(geely_get_version == false || geely_get_time == false)
- {
- if(geely_get_version == false)
- {
- geely_sendinfo2.client_cmd = 0x16;
- }
- else if(geely_get_time == false)
- {
- geely_sendinfo2.client_cmd = 0x17;
- }
- geely_sendinfo2.syscontrol = 0;
- geely_sendinfo2.check_sum1 = geely_sendinfo2.client_cmd + geely_sendinfo2.syscontrol + geely_sendinfo2.message_conut1;
- geely_sendinfo2.check_sum1 = 0 - geely_sendinfo2.check_sum1;
- memcpy(&can_buf[0],&geely_sendinfo2.client_cmd,8);
- geely_sendinfo2.message_conut1++;
- can_send_msg_normalstd(&can_buf[0],8,0x1E0);
- geely_count--;
- if(geely_count == 0)
- {
- geely_count = 10;
- if(geely_get_version == false)
- {
- geely_get_version = true;
- }
- else if(geely_get_time == false)
- {
- geely_get_time = true;
- }
- }
- }
- //控制发动机启停
- else
- {
- geely_sendinfo2.client_cmd = 0x12;
- geely_sendinfo2.syscontrol = start_engine;
- geely_sendinfo2.check_sum1 = geely_sendinfo2.client_cmd + geely_sendinfo2.syscontrol + (geely_sendinfo2.message_conut1 << 4) ;
- geely_sendinfo2.check_sum1 = 0 - geely_sendinfo2.check_sum1;
- memcpy(&can_buf[0],&geely_sendinfo2.client_cmd,8);
- geely_sendinfo2.message_conut1++;
- can_send_msg_normalstd(&can_buf[0],8,0x1E0);
- }
- // else
- // {
- // geely_sendinfo2.client_cmd = 0x11;
- // geely_sendinfo2.syscontrol = 0;
- // geely_sendinfo2.check_sum1 = geely_sendinfo2.client_cmd + geely_sendinfo2.syscontrol + (geely_sendinfo2.message_conut1 << 4);
- // geely_sendinfo2.check_sum1 = 0 - geely_sendinfo2.check_sum1;
- // memcpy(&can_buf[0],&geely_sendinfo2.client_cmd,8);
- // geely_sendinfo2.message_conut1++;
- // can_send_msg_normalstd(&can_buf[0],8,0x1E0);
- // }
- }
- #define SENDTO_GEELY_STATUS_ID (0X1A0)
- STO_GEELY sendto_geely = {.ExtenderControl = 0,
- .ExtenderSetting = 0x10,
- .SettingParameter = 0,
- .ExtenderBak = 0,
- .MessageCount = 0
- };
- uint32_t sendto_geely_lasttime = 0;
- uint8_t vkv3_buf[20] = {0};
- void send_msg_to_vk3(void)
- {
-
- if(vkv3_engine_link.connect_status == COMP_NORMAL &&
- uart_send_is_ok(USART_3) == true)
- {
-
- uint16_t crc = 0;
- uint8_t index = 0;
- vkv3_buf[index++] = 0x5A;
- vkv3_buf[index++] = 0xA5;
- vkv3_buf[index++] = 4;
- vkv3_buf[index++] = 0x0A;
- if(start_engine == 0x80)
- {
- vkv3_buf[index++] = 1;
- }
- else
- {
- vkv3_buf[index++] = 0;
- }
- vkv3_buf[index++] = planep.lock_status;
- vkv3_buf[index++] = planep.thr_pwm;
- vkv3_buf[index++] = planep.thr_pwm >> 8;
- crc = Get_Crc16(vkv3_buf, index);
- memcpy(&vkv3_buf[index], &crc, 2);
- index +=2;
- uart3_send_msg(vkv3_buf,index);
- }
-
- }
- void send_msg_to_geely(void)
- {
- if (geely_engin_link.connect_status == COMP_NORMAL && HAL_GetTick() - sendto_geely_lasttime > 100)
- {
- uint8_t geely[8] = {0};
- sendto_geely_lasttime = HAL_GetTick();
- Geely_version2_init();
- if(geely_data2.version2_flag == true)
- {
- Geely_version2_send_info();
- }
- else
- {
- sendto_geely.ExtenderBak = planep.thr_pwm;
- sendto_geely.DroneStatus = (planep.lock_status == 4? 1: 0); //(thr_lock_status == LOCKED ? 0 : 1);
- sendto_geely.MessageCount++;
- if(geely_set_tcd == true)
- {
- geely_set_counts++;
- if(geely_set_counts > 5){
- geely_set_tcd = false;
- geely_set_counts = 0;
- }
-
- sendto_geely.ExtenderSetting = 0x11;
- //sendto_geely.SettingParameter = 0;
- }
- else if(geely_set_tcd_re == true)
- {
- geely_set_counts++;
- if(geely_set_counts > 5){
- geely_set_tcd_re = false;
- geely_set_counts = 0;
- }
-
- sendto_geely.ExtenderSetting = 0x12;
- sendto_geely.SettingParameter = 0;
- }
- else if(geely_set_tlock == true)
- {
- geely_set_counts++;
- if(geely_set_counts > 5){
- geely_set_tlock = false;
- geely_set_counts = 0;
- }
-
- sendto_geely.ExtenderSetting = 0x14;
- //sendto_geely.SettingParameter = 0;
- }
- else if(geely_set_tlock_re == true)
- {
- geely_set_counts++;
- if(geely_set_counts > 5){
- geely_set_tlock_re = false;
- geely_set_counts = 0;
- }
-
- sendto_geely.ExtenderSetting = 0x15;
- sendto_geely.SettingParameter = 0;
- }
- else if(geely_set_protect == true)
- {
- geely_set_counts++;
- if(geely_set_counts > 5){
- geely_set_protect = false;
- geely_set_counts = 0;
- }
- sendto_geely.ExtenderSetting = 0x17;
- sendto_geely.SettingParameter = 0;
- }
- else
- {
- sendto_geely.ExtenderSetting = 0x10;
- sendto_geely.SettingParameter = 0;
-
- geely_set_counts = 0;
- }
-
- memcpy(geely, (uint8_t *)&sendto_geely.ExtenderControl, 7);
- sendto_geely.CheckSum = 0;
- for (uint8_t i = 0; i < 7; i++)
- {
- sendto_geely.CheckSum += geely[i];
- }
- sendto_geely.CheckSum = -sendto_geely.CheckSum;
- can_send_msg_normalstd(&sendto_geely.ExtenderControl, sizeof(sendto_geely), SENDTO_GEELY_STATUS_ID);
- geely_moni.send_1a0++;
- }
- }
- }
- comp_status engine_link_status = COMP_NOEXIST;
- struct ENGINE_DATA engine_data = {0, 0};
- /*
- 发动机类型 uint8 1-瑞深 2-中飞
- 发动机转速 uint16_t RPM
- 发动机油门 uint16_t
- 发动机电压 uint16_t 0.1v
- 充电电流 uint16_t 0.1A
- 发动机运行时间 uint32_t Min 总运行时间不清零
- 剩余保养时间 uint16_t Min 保养后清零
- 剩余锁机时间 uint16_t Min 锁机倒计时
- 运行状态 uint8_t 0:停止,1:等待,2:运行, 3:锁机
- 报警信息 uint16_t 按位来表示可同时容纳16种警报
- 剩余油量 uint8_t % 0%-100%
- 气缸1温度 uint16_t ℃ 0℃~300℃
- 气缸2温度 uint16_t ℃ 0℃~300℃
- PCB温度 uint8_t ℃ 0℃~255℃
- */
- /*
- 检查智能电池的连接及数据获取,主要解决兼容多厂家设备接入时的选用优先级问题。
- 更新速度至少要 5hz
- 缺少放电电流数据
- */
- void update_engine_data(void)
- {
- //监测中飞发动机
- Check_dev_link(&aoan_engine_Link,5000,(char *)&aoan_data,sizeof(AOAN_TYPE));
- //监测VKV3的发动机
- Check_dev_link(&vkv3_engine_link,5000,(char *)&vkv3_data,sizeof(VKV3_TYPE));
- //监测VKV3 2的发动机
- //Check_dev_link(&vkv3_engine2_link,5000,(char *)&vkv3_data,sizeof(VKV3_TYPE));
- //检测GEELY发动机
- Check_dev_link(&geely_engin_link,5000,(char *)&geely_data,sizeof(GEELY));
- if (aoan_engine_Link.connect_status == COMP_NORMAL)
- {
- engine_link_status = COMP_NORMAL;
- //数字显示,显示9位数
- engine_data.engine_type = 2;
- engine_data.engine_rev = aoan_data.engin_rev;
- engine_data.engine_thr = aoan_data.engin_thr;
- engine_data.engine_vol = aoan_data.engin_vol;
- engine_data.engine_elect = aoan_data.engin_elect;
- engine_data.engine_rtime = aoan_data.engin_rtime;
- engine_data.engine_tcd = aoan_data.engin_tcd;
- engine_data.engine_lcd = aoan_data.engin_lcd;
- engine_data.engine_rsta = aoan_data.engin_rsta;
- engine_data.engine_warn = aoan_data.engin_warn;
- engine_data.engine_roil = aoan_data.engin_roil;
- engine_data.engine_cyl1temp = aoan_data.engin_cyl1temp;
- engine_data.engine_cyl2temp = aoan_data.engin_cyl2temp;
- engine_data.engine_pcbtemp = aoan_data.engin_pcbtemp;
- memcpy(engine_data.engine_brand, "AOAN", 4);
- }
- else if (vkv3_engine_link.connect_status == COMP_NORMAL)
- {
- engine_link_status = COMP_NORMAL;
- //数字显示,显示9位数
- engine_data.engine_type = 3;
- engine_data.engine_rev = vkv3_data.engin_rev;
- engine_data.engine_thr = vkv3_data.engin_thr;
- engine_data.engine_vol = vkv3_data.engin_vol;
- engine_data.engine_elect = vkv3_data.engin_elect;
- engine_data.engine_rtime = vkv3_data.engin_rtime;
- engine_data.engine_tcd = vkv3_data.engin_tcd;
- engine_data.engine_lcd = vkv3_data.engin_lcd;
- engine_data.engine_rsta = vkv3_data.engin_rsta;
- engine_data.engine_warn = vkv3_data.engin_warn;
- engine_data.engine_roil = vkv3_data.engin_roil;
- engine_data.engine_cyl1temp = vkv3_data.engin_cyl1temp;
- engine_data.engine_cyl2temp = vkv3_data.engin_cyl2temp;
- engine_data.engine_pcbtemp = vkv3_data.engin_pcbtemp;
- engine_data.engine_sn = vkv3_data.engin_sn;
- memcpy(engine_data.engine_brand, vkv3_data.engin_brand, 8);
- // if(vkv3_engine2_link.connect_status == COMP_NORMAL)
- // {
-
- // }
- }
- else if (geely_engin_link.connect_status == COMP_NORMAL)
- {
- engine_link_status = COMP_NORMAL;
- engine_data.engine_type = 4;
- //数字显示,显示9位数
- if(geely_data2.version2_flag != true)
- {
- engine_data.engine_rev = geely_data.engine_rev;
- engine_data.engine_thr = geely_data.engine_thrposition * 0.1f;
- engine_data.engine_vol = geely_data.engine_vol * 2;
- engine_data.engine_elect = (short)(geely_data.engine_elect - 1000) * 2;
- engine_data.engine_rtime = geely_data.engine_runtime;
- engine_data.engine_tcd = geely_data.engine_tcd;
- engine_data.engine_lcd = geely_data.engine_tlock;
- engine_data.engine_rsta = geely_data.engine_status;
- engine_data.engine_warn = geely_data.engine_warn & 0xffef;//屏蔽总线系统异常
- engine_data.engine_roil = geely_data.engine_fuelposition * 0.5f;
- engine_data.engine_cyl1temp = geely_data.engine_cyltemp - 40;
- engine_data.engine_cyl2temp = 0;
- engine_data.engine_pcbtemp = geely_data.engine_cooltemp - 40;
- memcpy(engine_data.engine_brand, geely_data.engine_brand, 3);
- memcpy(&engine_data.engine_brand[3],"-", 1);
- snprintf((char *)&engine_data.engine_brand[4],4,"%d",(int)geely_data.engine_ver);
- engine_data.engine_sn = geely_data.engine_sn[0] * 10000000 + geely_data.engine_sn[1] * 100000 +
- geely_data.engine_sn[2] * 1000 + geely_data.engine_sn[3];
- engine_data.engine_lockstatus = geely_data.engine_control;
- engine_data.engine_fault = geely_data.engine_fault;
- }
- else
- {
- engine_data.engine_type = 4;
- engine_data.engine_rev = geely_data2.engine_rev;
- engine_data.engine_thr = geely_data2.Bit1EA.engine_ATP1 * 0.05f;
- engine_data.engine_vol = geely_data2.engine_vol * 0.1f;
- engine_data.engine_elect = (short)(geely_data2.engine_elect * 0.05f - 400) * 10;
- engine_data.engine_rtime = geely_data2.engine_runtime;
- engine_data.engine_tcd = geely_data2.engine_tcd;
- engine_data.engine_lcd = geely_data2.engine_tlock;
- engine_data.engine_rsta = geely_data2.engine_state;
- engine_data.engine_warn = geely_data2.EmgST0;
- engine_data.engine_roil = geely_data2.GPS * 0.5f;
- engine_data.engine_cyl1temp = geely_data2.engine_cooltemp - 40;
- engine_data.engine_cyl2temp = geely_data2. engine_cooltemp1 - 40;
- engine_data.engine_pcbtemp = geely_data2.engine_GWT - 40;
- memcpy(engine_data.engine_brand, geely_data2.engine_brand, 3);
- memcpy(&engine_data.engine_brand[3],"-", 1);
- snprintf((char *)&engine_data.engine_brand[4],4,"%d",(int)geely_data2.engine_ver);
- engine_data.engine_sn = geely_data2.engine_sn[0] * 10000000 + geely_data2.engine_sn[1] * 100000 +
- geely_data2.engine_sn[2] * 1000 + geely_data2.engine_sn[3];
- //engine_data.engine_lockstatus = geely_data2.engine_state == 0? 0 : 1;
- engine_data.engine_lockstatus = geely_data2.engine_controlcmd;
- //engine_data.engine_fault = geely_data2.engine_fault;
- }
- }
- else
- {
- if (engine_link_status == COMP_NORMAL)
- {
- engine_link_status = COMP_LOST;
- memset(&engine_data, 0, sizeof(engine_data));
- //状态未置异常
- engine_data.engine_type = 0xFF;
- }
- }
- }
- /******************void engine_function(void)********************
- * ****************发动机检测函数*********************************
- * **************************************************************/
- void engine_function(void)
- {
- static uint32_t engine_time = 0;
- if(Check_Timer_Ready(&engine_time,_10_HZ_))
- {
- update_engine_data();
- //发送飞控状态给发动机
- send_msg_to_vk3();
- }
- //给吉利发动机发送信息
- send_msg_to_geely();
- }
|