在Tiny OS中使用java从串口读取数据

在Tiny OS中使用java从串口读取数据,java,classpath,tinyos,Java,Classpath,Tinyos,我正在学习Tiny操作系统教程第4课“Mote PC串行通信和串行转发器”,我被它所说的内容困住了 安装TestSerial后,需要运行相应的Java应用程序,该应用程序通过串行端口与之通信。这是在构建TinyOS应用程序时生成的。从应用程序目录中键入 $ java TestSerial 但是,当我键入此命令时,我会遇到以下错误 Error: Could not find or load main class TestSerial 我尝试了几种方法来解决这个问题,但都没有效果 我尝试过的解决

我正在学习Tiny操作系统教程第4课“Mote PC串行通信和串行转发器”,我被它所说的内容困住了 安装TestSerial后,需要运行相应的Java应用程序,该应用程序通过串行端口与之通信。这是在构建TinyOS应用程序时生成的。从应用程序目录中键入

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

Error: Could not find or load main class TestSerial
我尝试了几种方法来解决这个问题,但都没有效果

我尝试过的解决方案:

  • 将CLASSPATH设置为我当前所在的目录,即
  • 导出类路径=。:/home/wsn/tinyos main/apps/tests/TestSerial

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

    导出类路径=。:/home/wsn/tinyos main/support/sdk/java/tinyos.jar

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

    然而,我一直有同样的错误

    有没有其他更好的方法来修复它

    我正在将虚拟机与Fedora OS一起使用
    我试图在mib520平台上运行这个程序,我使用iris微尘

    我的java版本

    openjdk版本“1.8.0_31”
    OpenJDK运行时环境(构建1.8.0_31-b13)

    OpenJDK服务器虚拟机(build 25.31-b07,混合模式)

    必须运行make命令时,必须跳过该步骤

    导航到apps/tests/TestSerial文件夹并键入
    make[platform]
    (例如make telosb、make iris e.t.c),将运行的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应用程序

    例如,一步一步地在虹膜微尘上

  • 导航到
    apps/tests/TestSerial
    文件夹

  • 通过键入
    makeiris

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

  • 通过键入命令
    make iris Install.1 bsl,[DEVICE NAME]
    安装应用程序。这将生成程序并将其上载到设备

  • 通过运行
    java TestSerial-comm serial@[设备名称]:iris来运行TestSerial应用程序


  • 如果你使用另一个平台,比如telosb,那么就用telosb替换上面命令中所有出现的iris。

    TestSerial.class
    是否确实存在于你的工作目录中?@Michael Jaros没有,但教程没有提到它,我想假设默认情况下它应该存在。我有TestSeri我也试着用同样的命令运行它。对不起,我对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。嗨@KillaKem,make iris命令不起作用,因为我没有编译TestSerialMsg.java文件并在类路径中添加当前目录,所以我想这些步骤应该是第一步。否则,一切现在都可以工作了,感谢您的支持暗示