Чрезвычайно медленный драйвер коммерческого спектрометра (Omnidriver) в Ubuntu

#c #linux

#c #linux

Вопрос:

Я пытаюсь использовать программу C для чтения данных из спектрометра, у которого есть коммерческий драйвер спектрометра с именем Omnidriver. Драйвер разработан на Java. Установщик этого драйвера установит версию 1.6.0_01 (1.6 update 1) Java JVM. Для разработки на C я сам устанавливаю JDK 14.

Код прост:

   define LINUX
  #include <iostream>
  #include <WrapperLinux64.h>
  #include <Wrapper.h>
  #include <ArrayTypes.h>
   
  int main(){
  
          Wrapper wrapper;
          ***code to read***
          return(0);
  }
  

Затем я компилирую код следующим образом

 /usr/bin/g   -std=c  14 -O2 -Wall   -I ~/Programs/OmniDriver/include -I /usr/lib/jvm/jdk-14.0.2 -L /usr/lib/jvm/jdk-14.0.2/lib -I ~/Programs/ROOT/include -I /usr/lib/jvm/jdk-14.0.2/include -I /usr/lib/jvm/jdk-14.0.2/include/linux main.cxx -o main ~/OmniDriver/OOI_HOME/libOmniDriver.so ~/Programs/OmniDriver/OOI_HOME/libcommon.so -ljvm
  

Это можно упростить как:

 g   -std=c  14 -O2 (-ggdb3) -Wall -I /path main.cxx -o main -L lib.so -ljvm
  

Код может быть скомпилирован, но когда я его запускаю, он работает чрезвычайно медленно. Это должно быть сделано за 3 секунды, но это занимает 10 минут.

Первая часть выходных данных выглядит следующим образом:

 Linux native USB library loaded.
NatUSB
Detected device change on USB
  

Затем требуется 2 минуты, чтобы получить:

 The interface was claimed successfully.
  

и затем еще несколько минут для считывания данных со спектрометра.

Я новичок, и мне не удается решить эту проблему, даже если я стараюсь изо всех сил. Не могли бы вы, пожалуйста, дать мне несколько советов?

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

1. Поскольку все время тратится на код поставщика, сначала обратитесь в их службу поддержки. Вы могли бы попробовать запустить свою программу под strace, чтобы посмотреть, что она делает в эти мертвые моменты, но поскольку вы платите за поддержку, лучше используйте ее. Вы получаете такое же замедление, если используете JDK в комплекте?

2. @Botje Я думал, что уже использую JDK в комплекте! Компилятор запрашивает файл заголовка jni.h, поэтому я включаю путь к JDK 14. Я не уверен, что я делаю на самом деле!

3. В тексте вашего вопроса указано, что «Установщик этого драйвера установит версию 1.6.0_01 (1.6 update 1) Java JVM». Так имеет ли значение, если вы создаете / ссылаетесь на это вместо OpenJDK 14? Вероятно, это первое, о чем вас попросит поставщик.

4. @Botje Я проверил еще раз и обнаружил, что входящая в комплект JVM — это только JVM, без JDK. Внутри нет файла заголовка.

5. @Botje Спасибо! Я уже нахожу что-то неправильное в strace! Кажется, что что-то не так с разрешением usb. Я попробую больше, а затем обновлю вопрос.