【问题标题】:using java to read data from serial port in Tiny OS在 Tiny OS 中使用 java 从串口读取数据
【发布时间】:2019-03-20 00:58:26
【问题描述】:

我正在学习 Tiny OS 教程第 4 课“Mote-PC 串行通信和 SerialForwarder”,但我被卡在上面说的那一行 “安装 TestSerial 后,您需要运行相应的 Java 应用程序,通过串行端口与其通信。这是在构建 TinyOS 应用程序时构建的。在应用程序目录中,键入

$ java TestSerial

但是当我输入这个时,我会遇到以下错误

Error: Could not find or load main class TestSerial

我尝试了多种方法来解决此问题,但没有任何帮助。

我尝试过的解决方案:

  1. 将 CLASSPATH 设置为我当前所在的目录,即

导出 CLASSPATH=.:/home/wsn/tinyos-main/apps/tests/TestSerial

2)设置CLASSPATH为tinyos.jar所在目录

导出 CLASSPATH=.:/home/wsn/tinyos-main/support/sdk/java/tinyos.jar

3)使用java -cp . TestSerial运行命令

但是我一直有同样的错误

还有其他更好的方法来解决吗?

我正在使用带有 Fedora 操作系统的虚拟机
我正在尝试在 mib520 平台上运行程序,我使用的是 iris motes

我的java版本

openjdk 版本“1.8.0_31”
OpenJDK 运行时环境(内部版本 1.8.0_31-b13)
OpenJDK Server VM(build 25.31-b07,混合模式)

【问题讨论】:

  • TestSerial.class 是否真的存在于您的工作目录中?
  • @Michael Jaros 不,它没有,但教程没有提及它,我想假设它应该默认存在。我确实有TestSerial.java,但我也尝试使用相同的命令运行它。对不起,我对java很熟悉,所以不知道编译过程到底是什么
  • TestSerial.java在执行前需要编译:调用javac TestSerial.java即可。这将创建编译的类文件。我猜从本教程的角度来看,前面的步骤之一应该已经完成​​了这个并且没有按预期工作。
  • bash: javac: command not found.... 当我转到 java 目录 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-5.b13 时。 fc21.i386/jre/bin/ 我什至没有找到javac文件
  • Java 有两种发行版,JRE(仅用于执行)和 JDK(用于开发)。大多数人只需要 JRE,但要能够编译 .java 文件,您需要 JDK。

标签: java classpath tinyos


【解决方案1】:

您必须在必须运行 make 命令时跳过这一步。

导航到apps/tests/TestSerial文件夹并输入make [platform](如make telosb、make iris等),将运行的makefile将是TestSerial文件夹中的makefile,定义如下:

COMPONENT=TestSerialAppC
TOSMAKE_PRE_EXE_DEPS += TestSerial.class
TOSMAKE_CLEAN_EXTRA = *.class TestSerialMsg.java

TestSerial.class: $(wildcard *.java) TestSerialMsg.java
    javac -target 1.4 -source 1.4 *.java

TestSerialMsg.java:
    nescc-mig java $(CFLAGS) -java-classname=TestSerialMsg TestSerial.h test_serial_msg -o $@


TINYOS_ROOT_DIR?=../../..
include $(TINYOS_ROOT_DIR)/Makefile.include

所以makefile 编译TestSerial.java。之后,您可以继续安装应用程序,然后运行 ​​TestSerial 应用程序。

因此,例如,您将逐步在虹膜微尘上进行

  1. 导航到apps/tests/TestSerial 文件夹

  2. 通过输入make iris制作应用程序

  3. 连接您的 mote,然后输入 motelist。此命令将列出所有连接的节点。您的 mote 的名称应列在“设备”部分下。请注意这一点,以便在接下来的两个步骤中使用。

  4. 通过键入命令make iris install.1 bsl, [DEVICE NAME] 安装您的应用程序。这将制作您的程序并将其上传到您的设备。

  5. 通过运行 java TestSerial -comm serial@[DEVICE NAME]:iris 来运行 TestSerial 应用程序

如果您使用其他平台,例如 telosb,则只需将上述命令中出现的所有 iris 替换为 telosb。

【讨论】:

  • 嗨@KillaKem, make iris 命令不起作用,因为直到我没有编译 TestSerialMsg.java 文件并在 CLASSPATH 中添加当前目录,所以我想这些步骤应该是第一个步骤。否则现在一切正常,感谢您的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多