RHILEX 自定义串口协议接入
本文档详细介绍了如何在 RHILEX 软件中实现自定义串口协议自动接入功能。通过配置点位表,软件将自动向串口发送指令,并在指定的超时时间范围内等待对端设备响应,从而采集所需数据。
功能说明
配置点位表
用户在 RHILEX 软件中配置点位表,用于定义自动发送的指令及其相关参数。点位表包含以下信息:
- 指令 ID:唯一标识一个指令。
- 指令内容:包括指令头、参数和校验位。
- 超时时间 T:等待对端响应的时间限制(单位:毫秒)。
自动发送指令
配置完点位表后,RHILEX 软件将根据点位表自动发送指令。
超时时间设置
每个指令的超时时间 T 在点位表中设置。软件在发送指令后,将等待最多 T 时间以接收对端设备的响应。
采集数据
在接收到对端设备的响应后,RHILEX 软件将自动解析并采集数据。
接入步骤
以下为自定义串口协议自动接入功能的接入步骤:
连接串口设备
- 确保串口设备与计算机已正确连接。
- 在 RHILEX 软件中选择“串口通信”模块。
- 点击“添加串口设备”按钮,选择对应的串口和波特率。
配置点位表
- 在“点位表配置”界面,点击“添加点位”按钮。
- 输入指令 ID、指令内容、超时时间 T 等参数。
- 保存点位表配置。
自动发送指令
- 确认点位表配置无误后,RHILEX 软件将自动按照点位表发送指令。
- 指令发送后,软件进入等待响应状态。
采集数据
- 在接收到对端设备的响应后,RHILEX 软件将自动解析数据。
- 采集的数据将显示在“数据展示”界面。
注意事项
- 确保串口设备与计算机的连接稳定,避免通信过程中出现断开现象。
- 根据实际需求在点位表中设置合适的超时时间 T。
- 在配置点位表时,请确保指令格式正确,避免因格式错误导致通信失败。
常见问题及解决方法
-
问题:自动发送指令后,未收到对端设备的响应。
解决方法:检查串口连接是否正常,点位表配置是否正确,超时时间是否设置合理。 -
问题:采集到的数据错误。
解决方法:检查点位表中指令格式和数据格式是否正确,校验位计算是否正确。 -
问题:软件运行过程中出现异常。
解决方法:重启软件,检查并重新配置串口设备和点位表。
自定义协议核心原理是假设请求过后,数据能按照预期正常返回,数据是理想状态下的正确数据。其实就是最原始的 C-S 模型,不考虑任何数据包断包,连包情况。因此相比其他规范协议有较大的错误率,建议将返回的数据进行 CRC 校验。
简单示例
以下是一个 Arduino 示例,它模拟了与 RHILEX 软件通信的过程。在这个示例中,Arduino 板将接收来自串口的数据,并在接收到数据后立即将其发送回。这个示例假设 RHILEX 软件已经配置好点位表,并且正在自动发送指令。
void setup() {
// 初始化串口通信,设置波特率为9600
Serial.begin(9600);
}
void loop() {
// 检查串口是否有数据可读
if (Serial.available() > 0) {
// 读取收到的数据
String receivedCommand = Serial.readStringUntil('\n'); // 假设指令以换行符结束
// 这里可以添加对指令的处理逻辑,例如解析指令、执行操作等
// 为了简化示例,我们直接将接收到的指令返回
// 等待100毫秒,模拟处理指令的时间
delay(100);
// 将接收到的数据发送回串口
Serial.println(receivedCommand); // 使用println以确保发送的数据包含换行符
}
}
在这个示例中,我们使用了 Serial.readStringUntil('\n')
来读取直到换行符为止的字符串,这通常用于读取一行完整的指令。然后,我们通过 Serial.println(receivedCommand)
将接收到的指令原样返回,并添加了一个换行符,这样 RHILEX 软件可以更容易地识别响应的结束。
请注意,这个示例假设 RHILEX 软件发送的指令以换行符结束。如果实际协议中使用了不同的结束符,您需要相应地调整 Serial.readStringUntil()
方法中的参数。
在将此代码上传到 Arduino 板之前,请确保您已经在 Arduino IDE 中选择了正确的板型和端口,并将串口监视器的波特率设置为 9600。这样,您就可以通过串口监视器发送指令,并观察 Arduino 板的响应了。