随着同时传输到PC的机器人数量的增加,接收有效消息的难度将降低

随着同时传输到PC的机器人数量的增加,接收有效消息的难度将降低,c,robotics,serial-communication,C,Robotics,Serial Communication,解决异步问题的一种方法是在传输的每个字节中嵌入机器人ID。如果机器人不超过16个,那么它们的ID可以放在传输字节的上半字节,4位数据放在下半字节。然后需要两个传输字节才能从bot#1发送一个数据字节:0x1F+0x13=0x3F。这将使消息的大小加倍,并且需要接收端的代码将传入的数据打包到每个bot的单独接收队列中。听起来您需要创建一个用于bot和PC之间通信的协议。它可能看起来像这样: Byte Value Description 1 0xAA First sync byt

解决异步问题的一种方法是在传输的每个字节中嵌入机器人ID。如果机器人不超过16个,那么它们的ID可以放在传输字节的上半字节,4位数据放在下半字节。然后需要两个传输字节才能从bot#1发送一个数据字节:0x1F+0x13=0x3F。这将使消息的大小加倍,并且需要接收端的代码将传入的数据打包到每个bot的单独接收队列中。

听起来您需要创建一个用于bot和PC之间通信的协议。它可能看起来像这样:

Byte Value Description 1 0xAA First sync byte 2 0x55 Second sync byte 3 seq Message sequence number, increments for each new message transmitted 4 1 Message type (1 = Wheel encoder report) 5 5 Number of data bytes to follow 6 ID Bot ID 7 FL Front left wheel encoder 8 FR Front right wheel encoder 9 RL Rear left wheel encoder 10 RR Rear right wheel encoder 11 CS Checksum of bytes 1 - 10 字节值描述 1 0xAA第一个同步字节 2 0x55秒同步字节 3 seq消息序列号,每发送一条新消息的增量 4 1消息类型(1=车轮编码器报告) 5要遵循的数据字节数 6 ID机器人ID 7 FL左前轮编码器 8 FR右前车轮编码器 9 RL左后车轮编码器 10右后车轮编码器 11字节1-10的CS校验和 现在,如果消息不是以离散数据包(即UDP)的形式发送,而是通过串行端口异步发送,那么来自不同机器人的消息字节可能会混合在一起。上述协议将至少验证接收到的消息的完整性,但随着同时传输到PC的机器人数量的增加,接收有效消息的概率将降低


解决异步问题的一种方法是在传输的每个字节中嵌入机器人ID。如果机器人不超过16个,那么它们的ID可以放在传输字节的上半字节,4位数据放在下半字节。然后需要两个传输字节才能从bot#1发送一个数据字节:0x1F+0x13=0x3F。这将使消息的大小加倍,并且需要接收端的代码将传入数据打包到每个bot的单独接收队列中。

如果可能,请查看RS-485。从PC的角度来看,它仍然是串行的,并且支持多点传输。我开发了一种机器人,其中大部分处理在PC端完成,所有其他板都以菊花链连接到一条RS-485总线。

如果可能,请查看RS-485。从PC的角度来看,它仍然是串行的,并且支持多点传输。我开发了一个机器人,其中大部分处理在PC端完成,所有其他板通过菊花链连接到一条RS-485总线。

串行协议RS232是point2point

我的解决方案是使用主/从架构

原因: 避免访问通信通道问题

架构: PC机是主控计算机,向其从属计算机进行查询。 仅在主请求后保存传输信息。 消息应具有作为字段的“收件人”、“发件人”和“数据”。 所有信息都会广播到通信频道


我已经实现了这个解决方案,效果很好。

串行协议RS232是point2point

我的解决方案是使用主/从架构

原因: 避免访问通信通道问题

架构: PC机是主控计算机,向其从属计算机进行查询。 仅在主请求后保存传输信息。 消息应具有作为字段的“收件人”、“发件人”和“数据”。 所有信息都会广播到通信频道


我已经实施了此解决方案,效果很好。

ERm。。。你的问题到底是什么?还有,这是家庭作业吗?你必须更好地说明你的问题。在C中使用串行端口需要帮助吗?序列化数据?和你的zigbee stack聊天?编程机器人?建造天网?是的,你到底在问什么?呃。。。你的问题到底是什么?还有,这是家庭作业吗?你必须更好地说明你的问题。在C中使用串行端口需要帮助吗?序列化数据?和你的zigbee stack聊天?编程机器人?建造天网?是的,你到底在问什么?
 TxData(left_whiteline_sensor);
 TI=0; // resetting transmit interrupt after each character
 TxData(middle_whiteline_sensor);
 TI=0;
 TxData(right_whiteline_sensor);
 TI=0;
 TxData(front_sharp_sensor);
 TI=0;
read(fd, buf1, sizeof(buf1));
.....
options.c_cc[VMIN]=4; // wait till not getting 4 values 
Byte Value Description 1 0xAA First sync byte 2 0x55 Second sync byte 3 seq Message sequence number, increments for each new message transmitted 4 1 Message type (1 = Wheel encoder report) 5 5 Number of data bytes to follow 6 ID Bot ID 7 FL Front left wheel encoder 8 FR Front right wheel encoder 9 RL Rear left wheel encoder 10 RR Rear right wheel encoder 11 CS Checksum of bytes 1 - 10