lcg_value() 函数

这段摘要包含了关键信息,并且忽略了与信息技术无关的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在TSMaster中以下函数的各语句分别有什么作用// GEN BLOCK BEGIN Include #define TSMP_IMPL #include "TSMaster.h" #include "MPLibrary.h" #include "Database.h" #include "TSMasterBaseInclude.h" #include "Configuration.h" // GEN BLOCK END Include // CODE BLOCK BEGIN Timer FlashTimer MTAw // 定时器文档 "FlashTimer" TMPTimerMS FlashTimer; // CODE BLOCK END Timer FlashTimer // CODE BLOCK BEGIN Global_Definitions bool SinePos = true; // 初始状态设为正相位 // CODE BLOCK END Global_Definitions // CODE BLOCK BEGIN On_Var_Change On_Control_HeadLight Q29udHJvbC5IZWFkTGlnaHQsLTE_ // 变量变化事件 "On_Control_HeadLight" 针对变量 "Control.HeadLight" [On Written] void on_var_change_On_Control_HeadLight(void) { try { // 变量 = Control.HeadLight s32 s; app.get_system_var_int32("Control.HeadLight", &s); com.can_rbs_set_signal_value_by_address("0/EasyCAN/Gateway/LightState/HeadLight",s); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Var_Change On_Control_HeadLight // CODE BLOCK BEGIN On_Var_Change On_Control_HazardLight Q29udHJvbC5IYXphcmRMaWdodCwtMQ__ // 变量变化事件 "On_Control_HazardLight" 针对变量 "Control.HazardLight" [On Written] void on_var_change_On_Control_HazardLight(void) { try { // 变量 = Control.HazardLight s32 s; app.get_system_var_int32("Control.HazardLight", &s); com.can_rbs_set_signal_value_by_address("0/EasyCAN/Gateway/LightState/FlashLight",s); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Var_Change On_Control_HazardLight // CODE BLOCK BEGIN On_Timer NewOn_Timer1 Rmxhc2hUaW1lcg__ // 定时器触发事件 "NewOn_Timer1" for Timer FlashTimer void on_timer_NewOn_Timer1(void) { try { // 定时器 = FlashTimer double s1; com.can_rbs_get_signal_value_by_address("0/EasyCAN/Cluster/LightState/HeadLight",&s1); double s2; com.can_rbs_get_signal_value_by_address("0/EasyCAN/Cluster/LightState/FlashLight",&s2); s32 s; app.get_system_var_int32("Light.LightStatus", &s); int flash=0; if((int)s2==1) { if(s>=2) flash = 0; else flash = 1; } s = flash*2 + s1; log("light status is %d",s); app.set_system_var_int32("Light.LightStatus", s); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Timer NewOn_Timer1 // CODE BLOCK BEGIN On_Start NewOn_Start1 // 启动事件 "NewOn_Start1" void on_start_NewOn_Start1(void) { try { // 程序启动事件 FlashTimer.start(); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Start NewOn_Start1 // CODE BLOCK BEGIN On_Stop NewOn_Stop1 // 停止事件 "NewOn_Stop1" void on_stop_NewOn_Stop1(void) { try { // 程序停止事件 FlashTimer.stop(); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Stop NewOn_Stop1 // CODE BLOCK BEGIN On_CAN_Rx TestControl MCwtMSwxODE4 // CAN报文接收事件 "TestControl" 针对标识符 = 0x71A void on_can_rx_TestControl(const TCAN* ACAN) { try { // 针对标识符 = 0x71A // if (ACAN->FIdxChn != CH1) return; // if you want to filter channel TTestControl_1 TestControl_1; TestControl_1.init(); // 在使用此结构体前调用这段初始化代码 TestControl_1.FCAN = *ACAN; // 若是在回调函数中,请用ACAN数据赋FCAN s32 v = TestControl_1.DemoEnable; app.set_system_var_int32("Control.DemoEnable", v); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_CAN_Rx TestControl // CODE BLOCK BEGIN On_Var_Change On_Control_Ignition Q29udHJvbC5JZ25pdGlvbiwtMQ__ // 变量变化事件 "On_Control_Ignition" 针对变量 "Control.Ignition" [On Written] void on_var_change_On_Control_Ignition(void) { try { // 变量 = Control.Ignition s32 v; app.get_system_var_int32("Control.Ignition", &v); com.can_rbs_set_signal_value_by_address("0/EasyCAN/Gateway/Ignition_Info/StarterKey",v); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Var_Change On_Control_Ignition // CODE BLOCK BEGIN On_Var_Change On_Control_EngSpeed Q29udHJvbC5FbmdTcGVlZCwtMQ__ // 变量变化事件 "On_Control_EngSpeed" 针对变量 "Control.EngSpeed" [On Written] void on_var_change_On_Control_EngSpeed(void) { try { // 变量 = Control.EngSpeed s32 v; app.get_system_var_int32("Control.EngSpeed", &v); if(v<0) v= -v; com.can_rbs_set_signal_value_by_address("0/EasyCAN/Engine/EngineData/EngSpeed",v); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Var_Change On_Control_EngSpeed // CODE BLOCK BEGIN On_Shortcut 前照灯 ODE_ // 按键事件 "前照灯" 快捷键 = Q void on_shortcut_前照灯(const s32 AShortcut) { try { // 按键事件 = Q s32 v; app.get_system_var_int32("Control.HeadLight",&v); v = (v == 0) ? 1 : 0; app.set_system_var_int32("Control.HeadLight",v); com.can_rbs_set_signal_value_by_address("0/EasyCAN/Gateway/LightState/HeadLight",v); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Shortcut 前照灯 // CODE BLOCK BEGIN On_Shortcut 危险灯 ODc_ // 按键事件 "危险灯" 快捷键 = W void on_shortcut_危险灯(const s32 AShortcut) { try { // 按键事件 = W s32 v; app.get_system_var_int32("Control.HazardLight",&v); v = (v == 0) ? 1 : 0; app.set_system_var_int32("Control.HazardLight",v); com.can_rbs_set_signal_value_by_address("0/EasyCAN/Gateway/LightState/HazardLight",v); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END On_Shortcut 危险灯 // CODE BLOCK BEGIN Step_Function NQ__ // 主step函数,执行周期 5 ms void step(void) { try { // 周期 = 5 ms s32 v1; app.get_system_var_int32("Control.carEnable", &v1); if(v1==0) return; app.set_system_var_int32("Control.Ignition", 1); s64 t64; double t; app.get_timestamp(&t64); t = t64 / 1000000.0 / 5; double v = sin(t)*3000; bool CurPos = v>0?true:false; if(!CurPos) v = -v; if(!CurPos == SinePos) { s32 hstatus; app.get_system_var_int32("Control.HeadLight", &hstatus); app.set_system_var_int32("Control.HeadLight", hstatus==0?1:0); if(SinePos) { s32 fstatus; app.get_system_var_int32("Control.HazardLight", &fstatus); app.set_system_var_int32("Control.HazardLight", fstatus==1?0:1); } } SinePos = CurPos; app.set_system_var_double("Control.EngSpeed", v); double baseTemp=70.0; double tempFactor=0.015*v; double engTemp = baseTemp + tempFactor; com.can_rbs_set_signal_value_by_address("0/EasyCAN/Engine/EngineData/EngTemp",engTemp); } catch (...) { log_nok("CRASH detected"); app.terminate_application(); }} // CODE BLOCK END Step_Function
最新发布
07-17
// 密钥生成函数注册 #pragma pack(push, 1) // 强制1字节对齐 void CAPLEXPORT far CAPLPASCAL seedToKey(const uint8_t seed[4], uint8_t key[4]) { // 为指针参数 //byte AppKeyConst[4] = { 0x7F, 0xE4, 0x75, 0x16 }; //密钥 VIUFL //byte AppKeyConst[4] = { 0x71, 0xF9, 0x6C, 0x1D }; //密钥 EDC MCU 0x71F96C1D //byte AppKeyConst[4] = { 0x5E, 0x6D, 0x3E, 0x5F }; //密钥 VIUFR 5E6D3E5F //byte AppKeyConst[4] = { 0x7C, 0x32, 0x1B, 0x3D }; // 密钥 m_ADC 7C321B3D //byte AppKeyConst[4] = { 0x7C, 0x32, 0x1B, 0x3D }; // 密钥 C3B 0x7C321B3D //byte AppKeyConst[4] = { 0x95, 0x66, 0xB3, 0x76 }; // 0x95 66 B3 76 //byte AppKeyConst[4] = { 0x52, 0x71, 0x2B, 0x6F }; // ACC& FR is 0x52 71 2B 6F //byte AppKeyConst[4] = { 0xAA, 0x23, 0x0B, 0x5B }; // LCDAL& BSD& LCDAR& RLR& RRR& FRR& FLR is 0xAA 23 0B 5B byte AppKeyConst[4] = { 0x71, 0xF9, 0x6C, 0x1D }; byte Key1[4] = { 0 }, Key2[4] = { 0 }, Seed2[4] = { 0 }; uint32_t seed_value, reversed_value; int i = 0; uint32_t Key1_t, Key2_t, key_t; // Step1: 合并Seed为32位整数(大端模式) seed_value = (seed[0] << 24) | (seed[1] << 16) | (seed[2] << 8) | seed[3]; // Step2: 32位镜像反转生成Seed2 reversed_value = Reverse32Bits(seed_value); Seed2[0] = (reversed_value >> 24) & 0xFF; // 高位在前 Seed2[1] = (reversed_value >> 16) & 0xFF; Seed2[2] = (reversed_value >> 8) & 0xFF; Seed2[3] = reversed_value & 0xFF; // Step3: 计算Key1(Seed ^ AppKeyConst) for (i = 0; i < 4; i++) { Key1[i] = seed[i] ^ AppKeyConst[i]; } // Step4: 计算Key2(Seed2 ^ AppKeyConst) for (i = 0; i < 4; i++) { Key2[i] = Seed2[i] ^ AppKeyConst[i]; } Key1_t = (Key1[0] << 24) + (Key1[1] << 16) + (Key1[2] << 8) + Key1[3]; Key2_t = (Key2[0] << 24) + (Key2[1] << 16) + (Key2[2] << 8) + Key2[3]; key_t = Key1_t + Key2_t; key[0] = (key_t & 0xff000000) >> 24; key[1] = (key_t & 0x00ff0000) >> 16; key[2] = (key_t & 0x0000ff00) >> 8; key[3] = (key_t & 0x000000ff); } #pragma pack(pop) // 恢复默认对齐
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值