多主控通信模块总共有5个端口:1个管理端口(地址为 0),4个普通端口(地址为 1~4)。管理端口是必须连接的端口,其他端口根据应用来连接。
默认不打开主控通信的,在使用前需要调用 Open_Multi_Message
打开多主控通信。每次调用 RecvNameVarInt
获取信息的值时,返回的数据是最新值,该信息如果没有更新,则返回前面接收到的值。
注意:多主控通信模块不支持热拔插,使用时请保证可靠连接。
常用的 API:
/**
* @brief 由于通信收发需要消耗RAM和CPU线程运行时间,
* 因此只有在需要用到通信时再打开多机通信,不需要后就关闭多机通信,
* 调用 Open_Multi_Message() 打开多机通信,调用 Close_Multi_Message() 关闭多机通信,
*
*/
void BELL_THUNDER::Open_Multi_Message()
/**
* @brief 由于通信收发需要消耗RAM和CPU线程运行时间,
* 因此只有在需要用到通信时再打开多机通信,不需要后就关闭多机通信,
* 调用 Close_Multi_Message() 关闭多机通信,
*
*/
void BELL_THUNDER::Close_Multi_Message()
/**
* @brief 为了方便使用多机通信,可以将数据传输进行 命名,
* 支持设置最多 32个 命名变量,名字长度最大 16个字符,
* 可以调用 InitNameVarInt() 设置 int 变量初始值,否则变量的初始值为 0
*
* @param name 传入被传输的变量名称字符串,
* @param init_value 传入 int 变量数值
*/
void BELL_THUNDER::InitNameVarInt(const char *name, int init_value)
/**
* @brief 为了方便使用多机通信,可以将数据传输进行 命名,
* 支持设置最多 32个 命名变量,名字长度最大 16个字符,
* 可以调用 SendNameVarInt() 向某个地址传输一个命名 int变量
*
* @param addr 传入目的地址 0~4
* @param name 传入被传输的变量名称字符串,
* @param var_value 传入 int 变量数值
* @return int 返回错误码,正常发送返回0
*/
int BELL_THUNDER::SendNameVarInt(unsigned char addr, const char *name, int var_value)
/**
* @brief 为了方便使用多机通信,可以将数据传输进行 命名,
* 支持设置最多 32个 命名变量,名字长度最大 16个字符,
* 可以调用 RecvNameVarInt() 更新命名 int变量,
* 如果没有该命名数值的更新,则返回旧的数值
*
* @param name 传入被传输的变量名称字符串,
* @return int 返回最新数值
*/
int BELL_THUNDER::RecvNameVarInt(const char *name)
Tbot I 系统编程示范
// 打开主控通信
Bell_Thunder.Open_Multi_Message();
Bell_Thunder.InitNameVarInt("message", 0); // 初始化“message”值为0
// 发送数据
Bell_Thunder.SendNameVarInt(1, "message", 100); // 向 端口1 发送的信息为“message”,值为 100
// 接收数据
Bell_Thunder.RecvNameVarInt("message"); // 获取信息为“message”的值