在Tiny OS中使用Java从串行端口读取数据

时间:2019-03-20 00:58:26

标签: java classpath tinyos

我正在经历Tiny OS教程第4课“ Mote-PC串行通信和SerialForwarder”,我被困在上面说的那条线上 “一旦安装了TestSerial,就需要运行相应的Java应用程序,该应用程序通过串行端口与之通信。这是在构建TinyOS应用程序时构建的。在应用程序目录中,键入

$ java TestSerial

但是,当我键入此命令时,会遇到以下错误

Error: Could not find or load main class TestSerial

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

我尝试过的解决方案:

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

export CLASSPATH =。:/ home / wsn / tinyos-main / apps / tests / TestSerial

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

export CLASSPATH =。:/ home / wsn / tinyos-main / support / sdk / java / tinyos.jar

3)使用java -cp . TestSerial

运行命令

但是我仍然遇到相同的错误

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

我在Fedora OS上使用虚拟机
我正在尝试在mib520平台上运行该程序,并且使用了虹膜微粒

我的Java版本

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

感谢您的帮助

1 个答案:

答案 0 :(得分: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. 来创建应用程序
  4. 连接您的节点,然后键入motelist。此命令将列出所有连接的节点。微粒名称应在“设备”部分下列出。请注意,以供接下来的两个步骤使用。

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

  6. 通过运行java TestSerial -comm serial@[DEVICE NAME]:iris

  7. 来运行TestSerial应用程序

如果您使用诸如telosb之类的其他平台,则只需用telosb替换上面命令中出现的所有虹膜。