N88からVB6.0への移行
6 匿名488 2006/03/31(金) 16:18
>ここでAdrsTblに&H42(十進数だと66?)を入れてあげれば解決できるというわけですね!
&H42(0x42) は GPIB のバスのコマンドメッセージですので、
API のレベルでは通常生のアドレス(0,1,2..31)になるかと思いますが、
考え方としては合っているのではないでしょうか。
7 N88初心者 2006/03/31(金) 17:04
お返事ありがとうございます。
なんとなく見えてきました!
RBYTE &H3F,&H20,&H42;M,L は
RBYTE [受信するための設定];[受信データの格納先]
という扱いですね
そこでN88のプログラムで似たようなWBYTEがありました。
これは
WBYTE &H3F,&H40,&H22;MV,LV,DMY
WBYTE [送信するための設定];[送信データ]
という認識でいいんですよね^^;
現在機器が複数あり、機器の指定が送信(&H22)と受信(&H42)で番号が違っていますが、
同じ機器を指しています。
>&H42(0x42) は GPIB のバスのコマンドメッセージですので、
>API のレベルでは通常生のアドレス(0,1,2..31)になるかと思いますが、
>考え方としては合っているのではないでしょうか。
ということから、APIでは対応した機器の番号を指定した、送信、受信のAPIを呼んでやればよい
ということですね^^
制御から話は外れるのですが、
N88でDIM KEY(?)
というのが見つからないのに
KEY(1) ON
や
KEY 1, ""
というものを見かけました。
N88はDIMで宣言しなくても変数を扱えるのでしょうか?
(まるでjavascriptのような。。。)
上記のKEY 1 と KEY(1) は同じものなのでしょうか・・
初歩的な質問かもしれないですがよろしくお願いいたします。
8 匿名488 2006/04/03(月) 11:55
>KEY(1) ON
これらは当時の BASIC のファンクションキー割り込み処理関連
ON KEY GOSUB ?参照
>KEY 1, ""
これはファンクションキーへの文字列の割り当てだと思います。
9 匿名488 2006/04/07(金) 12:03
お返事ありがとうございます。
KEYは予約語ということですね。
>>KEY 1, ""
>これはファンクションキーへの文字列の割り当てだと思います。
ですが、ファンクションキーへ文字列を割り当てるイメージが湧きません。
これは文字列を割り当てられるということは、文字列の取得ができるということでしょうか?
N88 BASIC で
10 VOLT=2000
20 VOLT=VOLT AND &HFFF
というコードがありました。
VBだと、
Dim VOLT as Long
VOLT = 2000
VOLT = 2000 AND &HFFF
だと思うのですが、
VOLTの値を見ると2000のままです。
この「AND &HFFF」は何か意味があるのでしょうか?
あとはVBではためしていないのですが、
10 FOR I=&HB60+324 TO &HB76+320 STEP 2
20 何らかの処理
30 NEXT
とあるのですが、
「AND」と「+」で使い分けるのはなぜなんでしょうか。
VBでは 「AND」はIF文ぐらいでしか使用したことがありません。
よろしくお願いいたします。
10 匿名488 2006/04/07(金) 17:06
>この「AND &HFFF」は何か意味があるのでしょうか?
これはビット演算です。おそらく12ビットの値なので、
上位 4 ビットを捨てるためのものでしょう。
BASIC の AND には2つあって、
これはビット演算の AND ではないでしょうか?(C 言語の &)
IF 文の AND (C 言語の &&)とは意味が違ってきます。
+は算術演算の足し算です。
11 匿名488 2006/04/07(金) 17:12
↑でも、もともと 2000 しか代入されてないのなら、
意味はないですね。12 ビットを強調するために
あえてそういう表記にしているのかもしれません。
12 ka 2006/04/11(火) 11:11
kaと申します。いまだにPC-9821(ペンティアム150MHz)を使っています。
>>これはファンクションキーへの文字列の割り当てだと思います。
>ですが、ファンクションキーへ文字列を割り当てるイメージが湧きません。
>これは文字列を割り当てられるということは、文字列の取得ができるということでしょうか?
BASICを立ち上げた状態だとあらかじめファンクションキーには
load "だとかautoだとかが割り当てられていますが、これを任意の
文字列に変更するものです。もしGP-IBでの電圧設定コマンドがVOLT 10.00
だとしたら、KEY 1,"VOLT "を実行しておくとF1キーを押せば
VOLT の文字が入るようになるので、コマンドを入力する際のキーを
へらすことができます。
KEY(x) ONはファンクションキーによる割り込み処理の許可です。
ファンクションキーxを押すと、ON KEY GOSUB文で定義した行番号
(またはラベル)のサブルーチンが実行されます。
13 匿名488 2006/04/11(火) 12:56
匿名488さん、kaさんありがとうございます。
ビット演算をしているのですね。
1111| 1110|
AND 0001|AND 0001|
0001| 0000|
調べて見ましたが、かなり便利そうですね!
ちなみにVOLTの値の2000は数字を変えています。。
>BASICを立ち上げた状態だとあらかじめファンクションキーには
>load "だとかautoだとかが割り当てられていますが、これを任意の
>文字列に変更するものです。
BASICの画面を実際みたことがなく、イメージが湧きませんでした。
これは、最初からフォームにファンクションキー分だけボタンが置かれているような
イメージでよいのですよね(ボタンではなくラベル?
2番目より
>セミコロン以降4、5 は各数値変数に1バイトずつのバイナリデータ受信
>ではないでしょうか。
1バイトということは2文字(00-FF)ということでいいんですよね?
N88のソースのなかに
890 83848!
などというコードがありました。
ちなみに83848行などは存在しません。
これは何を表しているんでしょうか?
意味のないものだといいのですが。。
14 DDDDD 2007/04/07(土) 16:11
インターネットでここを見つけて、初めて書込みます。
現在、N88をVBに焼き直しています。
そこで、教えて頂きたいのですが。
PC98のN88で以下のコードがありました。
PRINT @8;"OC0,CR.LF":WBYTE 8+0,8; '発生器(PWS-307C)共通出力OFF
発生器(PWS-307C)のコマンド表では「OC0」が共通出力OFFになっていて
CR.LFはデリミタは分かりました。
では、その後ろの「WBYTE 8+0,8;」は何でしょうか?
上記の掲示板の内容ですと送信するための設定とのことですが、具体的には
どう言う設定になるのでしょうか?
また、VBではCONTEC製のGPIBボードを使って、付属の関数で送信
しています。
その場合、送るのは「OC0」のみでOKなのでしょうか?
(デリミタはGPIBの初期化関数で「CR.LF」を指定済み)
よろしくお願い致します。
15 匿名488 2007/04/25(水) 22:56
WBYTE の;より前はマルチラインメッセージ
(GPIBのATNをアサートして送るバスコマンドです)
以下、BASIC98 (N88 互換 BASIC マニュアルから引用)
------ 引用ここから -------
WBYTE ステートメント
【形式】 WBYTE 〔<コマンド>〔 ,<コマンド>・・・〕〕;〔<データ>〔 ,<データ>・・・〕〕〔
@〕
【機能】 マルチラインメッセージの送出、およびバイナリデータの送出を行ないます。
【解説】 <コマンド>で指定したマルチラインメッセージ(&H00〜&HFF)および<データ>で指定したバイナリデータ(&H00〜&HFF)を送出します。この範囲を越える<データ>または<コマンド>を指定すると、"命令の呼び出し方の誤り(Illegal function call
)"というエラーになります。
また、オプションの@を指定すると、最後の送出データバイトを送出した後、EOI(End Or Identify)をtrueにします。
バイナリデータの送出手順は次のとおりです。
■マスタモードの場合
(1) ATN(Attention)をtrueにします。
(2) <コマンド>を順次送出します。
(3) ATNをfalseにします。
(4) <データ>を順次送出します。
(5) オプションの@を指定した場合は、EOIをtrueにします。
■スレーブモードの場合
(1) MTA(My Talk Address)を受信するまで待ちます。
(2) ATNがfalseになるまで待ちます。
(3) <データ>を順次送出します。
(4) オプションの@を指定した場合は、EOIをtrueにします。
スレーブモードでは、<コマンド>を指定することはできません。
【文例】 WBYTE &H5F,&H6F;&H35,&H36
【関連命令】 RBYTE
●注意 この命令は、セットアップユーティリティーの[ライブラリ]で、[GP-IBを使用する]をチェックしていないと使用できません。