Delphi 用 RS-232C コンポーネントを C++Builder XE で使う

Delphi(および C++Builder の旧バージョン)で手軽に RS-232C(COM ポート)を使うためのコンポーネントに ComPort Library(TComPort)がある。C++Builder XE でも何とか動作したので、やり方を整理しておく。

【実行時パッケージの作成】

  • すべてのプロジェクトを閉じた状態で、[ファイル→プロジェクトを開く]メニューにて、ComPort Library の Source フォルダにある CPortLibCB6.bpk(C++Builder 6 用)を開く。
  • 自動的にプロジェクトが C++Builder XE 用に変換される。
  • ビルド構成を Release にする(右側のプロジェクトマネージャーペインで選択)。
  • メイクすると、CPortLibCB6.bpl ができあがる。


【設計時パッケージの作成】

  • [ファイル→プロジェクトを開く]メニューにて、DsgnCPortCB6.bpk を開く。
  • 実行時パッケージと同様にメイクし、DsgnCPortCB6.bpl を得る。

【パッケージのインストール】

  • CPortLibCB6.bpl を Windows のシステムライブラリフォルダ(Windows 7 64bit なら C:\Windows\SysWOW64)にコピーする。
  • [コンポーネント→パッケージのインストール]メニューにて、追加ボタンをクリックして DsgnCPortCB6.bpl を追加する。デフォルトにチェックを入れると毎回設定しなくて良いだろう。

【ComPort Library を利用するアプリケーションのメイク】

  • ツールパレットペインに「CPortLib」タブが増えていて、その中の TComPort をフォームに貼り付ければ RS-232C にアクセスできるようになる。
  • [プロジェクト→オプション]メニューで、ディレクトリと条件定義→ライブラリパスに、CPortLibCB6.bpl/DsgnCPortCB6.bpl のパスを追加する。
  • [プロジェクト→オプション]メニューで、ディレクトリと条件定義→条件定義に DONT_USE_WINSPOOL_SETPORTA を追加する。
  • winspool.h(include\windows\sdk 等にある)を開き、SetPortA/SetPortW を宣言している箇所を、#ifndef DONT_USE_WINSPOOL_SETPORTA~#endif で挟む
  • CPort.hpp をインクルードする。
  • CPort.hpp を開き、inline じゃない方の EComPort() の宣言 2 つをコメントアウトする。

以上でビルドができる。



≪参考≫

GPS ロガーと Portmon for Windows

GPS ロガー(GT-730FL-S)のデータを自力で取ってこれたら面白いかも、と思ったのだが、どういうコマンドを出せば良いのかが分からない。

GT-730FL-S のデータシート PDF を見ると、「See Binary Message Protocol User’s Guide for detailed descriptions」と書いてあって、それを見ればプロトコルが分かりそうなのだが、User's Guide を見つけることができなかった。

仕方がないのでデータの流れをモニターしてみようかと思ったら、ツールを動かすまでにすでに一苦労。最終的には動いたが……。

COM ポート(シリアルポート)に流れるデータをモニター(キャプチャー/スニファ/スパイ)する Portmon for Windows というツールを Microsoft が配布している(フリーのツール)。

Portmon_AfterLaunch現時点での Portmon のバージョンは 3.03。起動すると、管理者権限を要求された後にウィンドウが開く。

Microsoft のサイトには、「実行すると、すぐに Portmon でデバッグの出力のキャプチャが開始されます」と書いてあるが、起動しても、タイトルバーに「Not Connected」と表示されてキャプチャされる気配が無い。「Capture Events」メニューもグレーアウトされているし、ポートも選択できない。

Windows 7/64 bit に対応していないのかもしれない(少なくとも旧バージョンは対応していない)と思って、VMWare の Windows XP で動かしてみたけど、結果は同じ。

他のサイトの説明だと、まず「Computer」メニューでローカルマシンに接続する必要があると書いてあるのだが、そもそも Computer メニューが無い。バージョンアップして無くなったのだろう。しかししそれでは、一体どうやってローカルマシンに接続するのか……。

