использование Java для чтения данных с последовательного порта в крошечной ОС

#java #classpath #tinyos

#java #classpath #tinyos

Вопрос:

Я просматриваю урок Tiny OS tutorial урок номер 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/приложения / тесты /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 (сборка 25.31-b07, смешанный режим)

Комментарии:

1. TestSerial.class Действительно ли он присутствует в вашем рабочем каталоге?

2. @Michael Jaros нет, это не так, но в руководстве об этом ничего не упоминалось, я полагаю, предполагая, что это должно быть там по умолчанию. У меня есть TestSerial.java хотя там и это я тоже пытался запустить, используя те же команды. Извините, я так же хорошо знаком с Java, поэтому не уверен, что именно представляет собой процесс компиляции

3. TestSerial.java необходимо скомпилировать перед выполнением: просто вызовите javac TestSerial.java . Это создаст скомпилированный файл класса. Я предполагаю, что с точки зрения руководства, один из предыдущих шагов должен был сделать это, но не сработал так, как ожидалось.

4. bash: javac: команда не найдена …. когда я зашел в каталог java, который является /usr / lib / jvm / java-1.8.0-openjdk-1.8.0.31-5.b13.fc21.i386 / jre / bin /, я даже не нашел файл javac

5. Java поставляется в двух видах дистрибутивов: JRE (только для выполнения) и JDK (для разработки). Большинству людей нужен только JRE, но для того, чтобы иметь возможность компилировать .java файлы, вам нужен JDK.

Ответ №1:

Вы, должно быть, пропустили шаг, когда вам нужно было выполнить команду make.

Перейдите в папку apps / tests / TestSerial и введите make [platform] (например, make telosb, make iris и т.д.), файл makefile, который будет запущен, будет файлом makefile в папке TestSerial, которая определяется следующим образом:

 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.

Итак, шаг за шагом, например, на iris mote, вы бы

  1. Перейдите к apps/tests/TestSerial папке

  2. Создайте приложение, введя make iris

  3. Подключите свой mote и затем введите motelist . Эта команда выведет список всех подключенных узлов. Имя вашего устройства должно быть указано в разделе «Устройство». Запомните это для использования в следующих двух шагах.

  4. Установите ваше приложение, введя команду make iris install.1 bsl, [DEVICE NAME] . Это создаст и загрузит вашу программу на ваше устройство.

  5. Запустите приложение TestSerial, выполнив java TestSerial -comm serial@[DEVICE NAME]:iris

Если вы используете другую платформу, такую как telosb, тогда просто замените все вхождения iris в командах выше на telosb.

Комментарии:

1. Привет @KillaKem, команда make iris не работала, пока я не скомпилировал TestSerialMsg.java файл и добавлен текущий каталог в CLASSPATH, поэтому я предполагаю, что эти шаги должны быть самыми первыми. В остальном теперь все работает, спасибо за ваши предложения