首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的独木舟会自动发送默认消息?

为什么我的独木舟会自动发送默认消息?
EN

Stack Overflow用户
提问于 2022-06-14 08:43:33
回答 1查看 165关注 0票数 0

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

我将CAPL文件附加到"HAP“node.The CAPL文件,如下所示。

代码语言:javascript
复制
/*@!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。

我不知道原因。如果有人能帮我?

EN

回答 1

Stack Overflow用户

发布于 2022-06-18 14:41:18

PDU HAP_FD1中的每个字节都有一个for循环,您可以在on函数中初始化值=0。这就是为什么当调用计时器时,您会看到值0,然后是300。

代码语言:javascript
复制
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符号值还可以将默认值设置为初始化

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72613985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档