• 締切済み

RS232C端子に信号を出力させたい

環境は VB6 Learning Edition,WindowsXP です。 RS-232C(2,3,4,5,6,8,20) 何れかのピンに Morse信号を出力したいのですが。 例えば"R" である ・― ・ を次のタイミングで出力させるにはどうすれば良いでしょうか。 0.4秒間-ON,0.4秒間-OFF,1.2秒間-ON,0.4秒間-OFF,0.4秒間-ON

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

『Microsoft Comm Control 6.0』MSCommを使うんですが Learning Editionに付属してしたっけ? プロジェクト > コンポーネントのコントロールタブに Microsoft Comm Control 6.0 がありますか? ここにチェックをつけると 電話とその下にモデムを描いたようなアイコンがツールボックスに追加されます タイマーを準備して これに一定時間過ぎたらOFFまたはONにすると言った記述をします Dim m_bDone as boolean ' myOnTimeは 0.4秒の場合400 1.2秒なら1200 Sub MorseStart(myOnTime as Integer)   m_bDone = false   Timer1.Enabled = false   Timer1.Interval = myOnTime   MSComm1.DTREnable = True   Timer1.Enabled = true   While m_bDone = false     doEvents   End While   MSComm1.DTREnable = FALSE   ' 0.4秒間のOFF   Timer1.Interval = 400   m_bDone = false   Timer1.Enabled = true   While bDone = false     doEvents   End While   Timer1.Enabled = false End Sub Sub Timer1_Timer()   m_bDone = TRUE End Sub ' morse_startを呼ぶ方法   MSComm1.DTREnable = FALSE   MSComm1.Open   MorseStart 400 ' 0.4秒ON - 0.4秒OFF   MorseStart 1200 ' 1.2秒ON - 0.4秒OFF   MorseStart 400 ' 0.4秒ON - 0.4秒OFF   MSComm1.Close といった具合です

noname#62128
質問者

お礼

せっかくVB6でプログラムを考えて下さったのに申し訳ありませんが、VB9(2008)にはMSCommが附属しているので計画変更します。 redfox63さんのプログラムを元に2008用に変えてみたのですがうまくいきませんでした。 いったん閉じて新たに質問しますのでよろしくお願いします。 Public Class Form1 Public m_bDone As Boolean Sub MorseStart(ByVal myOnTime As Integer) m_bDone = False Timer1.Enabled = False Timer1.Interval = myOnTime MSComm1.DTREnable = True Timer1.Enabled = True Do While m_bDone = False My.Application.DoEvents() Loop MSComm1.DTREnable = False ' 0.4秒間のOFF Timer1.Enabled = False Timer1.Interval = 400 m_bDone = False Timer1.Enabled = True Do While m_bDone = False My.Application.DoEvents() Loop Timer1.Enabled = False End Sub Private Sub Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn.Click ' morse_startを呼ぶ方法 MSComm1.DTREnable = False MorseStart(400) ' 0.4秒ON - 0.4秒OFF MorseStart(1200) ' 1.2秒ON - 0.4秒OFF MorseStart(400) ' 0.4秒ON - 0.4秒OFF End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick m_bDone = True End Sub End Class

noname#62128
質問者

補足

残念です。 Learning Edition には付いていません。Professional Edition 以上になるようです。 2005を買おうと思いますが、2005を買った場合上のプログラムは動作しますでしょうか。

  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

こんにちは 面白そうなのでヘルプを調べてみました。 実際の出力は未確認です。 Pin#4:DTRを使ってみるとどうでしょうか DTREnableの説明はこうでした。 // ----- DTREnable を真 (True) に設定すると、Data Terminal Ready ラインは、ポートを開いたときに有効 (オン) に、ポートを閉じたときに無効 (オフ) に設定されます。DTREnable を偽 (False) に設定すると、Data Terminal Ready ラインは常に無効になります。 // ----- ポートのOpen/CloseでOn/Off

noname#62128
質問者

補足

すみませんが、サンプルプログラムを書いて頂けると助かります。