Пакетный файл DOS для ввода команд в собственном Java-приложении и получения обратной связи? - PullRequest
2 голосов
/ 12 апреля 2010

Я работаю над проектом, в котором я хотел бы иметь возможность включать и выключать свет в Duke Smart Home через высокочастотный чирп. Система освещения называется Clipsal Square-D, а программа, предоставляющая пользователю доступ к элементам управления освещением, называется CGate. Я планировал выполнить некоторую обработку сигналов в Matlab, а затем создать пакетный файл из Matlab для взаимодействия с Cgate. Cgate - это проприетарное Java-приложение, которое при запуске из командной строки DOS открывает другое окно, которое физически выглядит как командная строка DOS. У меня есть командный файл, который может проверить, работает ли Cgate, и если нет, откройте его.

Но что я не могу понять, как это сделать, так это запустить команды в программе Cgate из командного файла, а также принять ответ от Cgate. Примером такой команды является «noop», которая должна вернуть «200 OK».

Любая помощь будет высоко ценится! Заранее большое спасибо:)

(кстати, вот мой существующий пакетный файл)

@ECHO off

goto checkIfOpen

:checkIfOpen

REM pv finds all open processes and puts it in result.txt
%SystemRoot%\pv\pv.exe
%SystemRoot%\pv\pv.exe > result.txt

REM if result has the word notepad in it then notepad is running
REM if not then it opens notepad
FIND "notepad.exe" result.txt
IF ERRORLEVEL 1 START %SystemRoot%\system32\Clipsal\C-Gate2\cgate.exe

goto end

:end

Ответы [ 2 ]

0 голосов
/ 12 апреля 2010

Вы звоните start cgate.exe, что приведет к запуску cgate.exe в новом окне. Во-первых, вы, вероятно, хотите запустить cgate в том же окне, что означает, что вы должны сбросить start.

Во-вторых, вы можете использовать перенаправление оболочки для передачи команд на STDIN cgate из текстового файла, например:

cgate.exe < commands.txt

Это будет , вероятно, работать, но может и не работать, в зависимости от того, как cgate.exe действительно должен получать свои данные.

Если вы хотите иметь двустороннюю связь, при которой вы отправляете данные, получаете ответ, а затем отправляете больше данных, в зависимости от того, каким был ответ, вам придется использовать что-то иное, чем командный файл. Для этой цели можно использовать большинство языков сценариев (perl, python), или C, или что-то еще.

0 голосов
/ 12 апреля 2010

Я не знаю, как это сделать в Windows, но в UNIX существует программа под названием Ожидайте , которая предназначена для такой задачи. Если вы установите Cygwin , вы сможете использовать ожидаемую утилиту в Windows.

...