• ベストアンサー

Visual Basic のプルグラムについて

Visual BasicでパソコンのRS-232-CのRTS信号をON,OFF と繰り返して、波形をオシロスコープで確認しようと しているのですが、 フォールモジュールに Private Sub Command5_Click() For i = 0 To 50000 dummy = EscapeCommFunction(hComm, CLRRTS) dummy = EscapeCommFunction(hComm, SETRTS) Next i Print "RTS終了" End Sub と記述すると波形は確認できるのですが、 フォームモジュールに Private Sub Command6_Click() dummy = RTS Print "RTS終了" End Sub 標準モジュール(又はフォールモジュール)に Function RTS() As Boolean For i = 0 To 50000 dummy = EscapeCommFunction(hCome, CLRRTS) dummy = EscapeCommFunction(hCome, SETRTS) Next i End Function と記述すると波形が確認できませんでした。 どうすればいいの分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

まず、プログラム実行ですが Ctrl + F5 (完全コンパイル後実行)でエラーは発生しません? エラーが無ければ、hCome、CLRRTS,SETRTSはグローバル変数/定数 ですか?

その他の回答 (2)

  • ackapapa
  • ベストアンサー率44% (8/18)
回答No.3

動かない理由かどうかわかりませんが Function RTS() As Boolean For i = 0 To 50000 dummy = EscapeCommFunction(hCome, CLRRTS) dummy = EscapeCommFunction(hCome, SETRTS) Next i RTS = dummy ←コレ End Function RTS関数の戻り値が指定されていませんがいいのでしょうか?

noname#22222
noname#22222
回答No.2

どうも全体に気になります。 モジュールの先頭に Option Explicit を挿入したがいいです。

