• 締切済み

ボーレートを2150にしたい!

VB6.0でシリアル通信をするとき,どうしてもボーレートを2150bpsに設定したいんですが,どうやればいいのかわからず困っています.どなたか御教授ください.(MSCommでやろうとしてましたができないことに気付きました)なお,「そんな中途半端な数字にはできない!」というご意見でも結構です.よろしくお願いします.

  • snuf
  • お礼率75% (12/16)

みんなの回答

  • 9766
  • ベストアンサー率23% (50/216)
回答No.3

シリアルポートは以下の数値以外だめみたいです。 他の方がおっしゃる通り、できても非常にマニアックな通信になってしまいます。 110 300 600 1200 2400 9600 (既定値) 14400 19200 28800 38400 56000 128000 256000

snuf
質問者

補足

ありがとうございます. つまり,それはVBでできないとかいう問題ではなく,どんなプログラムを用いてもシリアルを用いる場合は通常2150にはできないという理解で正しいんでしょうか?

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.2

16550互換チップとして、ベースクロック/ボーレート×16=Counterとなり、Counterが小数点以下の値を持つ物(つまり割り切れない)値は設定できません。 ベースクロックはデバイスドライバーが最適値を自動設定します。

snuf
質問者

お礼

どうもありがとうございます.参考になりました.

回答No.1

パソコンのシリアルポートにはたぶん16550というLSIが使われていると思いますが、2150bpsなどというモードは無いんじゃないかと思います。というわけでできないんじゃないでしょうか。 基準クロックを変更するという改造を加えればできるかも知れません(自信なし)が、相手もそうでないとなりませんよね?

snuf
質問者

お礼

ありがとうございます。基準クロックを改造とかは手におえないですね・・。

