26.4Kbps付近のボーレートによるシリアル通信方法

[戻る]
かーん 2004/07/09(金) 16:32:50
ご無沙汰しています。かなり久しぶりに質問しますかーんと言います。

今回急ぎでシリアル通信のソフトウェアを作成の検討をすることになったのですが、そこで一つ
判らないことがあるので質問にきました。

タイトルにもあるように『26.4Kbps付近』のシリアル通信の方法が判らないのです。
仕事上の細かいことは省きますが、この付近のボーレートで通信している機器のメンテナンス用
のソフト作成だと思ってください。

自分でも以前Win32 API使用によるシリアル通信ソフトを作成したことがあるのですが、Win32 
APIのDCB構造体を使用するもので、この構造体では26.4Kbpsを指定することが出来ません。
よって他の方法を探しているのですが今のところ自分では皆目見当がつかず、インターネットで
調べてる限りでも見つかりません。
当然自分でも引き続き探してみますが何かこの事についてヒントだけでもいいので知っているこ
とがあったら教えていただけないでしょうか?逆に不可能であると言う証拠になるようなもので
も構いません。

下に開発予定の環境を書きます。出来ればVC++で作成したいと思っています。

以上、乱文で申し訳ありませんがどうかよろしくお願いします。

開発環境
OS:    Windows2000 SP2
開発言語: Visual C++ 6.0
      MFC ダイアログベース
      または
      Visual Basic 6.0

tetrapod 2004/07/09(金) 17:07:32
そういう変則的ボーレートは試したことないのですが、とりあえず DCB.BaudRate の説明には
]] This member can be an actual baud rate value,
]] or one of following baud rate indexes
とあるので指定してみる価値はあるかもしれません。

ただし、いわゆる PS/2 の 16550A チップの場合、
16550A に供給されるクロックの関係でハード的上限が 115200bps となります。
15200bps より高速な通信ができるかどうかは、当該シリアルポートの chip 次第、
ということになりそうです。
特定マシン限定ないしは特定(拡張)シリアルボード限定というお話になりそうな気がしまうま。

tetrapod 2004/07/09(金) 17:18:29
あう typo だ... 115200bps ね。

少なくとも WINXPDDK 2600 の serial.sys ソースを見る限りにおいては、
Win2K/XP 標準のシリアルドライバを使う限りにおいては 26.5Kbps での
通信を行うことはできないと思われます。
3rdparty 製のドライバが必要になるであろうことはほぼ間違いない。

επιστημη [E-Mail] [HomePage] 2004/07/09(金) 17:32:33
28400 だったら 115200/4 なんですけどねぇ…

かーん 2004/07/09(金) 18:16:52
[[解決]]
tetrapodさん、επιστημηさんありがとうございました。
一応自分でDCB構造体のボーレートの部分に直接数字を入れる方法で試してみましたが思った通
りエラーが返ってきてしまいました。
標準のシリアルドライバで作成出来ないとなると別の問題が発生してしまうので今回は出来ない
と言うことで報告しようと思います。
今回はありがとうございました。もしまた疑問がありましたら質問させていただきます。

tetrapod 2004/07/12(月) 09:17:10
標準シリアルドライバを使わないシリアル装置なんてのはごろごろしてます。
USB-RS232C IF なんてのはそのベンダが提供したドライバを使います。
あとは 26.4Kbps を発生させうるシリアル装置を探すだけかと思います。
# レアな気がする。
# 230400bps, 256000bps ならサポートされているかも
いざとなれば USB ポートに接続する専用機器を自作するとか。
今なら資料も chip もそれなりにあるし。

ぽけらった 2004/07/15(木) 16:10:49
DDK付属のserial.sysのサンプルをちょっと(3行)いじれば、
そのボーレート用にできたりします。

古いスレッドには追加発言できません。