 |
[#50029] FT4232H(4ch)高速USBシリアル変換モジュールキット
商品ページにジャンプ
|
仮想COMポートで12,000,00bpsは選択できないのですがどうしてですか?
2010-07-01更新
<<前のFAQ
| 次のFAQ>>
|
一般のアプリケーションのボーレートはMS-DOS時代の名残で伝統的なボーレート(9600bps,38400bps,115200bpsなど)にしか設定することができません。これらはハードコーディングされているため選択できる範囲以外のスピードに設定することはできません。
Windowsのデバイスマネージャでも12000000bpsは選択できません。
VC++だと次のようなプログラムを作成する必要があります。既存ソフトウェアはプログラムを修正・再開発しない限りこのボードを接続しても高速化は計れません。詳しくはMSDNなどの技術資料を参照ください。
●低レベルでの通信関数はこのようなものになります。
HANDLE open_rs232c(char *name, long baud)
{
HANDLE hCom;
DCB dcb;
COMMTIMEOUTS to;
hCom = CreateFile(name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(!hCom){
return (HANDLE)-1;
}
GetCommState(hCom, &dcb);
dcb.BaudRate = baud; // ボーレート(115200や12000000)
dcb.fBinary = TRUE;
dcb.fParity = FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = TRUE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = FALSE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = DATABITS_8; // データビット長
dcb.Parity = NOPARITY; // パリティ生成なし
dcb.StopBits = ONESTOPBIT; // 1ストップビット
SetCommState(hCom, &dcb);
return hCom;
}
このような関数でボーレートを設定することでより高速な通信プログラムが作成できます。12Mbpsでの通信はプログラムをうまく作らないと最大スピードで通信できません。
例えば1バイトずつの送信、1バイトずつの受信は効率が悪いので最大スピードで通信することができなくなります。また受信は別スレッドで行うなどの他の処理で遅延が生じないようにする必要があります。フロー制御を使わない場合、受信バッファもスピードに応じて大きく確保しておかないとかなりの確率で取りこぼしを生じます。
※2010年掲載当時はそうでしたが現在はGHz動作のCPUが一般的ですので、さほど影響はないかと思われます。
プログラム上は1bps単位で設定することができますが、実際は設定できる範囲には制限があり設定可能な近似値に丸められます。
※この関数を実装したアプリケーションのみ有効です。このプログラムを走らせた後に他のアプリケーションを立ち上げてもスピードが上がることはありません。
|
●データシート・ファイル (うまく表示されない場合は、右クリックしてファイルに保存してから開いてください)
|
|
FT4232Hモジュール説明書
(514kバイト) 2020年 02月 01日
DS_FT4232H_V205.pdf
(1,315kバイト) 2009年 06月 19日
FT4232H寸法図
(96kバイト) 2024年 08月 17日
●その他の質問一覧(この商品について)
|
仮想COMポートで12,000,00bpsは選択できないのですがどうしてですか? 2010-07-01更新 |
|