こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PICNICのVB制御プログラム

お世話になります。
VBでPICNICボード(トライステート社製http://www.tristate.ne.jp/)の制御ソフトを作っているのですがコンパイルエラーがでて、プログラムの実行ができません。(VB初心者です)
(1)接点入力、アナログデータは取り込みできます。
(2)パラレルポートのピン方向制御はできます。
(3)パラレルポートのピン方向状態は読み込みできます。
(4)接点出力(I/O pinのLow,High)制御、液晶制御、RS232送信制御ができません。

問題ありソース
Dim retvalue As Variant
Dim n, m As Integer
Dim nameb As String
Dim rez As Integer
Dim status(0 To 3) As Boolean
Dim current As Integer
Dim data(100000) As Integer
Dim datab(100000) As Boolean

Private Sub Command1_Click()
data(current) = PICOCX1.ADinp(PortA, 4)
Label1.Caption = "温度:" & Format(data(current) / 10.23 * 5, "#0.0℃")
retvalue = PICOCX1.Dirp(PortB, 4, pinOutput)

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Timer1_Timer()

Call check

End Sub
Private Sub check()

n = 0
m = 0
nameb = "tanaka"

data(current) = PICOCX1.ADinp(PortA, 0)
Label2.Caption = "温度:" & Format(data(current) / 102.3 * 5, "#0.0℃")

data(current) = PICOCX1.ADinp(PortA, 1)
Label3.Caption = "湿度1:" & Format(data(current) / 10.23 * 5, "#0.0%")

data(current) = PICOCX1.ADinp(PortA, 2)
Label4.Caption = "湿度2:" & Format(data(current) / 10.23 * 5, "#0.0%")

data(current) = PICOCX1.ADinp(PortA, 3)
Label5.Caption = "空き:" & Format(data(current) / 10.23 * 5, "#0.0")

data(current) = PICOCX1.ADinp(PortA, 5)
Label6.Caption = "温度:" & Format(data(current) / 10.23 * 5, "#0.0℃")

'ポートRA5の値 基板側のミス?
data(current) = PICOCX1.ADinp(PortA, 4)
Label1.Caption = "温度:" & Format(data(current) / 10.23 * 5, "#0.0℃")

' 文法テスト
datab(10000) = PICOCX1.ADinp(PortA, 4)


'接点入力状態

status(0) = PICOCX1.Inp(PortB, 0)
If status(0) = True Then
Label7(0).Caption = "扉閉状態"
Else
Label7(0).Caption = "扉開状態"
End If

status(1) = PICOCX1.Inp(PortB, 1)
If status(1) = True Then
Label7(1).Caption = "扉施錠状態"
Else
Label7(1).Caption = "扉解除状態"
End If

status(2) = PICOCX1.Inp(PortB, 2)
If status(2) = True Then
Label7(2).Caption = "  "
Else
Label7(2).Caption = "人検知"
End If

status(3) = PICOCX1.Inp(PortB, 3)
If status(3) = True Then
Label7(3).Caption = "High"
Else
Label7(3).Caption = "Low"
End If

'パラレルポート入出力状態
retvalue = PICOCX1.GetDirp(PortB, 4)

'パラレルポート入出力方向制御
'retvalue = PICOCX1.Dirp(PortB, 4, pinInput)
' retvalue = PICOCX1.Dirp(PortB, 4, pinOutput)


'接点出力制御
'data(current) = PICOCX1.Outp(PortB, 4, High)
'void = PICOCX1.Outp(PortB, 4, High)
'retvalue = PICOCX1.Outp(PortB, 4, 0)


retvalue = PICOCX1.Outp(PortB, 4, High)


'液晶の制御
' retvalue = PICOCX1.LcdClear これはサポートされていなとのメッセージ
'retvalue = PICOCX1.ClearLcd '型の不一致エラー
' retvalue = PICOCX1.PutLcd(n, m, nameb)
'retvalue = PICOCX1.SetPos(n, m)
'retvalue = PICOCX1.PutLcd(n, m, nameb)

'シリアルI/F制御
'retvalue = PICOCX1.Transmit(nameb)
retvalue = PICOCX1.Receive '文法エラーでなく誰かがすでに使用しているとのメッセージ


End Sub

エラー内容及び疑問
(1) 接点出力制御
retvalue = PICOCX1.Outp(PortB, 4, High)
  コンパイルエラー
型が一致しません。
とのエラーがでます。基本的文法ミスですか?
retvalue を全種10種に型に変更しても変わりません。
(2) retvalue = PICOCX1.Outp(PortB, ・・とエディターで入力時、ADinp命令入力時みたいに入力支援メニュで型宣言がありません。型指定不要ですか?

以上 初歩的質問ですが、悩んでおります。
お忙しいところ申し訳ありませんが誰か教えてください。

投稿日時 - 2007-12-19 11:36:40

QNo.3610734

すぐに回答ほしいです

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

PICNIC、わたしももっていますが、もうながいこと使っていませんでした。
本題ですが、Outpは単に出力するだけのものでしょうから、
戻り値がない=Sub指定なのではないでしょうか。
したがって
Call PicOcx1.Outp( PortB, 1, High )
のようにすればよいようにおもいます。
ただ、未確認ですので、ちがっていたらごめんなさいね

投稿日時 - 2007-12-20 10:11:36

お礼

techa 様
お忙しいところ、ご回答いただきありがとうございます。
あれから必死に探したら、このカテゴリーでPICNICではヒットせずoutpでヒットしたソースを見たら、Outpが使用されており、それで解決しました。例 PICOCX1.Outp PortB, 7, High
しかし、techaさん回答例でもいいみたいです。(エラーなし)
また、ひとつ勉強になりました。
でも、今度はノートPC(Win98)が故障したみたいで、コンパイル、実行させるとPCが固まってしまい結果は確認できていません。

投稿日時 - 2007-12-20 12:30:52

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問