1

カメラ制御用のユニバーサルキーボード用のアプリケーションを開発しようとしています。/dev/ttyACM0 疑似端末デバイスを介して、Linux で基本的な方法でデバイスと通信できます。しかし、私の知る限り、これは Windows には存在せず、comm API と rxtx ライブラリのサンプルを調べると少し混乱します。

Linux で簡単にできるように、このデバイスと通信するにはどうすればよいですか? キーボードの取扱説明書はこちら: http://www.videotec.com/dep/DCZ_1051.pdf

コードは次のとおりです。

Class1.java

package customkeyboard;

import java.io.FileInputStream;
import org.apache.commons.codec.binary.Hex;

public class CustomKeyboard {

    public static void main(String[] args) {
        // TODO code application logic here
        FileInputStream in = null;
        try {
            in = new FileInputStream("/dev/ttyACM0");
            int c = 0;

            int streamCounter = 0;
            String command = "";
            CustomKeyboard2 key2 = new CustomKeyboard2();
            key2.main(null);
            while ((c = in.read()) != -1) {
                if (streamCounter < 6) {
                    //System.out.print( + " - ");
                    command += Integer.toHexString(c);
                    streamCounter++;
                    if (streamCounter == 6) {
                        streamCounter = 0;
                        System.out.println(command);
                        byte[] bytes = Hex.decodeHex(command.toCharArray());
                        String deastranza = new String ( bytes, "UTF-8");
                        System.out.println(deastranza);
                        command = "";
                }
            } else {
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

}

Class2.java

package customkeyboard;

import java.io.FileOutputStream;
import org.apache.commons.codec.binary.Hex;

public class CustomKeyboard2 {
    public static void main(String[] args) {
        try {
            FileOutputStream out = null;
            out = new FileOutputStream("/dev/ttyACM0");
            String command = "[LedImmediate]";
            byte[] message = command.getBytes("UTF-8");
            out.write(message);

            command = "[Led+45]";
            message = command.getBytes();
            out.write(message);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
4

0 に答える 0