というわけで、Ver 3.03 の使い方をご存じの方は教えて下さい……。

Ver 3.03 は諦め、ここに置いてあった Ver 3.02 を動かしてみた。

今度はちゃんと「Computer」メニューがあるが、Windows 7/64bit だと、「Connect Local」しようとすると「Error 6」と表示されて接続できない。

そこで、VMWare の Windows XP 上で Portmon を使うことにする。

  1. VMWare の仮想マシンメニューの取り外し可能デバイスで、「Prolific usb-serial controller d」を接続する→仮想マシンで USB ブリッジ COM ポートが使えるようになる
  2. デバイスマネージャーで USB ブリッジ COM ポート(Prolific USB-to-Serial Comm Port)の通信速度を 38400 にする
  3. Portmon 3.02 を起動する。
  4. [Capture→Ports→(Prolific ポート)]で USB ブリッジ COM ポートのチェックを入れてキャプチャ対象にする
  5. [Capture→Capture Events]でキャプチャを開始する
  6. GT-730FL-S の電源を入れて、物理マシンの USB ポートに挿す
  7. GPS Photo Tagger で GT-730FL-S にアクセスすると、Portmon に通信内容が溜まっていく
Portmon_XPようやく準備ができた……。

ちなみに、XP には PL-2303 ドライバは入れなくても大丈夫なのではないかと思う(試行錯誤の中で入れてしまったが)。



SD カード速度比較

※更新しました。こちらをご覧ください。

手持ちの SD カードファミリーの、読み込み&書き込み速度を CrystalDiskMark で測定してみた。

SD カード型番Seq/RSeq/W4K/R4K/WCDM
ADATA microSD Class4 (4GB)AUSDH4GCL4-RA120.48 (-)
5.291 (-)
3.6561.0463.0 x64
Kingston microSD Class10 (16GB)SDC10/16GB19.28 (-)
16.74 (-)
2.6380.0193.0 x64
東芝 SD (2GB)SD-M02G19.0110.853.0260.0273.0 x64
Transcend microSD Class10 (8GB)TS8GUSDHC1019.85 (20)
20.03 (-)
2.7560.0123.0 x64

  • Seq/R……シーケンシャルリード [MB/s]。括弧内は公称値。
  • Seq/W……シーケンシャルライト [MB/s]。括弧内は公称値。
  • 4K/R……ランダムリード 4KB [MB/s]。
  • 4K/W……ランダムライト 4KB [MB/s]。
  • CDM……CrystalDiskMark のバージョン。

測定サイズは 100MB。測定はミヨシ製カードリーダーライター USR-MLT/WH にて、アダプタ経由で実施。Kingston の SDC10/16GB のみ、アダプタ無しでも測定してみてアダプタ経由と比較してみたが、結果は変わらなかった。

シーケンシャル読み込みはどれもほとんど変わらないが、シーケンシャルライトは Class10 組が勝っている。

ちなみに、SDHC カードの Class 表記は、「書き込み」を行う際の MB/s 単位での速度。例えば、Class10 なら 10MB/s 以上の速度で書き込みできることを保証する。

※USB メモリの速度比較はこちら

うたりす Ver 4.1 SP をリリース

うたりす256歌唱 WAVE のピッチ情報・音量情報を取り出し、UTAU 調教に反映させるプラグイン、「うたりす」の最新バージョンを公開します。

今回のバージョンアップにより、以下のような画期的な機能が搭載されました。

≪進化点 その 1≫ キネクトと連携

これまでのうたりすは、歌唱 WAVE から表情を抽出していましたが、今回のバージョンアップで、「人間の動き」からも表情を抽出できるようになりました。

キネクト(Kinect)をパソコンに繋いでアクションすると、UTAU の調教に反映されます。

例)
  • 怒りを込めてパンチ……力強い調整になります。歌い上げたい箇所では、パンチを連打しましょう。秒間 16 連打に達すると新たな領域が開けます。
  • 優しさを込めて愛撫……まろやかな調整になります。とろ~り甘い雰囲気も良いですね。

