お世話になります。
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命令入力時みたいに入力支援メニュで型宣言がありません。型指定不要ですか?
以上 初歩的質問ですが、悩んでおります。
お忙しいところ申し訳ありませんが誰か教えてください。
お礼
techa 様 お忙しいところ、ご回答いただきありがとうございます。 あれから必死に探したら、このカテゴリーでPICNICではヒットせずoutpでヒットしたソースを見たら、Outpが使用されており、それで解決しました。例 PICOCX1.Outp PortB, 7, High しかし、techaさん回答例でもいいみたいです。(エラーなし) また、ひとつ勉強になりました。 でも、今度はノートPC(Win98)が故障したみたいで、コンパイル、実行させるとPCが固まってしまい結果は確認できていません。