関連するQ&A

  • Visual Basicのエラーについて

    「Visual Basicでエンジョイプログラミング」(CQ出版社) いう本に掲載されている「シリアルポートの機能調査」 というプログラムを書いたのですが実行したら 下に書いてあるプログラムのdummy = GetCommProperties(hComm, prop) の部分の「prop」の文字色が変わって 「コンパイルエラー ByRef 引数の型が一致しません。」 と表示されたのですがどこをどう直せばいいかよくわかりません。 何かわかる方がいましたら教えてください。 よろしくお願いします。 'フォームモジュール Form1 Private Sub Form_Load() Command1.Caption = "制御信号線の調査" End Sub Private Sub Command1_Click() 'シリアルポートをオープンする Const GENERIC_READ = &H80000000 Const GENERIC_WRITE = &H40000000 Const OPEN_EXISTING = 3 dummy = CloseHandle(43) comname = "COM1" hComm = CreateFile(comname, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0) If hComm = -1 Then MsgBox comname & "が使えません", 16 End End If Print "ハンドル番号"; hComm dummy = GetCommProperties(hComm, prop) flg = prop.dwProvCapabilities Const PCF_DTRDSR = &H1& Const PCF_RTSCTS = &H2& If flg And PCF_DTRDSR Then Print "DTR/DSRが使用できます" If flg And PCF_RTSCTS Then Print "RTS/CTSが使用できます" dummy = CloseHandle(hComm) End Sub

  • ビジュアルベーシックのお絵かき掲示板

    まったくの初心者です。初歩的な質問で申し訳ありません。 カラーのところでクリックが実行できません。 なぜなのかよくわかりません。お暇なときご教授下さい。  そしてもう一つ質問ですが以下のコードを追加したいの ですがどこに挿入すればいいのですか。 →private sub image_click() ccolor = 7 end sub ここまでのコードを追加したいです。 ーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Command1_Click() Form1.Cls End Sub Private Sub Command2_Click() End End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.DrawWidth = 3 If Button = 1 Then PSet (X, Y), QBColor(ccolor) End If End Sub Private Sub Label1_Click() cccolor = 14 End Sub Private Sub lavel2_click() cccolor = 0 End Sub Private Sub label3_click() ccolor = 9 End Sub Private Sub label4_click() ccolor = 12 End Sub Private Sub label5_click() ccolor = 10 End Sub

  • Microsoft Visual Basic 6.0でテキスト1に表示させたい。

    Dim i As Integer Private Sub Command1_Click() For i = 100 To 1 Step -1 If i Mod 3 = 2 Then Debug.Print i End If Next i End Sub のプログラムがあるのですがプログラミング結果が イミディエイトの方に表示されるのですが このプログラムの結果をtext1に表示させたいのですが どのようなプログラムにすれば良いでしょうか? 詳しい方教えてください。

  • Currency (通貨型)に関して教えてください

    Currency (通貨型)に関して教えてください。(VB5です) Private Sub Command1_Click() Dim a As Currency a = 222222 For i = 1 To a Next i End Sub 上のコードではFor文が一度も実行されずに終わってしまいます。 Private Sub Command1_Click() Dim a As Currency a = 22222 For i = 1 To a Next i End Sub これだとちゃんとiが22222まで実行されます。 一体どうしてでしょうか。 よろしくお願いします。

  • 標準モジュールとイベントの質問

    初めて質問します。 ビジュアルベーシックで標準モジュールで ボタンのクリックイベントを実行したいのですが どうやってプログラムすればいいんでしょうか? 今の会社に入っていきなりVBの仕事させられて とっても困っています。 Private Sub Frm1Command1_Click() Call Module1.Frm1Command1_Click End Sub こんな書き方じゃなくて、標準モジュール内で Public Sub Command1_Click() MsgBox "sine" End Sub って書いて実行できるようにしなくてはダメなんです。 どうすればいいんでしょうか? もしかして無理なんでしょうか? これ、上司の嫌がらせだったらイヤですね・・・。

  • Visual Basic 6.0でのLabelについて質問です。

    Visual Basic 6.0でのLabelについて質問です。 今、Labelが100個あるとして、 どのラベルが押されても同じ処理をさせたい場合、どのようにプログラムを組めばよいかわかりません・・・ そこで、 Private Sub Label2_Click() Label1.Caption = "停止" End Sub Private Sub Label3_Click() Label1.Caption = "停止" End Sub Private Sub Label4_Click() Label1.Caption = "停止" End Sub    ・    ・    ・ Private Sub Label101_Click() Label1.Caption = "停止" End Sub のように100個繰り返しても良いのですが、だらだら長くなってしまうので、スマートに 処理できる方法を探しています。 もしご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いします。

  • リストボックスの使い方

    リストボックスの使い方について、解らない事があります。 簡単な例を挙げると、 Private Sub Command1_Click() kadai = 0 For i = 1 To 10 kadai = i+1 Next i End Sub フォーム上に表示するなら printを使えば良いのでしょうけど この計算結果をリストボックスに表示したいのです。 お願いします。

  • 配列を関数に渡す方法

    VB6.0のプログラムで質問があるのですが 下のプログラムのように配列num、num1を関数AAAに 渡したいと思うのですがどうすればいいのでしょうか? よろしくお願いいたします。 Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click()    AAA(num)    AAA(num1) End Sub Private Function AAA(???)    Dim i As Integer    For i = 1 To 10       ???(i) = i    Next i End Function

  • 表示プログラムについて

    テキストの中の”あいうえお”のような文章を表示させるプログラムを作りたいんですが Private Sub Command1_Click() Open "c:\mydata\test.txt" For Input As #1 End Sub Private Sub Command2_Click() Close #1 End Sub では表示されませんでした。何がおかしいかとかどうすればいいか教えてください。お願いします。

  • マルチスレッド処理?

    例えば、次のようなコードがあるとします。 Private Sub Command1_Click() i = 0 Do While (1) a = i i = i + 1 Loop End Sub このとき、Command1をクリックしても反応しないと思います。 ここで、Command1をクリックすれば反応してa = 0にリセット できるというような割り込み処理?を行えるようにするには どうすればよいですか? ご存知の方お願いします。