我今天已经发布了一个问题。这个问题是关于同一个项目但不相关的。我正在为 Lego NXT Mindstorm 机器人开发一个应用程序。我有两个机器人和一个在 PC 上运行的 GUI。
在 leJOS NXJ 中,您只能使用一个输入阅读器。这意味着您不能将 PC 直接连接到两个机器人,让两个机器人直接相互连接。所以这就是我所做的。我已将 PC 直接连接到两个机器人,当两个机器人想要直接通信时,我通过 GUI 发送它们的消息。
GUI 和机器人之间以及机器人本身之间存在大量通信。出于这个原因,每当我将数据写入输出流时,似乎某些数据被其他数据覆盖,并且系统无法正常工作。
我被建议写一个类来保存一个集合(队列)对象,这样无论何时机器人想要发送一些东西,它都会将它添加到集合(队列)中,并且从那个保存集合对象的类中,会有一个方法,以便它不断检查集合,只要它不为空,它就会将集合中的数据发送到输出流。
这意味着每当集合中的数据被发送到输出流时,就有可能添加新数据。
有些人向我建议使用 ArrayBlockQueue 等。但是这些类在机器人使用的 class.jar 文件中不可用。
我在这个 jar 文件中知道的集合类是 Vectors 和 Queue。
我在问是否有人可以通过给我如何实现此类的想法来帮助我。类中的方法会不时检查集合中是否有数据,并将它们通过输出流发送。在发送时,可能正在添加新元素。
由于数据是从一个地方发送的,因此没有数据会覆盖另一个地方。在我看来这是个好主意。
欢迎您提出所有建议。
谢谢。