我想用我的面板发送信息。

我将CAPL文件附加到"HAP“node.The CAPL文件,如下所示。
/*@!Encoding:936*/
includes
{
}
variables
{
byte crc;
byte data[64];
message 0x329 msg1;
msTimer mrrtimer100ms;
message HAP_FD1 hap_fd1;
//HAP_FD1
int APS_BrkModSts = 0;
int APS_ESP_BrkDistance = 0;
float APS_ESP_Spdlimn= 0.0;
int APS_ESP_TgtGearReq = 0;
int APS_ReqCtrlEPS = 0;
float APS_ReqEPSTgtAng= 0.0;
int APS_WorkSts = 0;
}
on start
{
setTimer(mrrtimer100ms,10);
}
on sysvar Local::APS_BrkModSts
{
}
on sysvar Local::APS_ESP_BrkDistance
{
}
on sysvar Local::APS_ESP_Spdlimn
{
}
on sysvar Local::APS_ESP_TgtGearReq
{
}
on sysvar Local::APS_ReqCtrlEPS
{
}
on sysvar Local::APS_ReqEPSTgtAng
{
}
on sysvar Local::APS_WorkSts
{
}
on timer mrrtimer100ms
{
int i;
for(i=0;i<64;i++){
hap_fd1.byte(i)= 0x00;
}
hap_fd1.APS_BrkModSts.phys = sysGetVariableInt(sysvar::Local::APS_BrkModSts);
hap_fd1.APS_WorkSts.phys=sysGetVariableInt(sysvar::Local::APS_WorkSts);
hap_fd1.APS_ReqCtrlEPS.phys=sysGetVariableInt(sysvar::Local::APS_ReqCtrlEPS);
hap_fd1.APS_ReqEPSTgtAng.phys=sysGetVariableFloat(sysvar::Local::APS_ReqEPSTgtAng);
hap_fd1.APS_ESP_TgtGearReq.phys=sysGetVariableInt(sysvar::Local::APS_ESP_TgtGearReq);
hap_fd1.APS_ESP_SpdLimn.phys=sysGetVariableFloat(sysvar::Local::APS_ESP_Spdlimn);
hap_fd1.APS_ESP_BrkDistance.phys=sysGetVariableInt(sysvar::Local::APS_ESP_BrkDistance);
//APA_control
output(hap_fd1);
setTimer(mrrtimer100ms,10);
}

当我开始这个项目时,我将"APS_ESP_BrkDistance“设置为300。我要独木舟总是发送300的信号。但是似乎独木舟正在发送一个默认的消息,这两个信号都是0。

我不知道原因。如果有人能帮我?
发布于 2022-06-18 14:41:18
PDU HAP_FD1中的每个字节都有一个for循环,您可以在on函数中初始化值=0。这就是为什么当调用计时器时,您会看到值0,然后是300。
on timer mrrtimer100ms
{
int i;
// for(i=0;i<64;i++){hap_fd1.byte(i)= 0x00;}
hap_fd1.APS_BrkModSts.phys = sysGetVariableInt(sysvar::Local::APS_BrkModSts);
hap_fd1.APS_WorkSts.phys=sysGetVariableInt(sysvar::Local::APS_WorkSts);
hap_fd1.APS_ReqCtrlEPS.phys=sysGetVariableInt(sysvar::Local::APS_ReqCtrlEPS);
hap_fd1.APS_ReqEPSTgtAng.phys=sysGetVariableFloat(sysvar::Local::APS_ReqEPSTgtAng);
hap_fd1.APS_ESP_TgtGearReq.phys=sysGetVariableInt(sysvar::Local::APS_ESP_TgtGearReq);
hap_fd1.APS_ESP_SpdLimn.phys=sysGetVariableFloat(sysvar::Local::APS_ESP_Spdlimn);
hap_fd1.APS_ESP_BrkDistance.phys=sysGetVariableInt(sysvar::Local::APS_ESP_BrkDistance);
//APA_control
output(hap_fd1);
setTimer(mrrtimer100ms,10);
}您可以删除该行,因为Panel符号值还可以将默认值设置为初始化
https://stackoverflow.com/questions/72613985
复制相似问题