驪戻 麗全 黎新

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を使用する]をチェックしていないと使用できません。

名前
mail
コメント



文責:計測制御技術ラウンジ, Powered by ©タカヒロ@みちのく掲示板 [12ch BBS 2.03]