Files
ptouch_label/README.md
knb c5c7c2ba52 ruby binding 追加
- FFI gem (libptouch)、exe ptouch-print-png(PNG のみ)
- ステータス 32 バイトを Hash に展開(parse_status / status_hash)
- CMake: libptouch 共有ライブラリ(ptouch_shared)
- RuboCop、gemspec(homepage / source_code_uri)

Made-with: Cursor
2026-04-12 16:06:50 +09:00

103 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ptouch_label
**バージョン 1.0.0**(初回リリース)
Brother P-touch シリーズ向けのラベル印刷用 **C コアライブラリlibptouch** と、動作確認用 **CLI`ptouch-print`** のリポジトリです。
保有機種: **PT-P900W**USB・ラスターコマンド
## レイアウト
| パス | 内容 |
|------|------|
| `include/libptouch.h` | 公開 API |
| `src/libptouch.c` | ライブラリ本体(スタブ) |
| `src/cli/main.c` | `ptouch-print` エントリ |
| `samples/` | 試験用サンプル画像の置き場PNG 等) |
| `ruby/` | Ruby FFI gem`libptouch`)・コマンド `ptouch-print-png`PNG のみ)— `ruby/README.md` |
| `reference/` | 仕様・参考資料(例: ラスター PDF |
## ビルド
依存: **CMake 3.16+**、**libusb-1.0**、**libpng**(開発パッケージ例: `libusb-1.0-0-dev``libpng-dev`)。
```bash
cmake -S . -B build
cmake --build build
```
成果物(`build/` 以下):
- `libptouch.a` — 静的ライブラリ
- `libptouch.so` — 共有ライブラリRuby FFI 用)
- `ptouch-print` — CLI
### Ruby gem
共有ライブラリをビルドしたうえで、`ruby/``bundle install``gem build libptouch.gemspec` など(手順は `ruby/README.md`)。
## CLI の使い方(雛形)
**PNG**(拡張子 `.png` または PNG シグネチャ)の場合は幅・高さは画像から取得します。任意で `-t`0255で二値化しきい値を指定できます。
**1bit packed ラスター**(行優先、行あたり `ceil(width/8)` バイト × 行数)の場合は `-f` に加え `-w` / `-H` が必須です。
印刷時、`libptouch_print_raster` は内部でラスターを**転置**してから送ります(`-T` / `-M` などのオプションはありません。鏡像のみの変換は行いません)。
```bash
# PNG — 検証のみUSB 不要)
./build/ptouch-print -n -f label.png
# PNG — しきい値を指定
./build/ptouch-print -n -f label.png -t 160
# 1bit ラスター — 検証のみ
./build/ptouch-print -n -f sample.raster -w 128 -H 64
# プリンタステータステープ幅・種類・色・エラービット等、PDF の 32 バイト応答)
./build/ptouch-print --status
# USB 接続時
./build/ptouch-print -f label.png
./build/ptouch-print -f sample.raster -w 128 -H 64
```
`-n``--dry-run`)では読み込みと `libptouch_check_raster` まで実行します。
## libptouch API概要
- バージョン — `LIBPTOUCH_VERSION_MAJOR` / `MINOR` / `PATCH` / `LIBPTOUCH_VERSION_STRING``libptouch_version.h`、CMake の `project(VERSION …)` と同期)
- `libptouch_create` / `libptouch_destroy` — コンテキスト
- `libptouch_open_usb` / `libptouch_open_usb_vid_pid` / `libptouch_close` — USBlibusb・VID/PID
- `libptouch_get_status` / `libptouch_status_fprint` — ステータス情報リクエストESC i Sの応答
- `libptouch_check_raster` — ラスターバッファの検証のみ
- `libptouch_png_file_to_raster` / `libptouch_free_raster` — PNG を 1bit ラスターに変換libpng
- `libptouch_print_raster` — ラスター印刷USB・PDF のコマンド列、内部で転置)
- `libptouch_strerror` / `libptouch_last_error` — エラー情報
ラスター形式は `include/libptouch.h` のコメントに合わせてください。
## PT-P900W / Linux でのメモ
- 接続は **libusb-1.0** のみ。機種ごとに **VID/PID**`lsusb` 等)を調べ、`libptouch_open_usb_vid_pid` に渡すか、既定の PT-P900W なら `libptouch_open_usb` を使います。
- ラスターコマンドの詳細は **`reference/` の PDF** および Brother 公開資料に沿って `src/libptouch.c` に実装してください。
### Ubuntu で sudo なしで USB を開くudev
既定の **04f9:2085**PT-P900W向けルールを `udev/99-ptouch-label-brother.rules` に置いています。
```bash
sudo cp udev/99-ptouch-label-brother.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo usermod -aG plugdev "$USER"
```
**再ログイン**するか、端末で `newgrp plugdev` のあと試すか、USB を**抜き差し**してください。`groups``plugdev` が含まれていれば、`./build/ptouch-print --status` などを sudo なしで実行できます。
別の Brother 機種(別 PIDのときは、`lsusb` の ID に合わせて同ファイルに行を追加してください。
## ライセンス
[MIT License](LICENSE)`LICENSE` ファイルを参照)。