• ベストアンサー

シリアルポートについて

シリアルポート(D-sub 9pin)をCで制御してリレーを使い簡単なロボットみたいなのを作りたいと思ってます。 シリアルポートの制御方法を自分なりに調べてみたのですが、Cでの制御方法がわからず皆様にご教授してもらおうと思いました。 まずシリアルポートを使うさいに必要な宣言などはありますか?(例えば変数など) それからシリアルポートにスイッチなどで信号を送りそれを元に判断する方法はありますか? そしてシリアルポートから外部に出力する方法はどうやればいいのでしょうか? 以上3つを教えてください。 なお自分自身CとBASICしかまだわかりませんのでC++よりCで教えていただけると光栄です。 皆様よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

CreateFile()で、"com1"等をオープンし, 制御線はドライバが勝手にon/offしないように GetCommState()、SetCommState()で設定し, 入力はSetCommMask()、WaitCommEvent()、 出力はEscapeCommFunction()でいけると思います。 詳しくは,それぞのAPIについてお調べください。 ところでフロー制御の信号線は、そのままリレーをつないでも動かないか、 パソコン側の232Cを壊す可能性があるように思いますが。 (リレーの種類にもよるでしょうけど) その信号を使ってリレーをon/offするハードウェアを作る必要があるでしょうね。 あと、パソコンへの出力も、単にスイッチつないでもだめで、規定の電圧、電流がかかるようにする必要があるでしょうね。

その他の回答 (2)

  • paspas
  • ベストアンサー率52% (47/90)
回答No.2

createfile RS232C VC などのキーワードで検索してみてください。参考になるものがあると思います。 ファイルとしてシリアルポートをオープンし、モデムコントロールラインを用いて制御線をコントロールします。 ちなみにご存じかとは思いますが、RS232Cレベルは±10~±12V位です。  直流用のリレーを用いるときは極性に注意が必要です。 また、コイル電流もチェックしておかないといけないでしょう。

  • paspas
  • ベストアンサー率52% (47/90)
回答No.1

プログラムを載せるのは、パソコンでしょうか?それとも組み込み用のボードマイコンでしょうか? また、パソコンで行う場合、OSはDOSでしょうか? WINDOWSでしょうか? Cでシリアルポートを制御するとありますが、リレーは シリアルポートの制御線に接続するのでしょうか?または相手にシリアル受信機があり、そのターゲットボードがリレー制御するのでしょうか?  もう少し詳しい情報をお願いします。

SUIGIN
質問者

補足

遅くなりましたが補足をさせていただきます。 まずプログラムを載せるのはパソコンです。 OSはWindowsXP HE リレーはシリアルポートの制御線に接続してPCからの信号をスイッチに使いたいと思っています。 以上でよろしかったでしょうか?