Как я могу запустить / контролировать программу Java изнутри C? - PullRequest
0 голосов
/ 08 сентября 2010

Я использую System Verilog внутри симулятора ASIC. SV имеет механизм импорта / экспорта для вызова функций C из SV, а также для вызова функций SV изнутри C.

Я хотел бы отправить данные реального времени (очень медленный поток) из симуляции в программу построения диаграмм, которую я напишу на Java. Как лучше всего вызывать Java с периодическими обновлениями из программы симулятор / C?

Ответы [ 3 ]

4 голосов
/ 09 сентября 2010

После быстрого взгляда здесь: http://java.sun.com/docs/books/jni/html/invoke.html, ...

Затем рассмотрите это:

Самый простой способ - записать данные в файл и написать Java.программа для чтения из файла по мере его роста.Смотрите этот ответ: Java IO реализация unix / linux "tail -f"

Запустите их обоих по отдельности или используйте system(), чтобы запустить программу Java из вашего плагина, передавая имя файлав качестве аргумента.

2 голосов
/ 09 сентября 2010

Лучшим способом было бы прослушивание программой Java на сокете TCP обновлений от программы C, которые могут их отправлять. Когда C-программа запускается, она подключается к Java-программе и всякий раз, когда происходит обновление, она может передавать ее по подключенному сокету. Затем Java-программа может взять данные и обновить все, что нужно для обновления.

Это также имеет то преимущество, что двум программам даже не нужно работать на одной машине.

1 голос
/ 08 сентября 2010

Существует нативный интерфейс java , который позволяет программам на C взаимодействовать с объектами java.Но вам нужно написать код на C, чтобы интегрировать его в симулятор ASIC.

...