- 締切済み
RS-232の ボーレイト変更ができません
WindowsXP上で Visual Basic ver.6にて RS232による通信プログラムを 作っておりますが 232C制御用の OCXとして ・シンプル通信(Rs-232c)Ver1.4 r1 (青山技術) ・HKSerial.OCX(VB6用) 上記の両方試してみますが、フォームオープン時に 通信パラメーターを 38400bps 偶数パリティにセットしますが 全く反映されません。 標準の232ポートも 追加したUSBでの232ポートも不可、 デバイスマネージャーでの通信設定しても なおも不可 ただし、一旦他の通信ソフト(ハイパーターミナル)で設定すると それ以降は ちゃんと指定速度のまま使用できます。 (VBの設定は 効かないけど 前ソフトの設定が保持) これは OCXやVBの問題では 無い気がしますが どなたか 解決方法を ご存じの方 いらっしゃいませんでしょうか どうぞ 御指南願います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kiki_s
- ベストアンサー率59% (147/248)
フォームオープン時との事ですが、Form_Loadではなく、 Show メソッドを使っているのでしょうか? サンプルコードではプロパティで設定されていますが、 Form_LoadでもShowでも変更は可能だと思います。 通信する相手が手元に無いので通信まで確認出来ませんが、 各プロパティの設定値はコードが実行された時点で変わる様です。 コードの書き方の問題じゃないかと思います。 本当に通信パラメータが変わっているか、 参照されると一目瞭然でしょう。 サンプルコードにForm_Loadなどを追加して、 A = Rs1.Bps B = Rs1.Parity 'サンプルコードそのままなら 'Aに9600 Bに0が入る 'ボーレート、パリティ変更 Rs1.Bps = 38400 Rs1.Parity = 2 A = Rs1.Bps B = Rs1.Parity '変更後なので 'Aに38400 Bに2が入る という風に確認出来るかと。 Showでも同じです。 サンプルコードにはOption Explicitステートメントがありますので、 適当な変数を使う場合コメント化しておくのが簡単でしょう。 Showメソッドでフォームを表示する時に、 オブジェクトの指定は合っていますか?
- stiffels
- ベストアンサー率34% (25/72)
昔RS232C使ってたけどそういう事は起きなかったなぁ。 で、実機が無いのでなんとも言えないのですが、 ボーレートとbpsを混同してらっしゃってませんか? もしそうであれば、ボーレート値=bps値/2(かな?) で設定してみてはいかがでしょうか?
補足
ご回答ありがとうございます ボーレイトは 私の勘違いですね モデムなどでの 変調速度でしたね 失礼しました でも今事案では ボーレイト値=bps値となります OCXの 設定プロパティも 38400を 直接設定間違いはないのです ちなみに 複数のPCでも 同じ結果となります