シリアルポートから連続して入力される16進文字列のJPG画像を、バイナリ形式でファイルに書き出すためのプログラムです。
クロスプラットフォームであることが特徴です。
- 画像・受信データの保存先を選ぶ
- シリアルポートを選んで開く
- 今のところ115200bpsのみ対応。
リリースよりダウンロードできます。 今のところ、Windows 11とLinux x64用のファイルを用意しています。JavaFXとJREが用意できればjarファイルを用いて他のプラットフォームでも動くはずです。
-
入力はバイナリでなく、16進ダンプ形式。具体的に、配列data(長さn)にJPG画像が入っているとして、
for (int i = 0; i < n; i++) printf("%02x", data[i]);
という形で出力される形のデータの入力を期待する。 -
入力文字列の空白類を無視する。
-
'0'-'9', 'a'-'f', 'A'-'F'(16進表記の記号)でない記号は’0’とみなす。
-
直近64文字のうち空白類を除いた文字が全て’0’ならば画像ごとの区切りとみなす。
- つまり、画像データと画像データの間に64個以上の’0’が必要です。
-
指定されたディレクトリ内に、"log[yyyymmdd]_[hhmmss].jpg"(バイナリ)および"log[yyyymmdd]_[hhmmss]_raw.hex"(テキストファイル)を出力する。ただし、[yyyymmdd]および[hhmmss]は受信日時を表す。
- 一秒間に複数枚の画像を受信することは今のところ想定していない
前提:JDK17以上をインストール済み
- ここからJavaFXをダウンロード・解凍
- 使いたいプラットフォーム向けでTypeがSDKとなっているもの
- SerialJpgLogger_vX_Jar.zip(Xはバージョン)をダウンロード・解凍
cd <SerialJpgLogger_vX_Jar.zipを解凍したディレクトリ>
echo "java --module-path "<JavaFXを解凍したディレクトリ>/lib" --add-modules javafx.controls -jar sjl_vX.jar" > run.sh
chmod +x run.sh
./run.sh
で実行
- ここからJavaFXをダウンロード・解凍
- 使いたいプラットフォーム向けでTypeがjmodsとなっているもの
- ここからOpenJDK 21.0.2をダウンロード・解凍
- 使いたいプラットフォーム向けのビルド
- SerialJpgLogger_vX_Jar.zip(Xはバージョン)をダウンロード・解凍
cd <SerialJpgLogger_vX_Jar.zipを解凍したディレクトリ>
<OpenJDKを解凍したディレクトリ>/jdk-21.0.2/bin/jlink --module-path "<OpenJDKを解凍したディレクトリ>/jdk-21.0.2/jmods" --module-path "<JavaFXを解凍したディレクトリ>/javafx-jmods-21.0.2" --add-modules java.base,java.desktop,jdk.unsupported,javafx.base,javafx.controls,javafx.graphics --output jre_min
echo "jre_min/bin/java.exe -jar sjl_vX.jar" > run.sh
chmod +x run.sh
./run.sh
で実行