![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
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命令入力時みたいに入力支援メニュで型宣言がありません。型指定不要ですか?
以上 初歩的質問ですが、悩んでおります。
お忙しいところ申し訳ありませんが誰か教えてください。
No.1ベストアンサー
- 回答日時:
PICNIC、わたしももっていますが、もうながいこと使っていませんでした。
本題ですが、Outpは単に出力するだけのものでしょうから、
戻り値がない=Sub指定なのではないでしょうか。
したがって
Call PicOcx1.Outp( PortB, 1, High )
のようにすればよいようにおもいます。
ただ、未確認ですので、ちがっていたらごめんなさいね
techa 様
お忙しいところ、ご回答いただきありがとうございます。
あれから必死に探したら、このカテゴリーでPICNICではヒットせずoutpでヒットしたソースを見たら、Outpが使用されており、それで解決しました。例 PICOCX1.Outp PortB, 7, High
しかし、techaさん回答例でもいいみたいです。(エラーなし)
また、ひとつ勉強になりました。
でも、今度はノートPC(Win98)が故障したみたいで、コンパイル、実行させるとPCが固まってしまい結果は確認できていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:13
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- 数学 x軸上にN+1個の点P0, P1, … , PNがある。 P0は0から1の間、PiはP(i-1)と1 2 2023/04/07 16:23
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
linuxのシェルでファイル名に先...
-
離散フーリエ変換のプログラム...
-
C言語 構造体の名前欄?を小文...
-
PINVOKEで構造体配列をマーシャ...
-
C言語 ファイル内のデータと入...
-
'dataType' 引数を Null にする...
-
結城未来さんの年齢
-
エクセルVBA:日付データの変換...
-
C言語についてです! 同じ年の...
-
画像処理のチェーンコード
-
matlabのソースコードをpython...
-
C言語 2分木探索について質問です
-
printfの%eで指数部分の桁数を...
-
掲示板CGIで新着順ではなく古い...
-
C言語 平均を求めるプログラム
-
C言語でPBYTE型からDOUBLE型へ変換
-
UTF-8で5~6バイトになる文字コ...
-
DataGridViewの特定列に入力さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
pythonでDBのカラム名で取得し...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
linuxのシェルでファイル名に先...
-
C言語の構造体にてバブルソート...
-
c言語での wavファイルの編集(...
-
'dataType' 引数を Null にする...
-
H8/36064を使ったシリアル通信...
-
オセロゲーム 2次元配列で困...
-
10個の実数に対する降順ソート...
-
c言語の多次元配列で1から100ま...
-
c言語 配列から数字だけをint型...
-
matlabのソースコードをpython...
-
Cのプログラムがどうしても動き...
-
テキストファイルの結合について
おすすめ情報