HN 日本語サマリー

← 一覧へ戻る
プログラミング

Apple IIにおけるSierra製デジタルカメラ

Sierra digital cameras on the Apple II (colino.net)

23 pointsby ibobev1 コメント

要約

Apple II用のQuicktakeプロジェクトで、新たにSierraクラスのデジタルカメラ(約80モデル)への対応が進められています。Sanyo VPC-G1やVPC-G200などのカメラに対応するドライバーが開発され、モジュール化により拡張性が向上しました。ただし、JPEGデコーダーの解像度制限や、シリアル通信速度の制約といった課題も存在します。

全文翻訳

約5分で読めます Kodak DC-50カメラのQuicktake for Apple IIへの対応を成功させた後、私は「システム要件」を大幅に誇張した他のカメラについて調査しました。 libgphoto2のソースコードに基づき、Epson PhotoPCユーザーマニュアルのシステム要件ページを見て、私が(そして彼らが)「Sierraクラス」と呼ぶカメラ群を詳しく調べることにしました。そこには80以上のモデルが参照されており、同じクラスのプロトコルを共有するカメラがたくさんあります。 Apple IIで全てが使用できるわけではありません。私のJPEGデコーダーは640×480ピクセルの画像にハードコードされているからです(これを解除することは可能ですが、メモリとCPUを大量に消費し、すでに十分遅いため、800×600や1024×768のデコードとスケーリングを試す気にはなれません)。640×480ピクセルのカメラに限定されたとしても、多くの選択肢が開かれます。 私はeBayで非常に安価なSanyo製カメラを2台購入しました(1995年製のVPC-G1、Epson PhotoPC PCDC001およびSierra Imaging SD640としても販売されていました。そして1997年製のVPC-G200)。そして2026年の夏のステイケーション中に、私のドライバーを実装し始めました。前回のリリースサイクルでKodak DC50のサポートに至る過程で、カメラドライバーが定義されたインターフェースを持つモジュールになったようにコードを改修しました。これにより、私のプログラムは関連するドライバーのみをメモリにロードできるようになり、フロッピーディスクに収まる限り、Quicktake for Apple IIは任意の数のドライバーで拡張可能になります。 Sanyo VPC-G1 (1995) Sanyo VPC-G200 (1997) これは、ボイラープレート以上の何もしない私の「スケルトン」ドライバーです。基本的に、サポートされている機能のビットフィールドと16個の「APIメソッド」を定義します。ほとんどのメソッドはオプションです。唯一必須のエンドポイントは_wakeup、_set_speed、_get_information、_get_pictureです。 #define sierra_features 0b0000000011011111 // ||||||||_ SET_CAMERA_NAME // |||||||__ SET_CAMERA_TIME // ||||||___ SET_QUALITY, // |||||____ SET_FLASH, // ||||_____ TAKE_PICTURE, // |||______ GET_THUMBNAIL, // ||_______ DELETE_PICTURES, // |________ RESERVED, /* Camera callbacks */ void *sierra_callbacks[] = { /* FEATURES */ (void *)sierra_features, /* WAKEUP */ sierra_wakeup, /* SET_SPEED */ sierra_set_speed, /* SET_CAMERA_NAME */ sierra_set_camera_name, /* SET_CAMERA_TIME */ sierra_set_camera_time, /* GET_INFORMATION */ sierra_get_information, /* SET_QUALITY */ sierra_set_quality, /* SET_FLASH */ sierra_set_flash, /* TAKE_PICTURE */ sierra_take_picture, /* GET_PICTURE */ sierra_get_picture, /* GET_THUMBNAIL */ NULL, /* DELETE_PICTURES */ sierra_delete_pictures, /* GET_FILENAME */ sierra_get_filename, /* THUMB_HISTOGRAM */ NULL, /* THUMB_LOAD_DATA */ NULL, /* GET_QUALITY_STR */ sierra_get_quality_str, /* GET_FLASH_STR */ sierra_get_flash_str, }; 最終的に、私のSierraドライバーはプログラムがサポートするほぼ全ての機能を実装しています。情報フィールド(カメラ名、カメラ時刻、品質モード、フラッシュモード、撮影済み枚数、残り枚数、バッテリー残量)はすべて読み取り可能で、フラッシュと品質モードは設定可能、写真をスナップすることもできます。 libgphoto2のSierraドライバーは、機能的で理解しやすいため、物事を非常に簡単にしてくれました。あちこちにいくつかのマジックナンバーが散りばめられていますが、それらは理解して#defineにするのが簡単でした。 利用できない唯一の機能はsierra_get_thumbnailです。実際には実装されています。なぜなら、カメラからサムネイルを取得するのは簡単だからです。それは、2つの異なるカメラレジスタを使用して、画像を取得するのと同じ手順です。しかし、サムネイルはJPEGであるため、UIには組み込まれていません。サムネイルが表示されるUIプログラムにJPEGデコーダーをロードする余地は全くないため、除外しました。 Sierraカメラ(少なくとも私が持っている2台のSanyo)のもう一つの小さな煩わしさは、シリアルチップを安価なものにしたように見えることです。PCでは115200bpsで通信できますが、Apple IIではできません。Sigrokの信号キャプチャを見ると、ストップビットの後にスタートビットが早すぎるため、Apple IIのACIA 6551がフレームエラーを発生させます。そのため、IIgsでさえ速度は19200bpsに制限されます。 ストップビットが早期に始まるストップビットで始まるスタートビットが表示された、Pulseviewで見たSigrokキャプチャ。 Sanyo VPC-G200から直接撮影された、木々のある建物の写真 サポートされているカメラ 私がテストしたカメラのみを記載すると、以下がサポートされます。 Sanyo VPC-G1 Epson PhotoPC PCDC001 Sierra Imaging SD640 Sanyo VPC-G200 以下のカメラは、テストはしていませんが、そのまま動作する可能性が高いと強く疑っています。 Agfa ePhoto 307 Agfa ePhoto 780 Epson PhotoPC 500 Epson PhotoPC 550 Olympus C-400 Olympus C-400L / D-200L Olympus C-410L Olympus C-420L / D-220L Polaroid PDC-640 Sanyo VPC-G210 Sanyo VPC-G250 リファクタリングと次のステップ Sierraドライバーが書かれ、カメラドライバー自体がフロッピーディスク上で(zx02を使用して)圧縮されているにもかかわらず、プログラムのフロッピーディスクには6kBしか残っていませんでした。重要なものを追加するには全く十分ではありません…そして、さらに多くのカメラドライバーを追加する予定です! そのため、UIと画像デコーダーのバイナリ自体も圧縮し続けました。自己解凍型にすることもできましたが、それはバイナリごとにデコンプレッサーのコピーが複数必要になることを意味します。そこで、Oliver SchmidtのLOADE.SYSTEMを拡張して、zx02圧縮バイナリを扱えるようにしました。 次のステップは、新しいカメラドライバーを見つけて実装することです。それはCanon PowerShot 350、1998年のカメラで、Apple IIより18歳若く、明らかにすごいプロトコルを持っています。 Quicktake for Apple IIプロジェクトの名前を、ますます多くのカメラをサポートしていることを反映するように変更すべきでしょうか?しかし、現在の名前は気に入っていますし、他に良いアイデアもありません。 あなたも好きかもしれません... WordPress: Mastodonのプレビューカードのサムネイルを修正する方法 SPIISDプロジェクトをフォークした理由 どのように愚か者らしく振る舞い、フリーソフトウェアプロジェクトにお金を失わせるか 記事 前へ 自動レベリングかヒストグラム均等化か? コメントを残す あなたのメールアドレスは公開されません。必須項目は*で示されています。 コメント * 名前 * メール * ウェブサイト Δ このサイトはスパムを減らすためにAkismetを使用しています。コメントデータの処理方法を学ぶ。 WordPress: Mastodonのプレビューカードのサムネイルを修正する方法 SPIISDプロジェクトをフォークした理由 どのように愚か者らしく振る舞い、フリーソフトウェアプロジェクトにお金を失わせるか