≪進化点 その 2≫ 仮想キネクトデバイスを内蔵


キネクト持ってない!

そんなあなたも心配無用です。うたりすは仮想キネクトデバイスを内蔵しているので、キネクトが無くても使えます。


≪進化点 その 3≫ 動物の鳴き声対応


ペットを飼っているあなたに朗報です。動物の鳴き声を歌唱 WAVE として与えることにより、うたりすが表情を読み取り、UTAU に反映させます。

にゃん! にゃお~ん、んにゃん、微妙な違いをくみ取ります。

ペットを飼っていない方は、狩ってきて下さい。


※動作確認は、りすの鳴き声のみで行っています。


≪進化点 その 4≫ 多種多様な音声フォーマットに対応


これまでのうたりすは WAVE ファイルしか読み込めませんでしたが、サポートする音声ファイルのフォーマットを大幅に増やしました。

  • MP3 ファイル……説明不要の定番フォーマットですね。
  • SPC ファイル……スーパーファミコンの音声ファイルです。あの名作の BGM を、UTAU に取り込みましょう!
  • STR/XA ファイル……PlayStation の音声ファイルです。あの名作(ry
  • MDX ファイル……X68000 の音声ファイルです。あの名作(ry


【ダウンロードはこちらから】


アーカイブ内の UTALis.exe を起動して下さい。

※重音テトでサンプルボイス入れてあるけど、Windows XP だと音声が再生されないかも…… ^^;


マシンスペックまとめ(メインマシン:Core i5)

2010 年の Core i5 マシン電源を換装

パーツ型番購入価格(税込み)
名称Core i5 - P7 マシン(Rev. 2012-03-24)152,050 円
マザーボードASUS P7P55D-E13,980 円
CPUIntel Core i5-750s
※物理 4 コア、HT 無し、実クロック 2.400GHz(Turbo Boost 3.2GHz)、TDP 82W、45nm プロセス
24,980 円
CPU クーラーCPU 付属品0 円
セラミックグリスCPU 付属品0 円
メモリ8GB、DDR3-1333(PC3-10600) DIMM 2GB×4
※Corsair 製、チップメーカー不明、CL9、ヒートスプレッダ付き
30,480 円
ビデオカードSAPPHIRE HD5570 1G DDR3 PCI-E HDMI/DVI-I/VGA
※RADEON HD 5570、DDR3 1GB、128bit、PCI-e x16、40nm プロセス
9,770 円
サウンドカード 1Creative Sound Blaster Digital Music Premium HD (SB-DM-PHD)
※USB 接続
8,900 円
サウンドカード 2Creative Sound Blaster Audigy 4 Digital Audio
※Core Duo マシンからの使い回し
0 円
LANオンボード
※ギガビット
0 円
SSD128GB、東芝 THNS128GG4BBAA
※S-ATA 2 (3Gbps)、2.5 インチ
32,980 円
マウンタサイズ BAY RAFTER 2.5 Rev.B980 円
RAID ユニット筐体……コレガ CG-HDC4EU3500
HDD……1TB×3 の RAID 5 で 2TB。いずれも Seagate Barracuda 7200.12、S-ATA
※eSATA 接続、GPT
※Core Duo マシンからの使い回し
0 円
光学ドライブ
(DVD スーパーマルチ)
LG 電子 GSA-H10A
※P-ATA
※Core Duo マシンからの使い回し
0 円
ケーススカイテック SKⅡ-201W
※Core Duo マシンからの使い回し
0 円
電源Owltech AU-500
※500W
9,980 円
ディスプレイ21.5 インチワイド液晶、IO DATA LCD-MF223XS
※HDMI 接続
約 20,000 円
スピーカーONKYO WAVIO GX-70HD
※Core Duo マシンからの使い回し
0 円

カウンター


カンパのお願い
Amazon でお買い物の際は、下記で検索して頂けたら幸いです。
記事検索
最新コメント
  • ライブドアブログ