6

仮想COMポートを介してハードウェアデバイスと通信しようとしています。ホストコンピュータはPCWindowsOSPCです。デバイスは921600ボーレートで動作しています。このコードは機能します:

DCB dcb;
..。
dcb.BaudRate = CBR_115200;
SetCommState(hPort、&dcb);

ボーレートを変更したら:

dcb.BaudRate = 921600;

SetCommStateは最後のエラーで失敗します0x57(パラメーターが正しくありません)。これは、Windows APIが事前定義された値以外のボーレートを防ぐことを意味しますか?または、仮想COMポートがこのボーレートを許可するように構成されている可能性がありますか?

仮想COMポートはCameraLink接続の一部です。CameraLinkボードベンダーと話しています。ただし、Windowsシリアル通信APIがカスタムボーレートをサポートしているかどうかを知る必要があります。

4

1 に答える 1

6

Iv'eは、このためのMSDNドキュメントに簡単にアクセスしました。これが、DCB構造体のBaudRateプロパティについての説明です。

BaudRate通信デバイスが動作するボーレート。このメンバーは、実際のボーレート値、または次のいずれかのインデックスにすることができます。CBR_110。CBR_300、CBR_600、CBR_1200、CBR_2400、CBR_4800、CBR_9600、CBR_14400、CBR_19200、CBR_38400、CBR_57600、CBR_115200、CBR_128000、CBR_256000

したがって、理論的には、少なくとも、要求するシリアルポートの速度を設定するのに問題はないはずです。

また、無効な組み合わせがいくつかあることも述べています(特に、8250シリアルチップをプログラミングする場合)。

備考 DCB構造体を使用して8250を構成する場合、ByteSizeおよびStopBitsメンバーに指定される値には次の制限が適用されます。データビット数は5〜8ビットである必要があります。1.5ストップビットの6、7、または8データビットと同様に、2ストップビットの5データビットの使用は無効な組み合わせです。

これは、たとえばボーレートを設定するだけでなく、特定の組み合わせが原因であるという問題があるのではないかと思います。

ボーレートは問題ないかもしれませんが、そのボーレートを選択すると、ストップビット数またはパリティ長が無効になります。これは、ボーレートが標準設定に戻されると、再び有効になります。

扱っているハードウェアがわからないので、100%とは言えません。一般的にはシリアルポートプログラミングしか知りませんが、個人的には、次のステップはボーレートを必要なものに設定することです。それをそのままにして、ブロック内の他のフラグのさまざまな組み合わせをすべて試してください。

DCB構造の公式MSDNページは、次の場所にあります。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx

また、いくつかのヘルプのBuildCommDCB関数もあります。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx

于 2011-10-11T08:42:21.247 に答える