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

VC++ 6.0のDLLでは、キー入力受け付けないのでしょうか。

購入したオシロスコープ装置に、開発者向けサンプルプログラムが付いてました。
その中に、VC++ 6.0 のコンソール版(コマンドプロンプトで実行する)プログラムも入ってました。
このプログラムは、トリガー入力(信号が入力されたら測定開始するモード)時に、入力信号がないまま動作を中断するとき、PCのキーボードの何かのキーを押すことになってます。

このプログラムを愛用の開発ソフト(ARAGOW)で制御したくて、ソースを書き換えDLLを作りました。
ちゃんと動作し測定できましたが、キー入力を受け付けないので、正規の方法で中断できません。

DLLでは、キー入力を受け付けないのでしょうか。
ほかの手段でも、中断する方法ないでしょうか。
なお、ARAGOWでは、VC++ 6.0などネイティプ(というのかどうかよく知りませんが)なDLLしか利用できません。
それから当方、C言語関係ほとんど初心者です。すみません。

上記サンプルプログラム(ps2000con.c) の処理中断部分です。
--------------------------------------------------------------------------
int collect_block_triggered (void)
{
int i;



if (kbhit ())
{
getch ();
printf ( "data collection aborted\n" );
return 1; // 中止
}
else
{
// ここから信号読み取り開始らしい //



~以下省略~




上記プログラムを書き換えて、
VC++ 6.0 のWin32 Dynamic Link Library で、PS2105AD.dllを作成しました。
コマンドラインで、
DUMPBIN /EXPORTS PS2105AD.DLL
を実行すると、次のように表示されます。
----------------------------------------------------------------------------
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file PS2105AD.DLL
File Type: DLL
Section contains the following exports for PS2105AD.dll
0 characteristics
554946BB time date stamp Wed May 06 07:39:55 2015
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00001028 PsOpen
Summary
9000 .data
1000 .idata
3000 .rdata
2000 .reloc
34000 .text

----------------------------------------------------------------------------------
私が日常使っているマイナーな開発ソフト(aragow)で、 PS2105AD.dllを起動すると、ちゃんと動作しました。

ご回答戴いても、当方理解できないかもしれませんが、よろしくお願いします。

A 回答 (1件)

検索して見つかるps2000con.cはVC++6.0用ってワケではなさそうですが。


ファイルの先頭あたりにあるコメントでは2006年に最初のモノが作られたっぽいですけど。
# あと、VC++6.0はとっくにサポート切れです。

>コマンドラインで、
>DUMPBIN /EXPORTS PS2105AD.DLL
>を実行すると、次のように表示されます。
>1 0 00001028 PsOpen
そのDLLで外部から利用できるのはPsOpenという名前の関数になると思いますが
そのあたりは間違いありませんか?

>if (kbhit ())

そのDLLがリンクされるアプリケーションに標準入出力が割り当てられていないと、たぶん動作しませんがそのあたりはちゃんとされていますか?
# Win32コンソールアプリケーションとかですね。まぁ起動した後で再割り当てするというのもありかもしれませんけど。

>購入したオシロスコープ装置に、開発者向けサンプルプログラムが付いてました。

Picoscope2204Aか、その系統…でしょうかね?
PS2105ADって名前つけているところからPicoScope2105?
# http://akizukidenshi.com/catalog/g/gM-01621/
私自身はソフト屋さんなので、電気の方のオシロスコープ使うことはないのですが……。
https://www.picotech.com/downloads
の「PS2000 Software Development Kit 10.5.2」ですかね。

「C gui」ディレクトリの下にVisual C++ Express 2010向けに作成されたサンプルが、
「Wrapper」ディレクトリの下にVisual Studio Express 2012 for Windows Desktop向けに作成されたサンプルがあるようです。


サンプルコードからDLLに用意されているAPIのコール順などを調べ、自前で必要な処理を組み込んでいく…ということになると思いますが。
# 現物ありませんしこれ以上は不明…ですかね。
# 英語が大丈夫でしたらメーカーのフォーラム利用された方がいいかもしれません。
# https://www.picotech.com/support/
    • good
    • 0
この回答へのお礼

面倒な質問にお答えくださりありがとうございます。
やはり当方の基本知識不足のようで、自分で処置するのは困難そうです。

>そのDLLがリンクされるアプリケーションに標準入出力が割り当てられていないと、たぶん動作しませんがそのあたりはちゃんとされていますか?
してません。

それが理由らしいですね。
VC++のアプリケーションならOKなんでしょうね。
アプリケーションは、aragowという誰も知らないような開発ソフトなので、説明の仕方が分かりません。

>ファイルの先頭あたりにあるコメントでは2006年に最初のモノが作られたっぽいですけど。
私が書き換えています。
win32 console applicationとしては、正常動作しています。

># あと、VC++6.0はとっくにサポート切れです。
承知しています。
visual studio 2005と2010も使用できる状態にはあります。

>PS2105ADって名前つけているところからPicoScope2105?
PicoScope2105です。

当方本件趣味とはいえ、装置製作を急いでいるので、SOHOの技術者にでも有料相談します。
ほかにも質問があるし・・・。
そんな相談できるところご存じでしたら、ご紹介ください。

でも、DLLの改造プログラムも、基本的に動作するので、申し少し試行錯誤してみます。

ありりがとうございました。

お礼日時:2015/05/07 09:24

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