関連するQ&A

  • VB.NETでのシリアル通信

    .NET初心者です。 VB.NETでシリアル通信をしようとしています。 参照設定のところに Microsoft MSCOMM CONTROLというのがあったので 選択しました。 すると、MSLib.MSCommというのがでてきたので Vb6の Dim test As mscomm のように宣言して使えるかと思い Dim test As MSLib.MSComm test.PortOpen と書いてみたところ、 オブジェクト参照・・・インスタンス化されていません。と、エラーがでました。 ブレイクしてみたところ、test = Nothingでした。 testが無いのでインスタンス化されていないという エラーがでるのだなということは分かったのですが なぜこのエラーがでるのか、 どうしたらこのエラーを回避し、 .NETでシリアル通信ができるのか教えてください。 よろしくお願いします。

  • VB6のRS232C通信で75bpsは可能ですか?

    WinXP VB6 にて開発をしています。 RS232Cで通信する必要があり、相手側のボーレートが75bpsとのことです。 しかし標準COMポートでは、最低は110bpsしかサポートされておりません。 デバイスマネージャのCOMポートを確認したところ、75bpsにて設定が出来ますので、 WinXP自体は対応されていると思います。 この状況でどうすれば通信が可能でしょうか? たとえば。 このソフトをインストールしたらVBでCOM通信ツールが使える? DLLを作ればいい?? API関数がある?? もしくはこの質問サイトにはプログラミングの猛者がいる。そっちで聞いてみれば? というようなサイト、ご存知でしたら教えて下さい。

  • COM16以上を設定を使用してシリアル通信したい

    現在、VB6.0を使用してシリアル通信の制御をしたいのですが、MSCOMMを使用するとCOMポートの番号が16以上のポートを設定しようとするとエラーになってしまいます。(私の設定がおかしいのかもしれませんが・・・。) 通信ポートを16以上のポートも使用できるようにするにはどの様にしたらいいのでしょうか?

  • VB6でのシリアル通信について質問です。

    VB6でのシリアル通信について質問です。 現在、VB6で開発したラベル印刷のシステムを引き受けたのですが、以下のような状況に陥り困っております。 ・プリンタからPCへの接続はシリアル通信のみ。 ・現在使用しようとしているPCにはシリアル通信のポートがなく、USB接続のみしかできない。 ・RS232CからUSBへの変換コネクタを使ってPCとプリンタを接続しようとしているが、印刷実行時に実行時エラー 8015が発生する。 ・VBからプリンタへの通信はMSCommを使用している。 ・プログラム自体は客先にソースのみが残っていたもので、仕様書等はまったくない。 ネットで調べたところ、MicrosoftのサイトではUSBポートからMSCommを使って通信をする事はできないというような事が記載されておりました。 ただ、他のサイトを色々と調べたところ、普通に通信できるとの意見も記載されておりました。 実際のところ、VB6でRS232C-USB変換コネクタを使用してプリンタへのシリアル通信は可能なのでしょうか。 可能な場合、今回発生したエラーの原因になりそうなものとはなんなのでしょうか。 また、通信が不可能な場合、代替策としてどのような方法を取るのが一番ベストなのでしょうか。 どなたか何卒ご教授よろしくお願い致します。

  • MSComm

    1. MSComm1.CommPort = 1 COMポートで設定している値は整数値でしょうか? COM2、COM3など汎用性を持たせたいのですが、Int方への変換で、必要な文字列を切り出して文字列変数をInt型に変更したいのですが、 下例で良いですか? Dim Buffer$ Buffer$ = "COM1" Buffer$ = Mid(Buffer$, 4, 1) MSComm1.CommPort = CInt("Buffer$") 2. 通信速度 57600bpsで通信したいのですが、定義では56000bpsになります。 MSCommを使用すると、57600bpsがだせないのですか? 以上 宜しくお願いいたします。

  • エクセルVBAでRS232通信は可能ですか?

    VBAでシリアル通信したいのです。 VBでは下の検索結果にあるようにmscommが使えます。 VBAではmscommが使えませんでした。制限があるのでしょうか? VBAで行う方法をご存知の方教えてください。 http://www.okweb.ne.jp/search.php3?dummy=%83%81%81%5B%83%8B&c=218&kw=mscomm

  • 高速な通信方法を教えてください

    MSCommを使って計測器のデータを取り込んでいます。タイマコントロールで40ms毎にデータ送信要求を出していますが、1秒間で20回くらいしかデータが受け取れません。通信速度を9600bpsから115200bpsまで変えても大して変わりません。MSCommかタイマのせいではないかと思っていますが、もっと早い通信ができる方法があればお教え下さい。

  • シリアル通信について

    質問です。 仕事でシリアルプリンタをMSCommで制御しています。 開発環境はVB6(SP5),XPです。 MSCommにて印字データを一度に沢山送ると情報落ち(?)した印字内容になってしまいます。多分プリンタ内のバッファ(みたいなもの)が一杯になるかして、プリンタの処理能力が限界なのかと勝手に思ったりもしています。 ちなみに10秒間隔くらいで送れば大丈夫です。 一方、シリアル通信の実験としてTera Termを使用しています。Tera Termだと一度に沢山のデータを送っても問題ないです。Tera Termはそこらへんを制御しているのでしょうか? また、MSCommにもそのようなことができるのでしょうか? よくわからない質問かもしれませんが、どんな些細なことでも結構ですのでご教授願います。

  • VBでシリアル制御

    VB4でシリアル制御したいのですが、どの様にして良いのかわかりません。 しかも、MSCommというのが必要だと言うところまではわかったのですが、 VB4のスタンダードではこれが入っていません。 これが無いとシリアル制御は無理なのでしょうか? それとも、別の方法が有るのでしょうか? すみませんがよろしくお願いします。

  • XPでVBを使いRS232Cから5bpsでデータを出力する方法を教えて下さい。

    VBの初心者です。 VBを使いRS2322Cから5bpsでデータを出力したいと思っています。 98MEにてAPIのWriteFile()を使い成功したのですが、XPへ移行したとたんNGとなってしまいました。 MSComm1.Outputを使おうかとも思ったのですが最低ボーレイト110bpsまでで使えません。 何方かXPでRS2322Cから5bpsでデータを出力する方法をご存知の方がおられれば教えて下さい。

専門家に質問してみよう