メニュー 閉じる

023. ProcessingからWindowsネイティブコマンドを呼び出してみる

ProcessingはWindowsのアプリケーションも開発できます。ただ、特殊なデバイスを使った場合、そのデバイスの操作は付属のソフトウェアによって制御され、それがWindowsのネイティブコマンドとしてインストールされる場合があります。

こちらはProcessingで作ってるのにデバイスはWindowsネイティブならお手上げのように思いますが、JavaのJNA(Java Native Access)がその橋渡しをしてくれます。インストールされたdllファイルを読み込んでコマンドをJava側でインスタンス化し、実行すれば大丈夫です。

以下のソースは、とあるスイッチデバイスを導入する際に書いたコードです。このデバイスは「cdio.dll」がコアライブラリになっていて、そこから制御コマンドを使うのですが、Processing(Java)から初期化コマンドを実行しました。

import com.sun.jna.*;

ApiInit api_init;

long processing_init;

public interface DioInitLib extends Library {

	DioInitLib INSTANCE = (DioInitLib) Native.loadLibrary ("cdio", DioInitLib.class);
	public long DioInit (String device_name, ShortByReference device_id);

}

class ApiInit {

	String device_name = "ABCD01234567890";
	ShortByReference device_id = 1234567890;

	void start () {
		DioInitLib dio_init = DioInitLib.INSTANCE;
		processing_init = dio_init.DioInit (device_name, device_id);
	}

}

void setup () {

	api_init = new ApiInit ();
	api_init.start ();

}

void draw () {

}

 

Posted in processing