dポイントプレゼントキャンペーン実施中!

VB6.0
WindowsXP

掲題の件ですが、初心者なので分かりやすく教えていただければ幸いです。
現在、MSCOMMを用いてシリアル通信はできるようになりました。

これからPCIボードを使って、通信を試みようとしているのですが、
これは指定したアドレスに書き込むと送信してくれるようです。

VBを用いてメモリのアドレスを指定して書き込む方法はAPIを使うらしいというのまでは
分かったのですが、具体的にどのようなコードを記述すればいいのか分かりません。

型宣言時にアドレスを指定してメモリを確保できるのでしょうか。
よろしくお願いいたします。

A 回答 (3件)

アドレスを指定して宣言することはできません。



そもそもアドレス空間やプロセスを管理するのはOSの仕事ですので
とてもではないですが、通常の処理系では無理でしょう。

といってもcopymemoryやmovmemoryなどのメモリ転送命令を駆使すれば
何とかなるような感じもしますが、ダメなのでしょうか。

この回答への補足

ありがとうございます。

copymemoryやmovememoryを使えばできそうならば、やってみたいと思います。

後は、変数のデータをVC++などに渡して、VC++上で読み書きできるようにする方法もありなのかなと思ったのですが、VC++は記述した経験が少ないので、
どちらが早くできるかと考えております。

補足日時:2006/09/06 16:17
    • good
    • 0

>このAがどのアドレスに書かれるかを指定したいのですが



変数のアドレスを知りたいのなら、Varptr関数を使って下さい。

私もかつてヘルプで探したのですが、
その関数が掲載されていないのには驚きました。未サポートだそうです。

1985年当時のマイクロソフトのBasic では既に存在したので
私は経験上その関数の所在を知っていたのですが、
知らないと探し出すのは困難でしょうね。

http://www5.ocn.ne.jp/~minute/article/vb/e11.html

>VBではアドレスを指定してメモリに書き込んだり読んだりできる関数

#なんかまだ違うような気がするなあ

この回答への補足

ありがとうございます。

VarPtrは探したら分かりました。

これですと、使われているアドレスは分かりますが、
自分でアドレス指定することができないのですが、
アドレスを指定して変数を宣言することはできないのでしょうか?

補足日時:2006/09/06 15:27
    • good
    • 0

イマイチ状況がよく分からないのですが、


VB6とのことなので、動的にメモリを確保する方法はredimを使います。

dim a() as byte
・・・
redim a(100)

などとします。このときアドレスというかAPIに渡すときはa(0)と
いうように指定します。これはAPIを使うときの作法のようなものです。

通信系のプログラムだと受信データを固定できないので
動的に確保するという意味だと思いますが、なんか違っているような?

いちおう補足要求ということにしておきます。

この回答への補足

説明不足ですみません。

パソコン内部に詳しくないので間違っているかも知れませんが、

PCIカードを認識させると、メモリ範囲が確保されます。その中で指定した番地にデータを確保できるようにしたいのですが。
型宣言で、
Dim A As Integer
とした場合に、このAがどのアドレスに書かれるかを指定したいのですが。

DRAM?の指定したアドレスの中に、送信データ、受信データの領域を確保したいのですが。

補足日時:2006/09/06 11:46
    • good
    • 0
この回答へのお礼

http://forums.belution.com/ja/vb/000/007/59.shtml

たぶん上記のURLの掲示板に投稿されている方と同じような質問になります。

VBではアドレスを指定してメモリに書き込んだり読んだりできる関数などはないのでしょうか?

お礼日時:2006/09/06 15:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!