多主控通信模块总共有5个端口:1个管理端口(地址为 0),4个普通端口(地址为 1~4)。管理端口是必须连接的端口,其他端口根据应用来连接。
    默认不打开主控通信的,在使用前需要调用 Open_Multi_Message 打开多主控通信。每次调用 RecvNameVarInt 获取信息的值时,返回的数据是最新值,该信息如果没有更新,则返回前面接收到的值。
    注意:多主控通信模块不支持热拔插,使用时请保证可靠连接。
    常用的 API

    1. /**
    2. * @brief 由于通信收发需要消耗RAM和CPU线程运行时间,
    3. * 因此只有在需要用到通信时再打开多机通信,不需要后就关闭多机通信,
    4. * 调用 Open_Multi_Message() 打开多机通信,调用 Close_Multi_Message() 关闭多机通信,
    5. *
    6. */
    7. void BELL_THUNDER::Open_Multi_Message()
    8. /**
    9. * @brief 由于通信收发需要消耗RAM和CPU线程运行时间,
    10. * 因此只有在需要用到通信时再打开多机通信,不需要后就关闭多机通信,
    11. * 调用 Close_Multi_Message() 关闭多机通信,
    12. *
    13. */
    14. void BELL_THUNDER::Close_Multi_Message()
    15. /**
    16. * @brief 为了方便使用多机通信,可以将数据传输进行 命名,
    17. * 支持设置最多 32个 命名变量,名字长度最大 16个字符,
    18. * 可以调用 InitNameVarInt() 设置 int 变量初始值,否则变量的初始值为 0
    19. *
    20. * @param name 传入被传输的变量名称字符串,
    21. * @param init_value 传入 int 变量数值
    22. */
    23. void BELL_THUNDER::InitNameVarInt(const char *name, int init_value)
    24. /**
    25. * @brief 为了方便使用多机通信,可以将数据传输进行 命名,
    26. * 支持设置最多 32个 命名变量,名字长度最大 16个字符,
    27. * 可以调用 SendNameVarInt() 向某个地址传输一个命名 int变量
    28. *
    29. * @param addr 传入目的地址 0~4
    30. * @param name 传入被传输的变量名称字符串,
    31. * @param var_value 传入 int 变量数值
    32. * @return int 返回错误码,正常发送返回0
    33. */
    34. int BELL_THUNDER::SendNameVarInt(unsigned char addr, const char *name, int var_value)
    35. /**
    36. * @brief 为了方便使用多机通信,可以将数据传输进行 命名,
    37. * 支持设置最多 32个 命名变量,名字长度最大 16个字符,
    38. * 可以调用 RecvNameVarInt() 更新命名 int变量,
    39. * 如果没有该命名数值的更新,则返回旧的数值
    40. *
    41. * @param name 传入被传输的变量名称字符串,
    42. * @return int 返回最新数值
    43. */
    44. int BELL_THUNDER::RecvNameVarInt(const char *name)

    Tbot I 系统编程示范

    1. // 打开主控通信
    2. Bell_Thunder.Open_Multi_Message();
    3. Bell_Thunder.InitNameVarInt("message", 0); // 初始化“message”值为0
    4. // 发送数据
    5. Bell_Thunder.SendNameVarInt(1, "message", 100); // 向 端口1 发送的信息为“message”,值为 100
    6. // 接收数据
    7. Bell_Thunder.RecvNameVarInt("message"); // 获取信息为“message”的值