【问题标题】:On pressing a button in panel, why is the data being sent twice, Is there a solution to only send it once?在面板中按下按钮时,为什么会发送两次数据,有没有解决方案只发送一次?
【发布时间】:2019-05-29 05:46:35
【问题描述】:

如果我按下面板上的单选按钮(发送数据),数据将被发送两次或三次,有时一次,用于以下代码:

on sysvar RC::send_data

{
systemData.byte(0) = 0x01;

systemData.byte(1) = 0x01;

systemData.byte(2) = 0x01;

systemData.byte(3) = 0x01;

systemData.byte(4) = 0x01;

systemData.byte(5) = 0x01;

systemData.byte(6) = 0x01;

systemData.byte(7) = 0xFF;

output(systemData);
}

按一次只需要发送一次,如何实现?

为什么数据会随机发送多次?

预期:

Tx : 01010101010101FF

错误结果:

Tx : 01010101010101FF
Tx : 01010101010101FF

【问题讨论】:

    标签: capl


    【解决方案1】:

    当您按下按钮时,系统变量会设置为某个值。您可以在面板设计器中按钮的属性Pressed 中配置此值。

    当您释放按钮时,sysvar 被设置为不同的值。您可以在面板设计器中对按钮的属性Released 配置此值。

    您的on sysvar 事件处理程序在按下按钮时调用一次,在释放按钮时调用一次。

    您可以在事件处理程序中使用 if-statement 来仅对 sysvar 的某些值做出反应。

    【讨论】:

    • 嗨溢出你能举出你在回答中提到的if语句的例子,如何让它对某些值做出反应,你对我帮助很大,请给我最后一个例子,
    • 类似if @sysvar::RC::send_data == 1。只需查阅 CANoe 手册,有很多关于如何使用 sysvars 的示例。
    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 2019-02-14
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多