• ベストアンサー

APIをうまく使いこなすために。

LOOPを駆使し通信データを処理してますが、タイムアウトのために500msec程度の "SLEEP"を使ってます。 APIは山ほどあるのに、ほかに使っていないのです。 試せばもっと具合よいプログラムになると思うのです。 使いこなすために、良いテキストや方法、Web教えていただけませんか?

  • 9766
  • お礼率52% (601/1143)

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

Win32 APIの使い方「基礎編」 http://www.galliver.co.jp/book/apibas/index.html この1冊を読めばAPIの世界が開けます。 サンプルは大抵、インターネットで拾えるので 如何に検索するかが重要となります。 よく使うサイトは次の4つです。 http://search.microsoft.com/default.asp?siteid=japan http://www.google.co.jp/ http://www.vbvbvb.com/jp/gtips/index.html http://www.treasuredale.com/vbrc/index.php3 >あと同時にVBのメーリングリストに入っておくと、見てるだ >けで勉強になります。 同感です。2つ紹介しておきます。 http://www.vbvbvb.com/jp/magazine/index.html http://www.int21.co.jp/pcdn/

9766
質問者

お礼

4つのサイトはわたしにもわかりそうです。 vbvbvbよさそうです。 どうもありがとうございます。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

APIビューワは使用していますよね。確かにあれじゃパラメータが何なのか、関数の戻り値の意味なんて全くわからないですもんね。 まず第一に必要なのはAPIの関数本でしょう。特に指定はありません。大体は機能別に書いてあるので、「WIN32API」の文字が入っていれば間違いありません。親切な本はVBとCでのパラメータの渡し方を、両方とも書いてあるのが会ったような気がします。しかしAPIをMSDNで検索する要領がわかれば、真っ先に必要がなくなります。 次にテクニック集の本が欲しくなってくると思います。でもこれもまた特に買う必要はないと思います。結構サンプルがネットに転がってるんですよね。 あと同時にVBのメーリングリストに入っておくと、見てるだけで勉強になります。 参考URLはたくさんあるので、ここに書き込みます。 有限会社ガリバーのHP:VBに関してのいい本をたくさん出してる会社です。 http://www.galliver.co.jp/ vbvbvb.com:有限会社ガリバー出版のVBTips1000+に載っている本の内容以上のサンプルがたくさん存在します。(僕は本を買いました。) http://www.vbvbvb.com/jp/index.html み~くんパパの仕事場:[VB サンプル クラス]のページには、普通の人がやらないようなサンプルを配布しています。 http://www.mitene.or.jp/~sugisita/family/papa/vb/ Web On SFDATA:上級者向けです。メーリングリストを読んでると、高等な技ばかりに目をむきます。検索くん壱号によりメーリングリストの過去の履歴を検索することができ、ほとんどのAPIを網羅してます。ぼくもこのメーリングリストは熟読してます。(ぼくはここでVBによるAPIの使用方法を覚えました。) 検索するにも登録が必要です。(無料/フリーメルアド不可)ちなみに、過去の履歴に存在する質問と、全く同じ質問をすると、冷たくあしらわれちゃいます。。。 http://www.sfdata.ne.jp/windev/search.html ご存知かとは思いますが、Cのポインタの考えを理解した上でやらないと、理解に苦しむ部分が多いと思います。

9766
質問者

お礼

細かなことまでどうもありがとうございました。 早速サービスの登録をしようと思います。

関連するQ&A

  • Win32APIでシリアル通信をするには?

    Win32APIとVB.NETを使ってシリアル通信をするプログラミングを考えています。概要はGPS端末からのデータをVBで受信して表示できるようなプログラムを目指していますが、APIの使い方が分からないので詳しく教えていただける方がいましたら、サンプルソースまたは参考Webサイトの教示をお願いします。 VB6.0のクラス(MSComm)を追加する方法ではなく、APIを使う方向で回答お願いします。

  • VB2005でWin32APIを用いてRS-232CのRTS信号を、デ

    VB2005でWin32APIを用いてRS-232CのRTS信号を、データ送信中だけHIGHにさせるプログラムを作成中です。 色々調べて、Win32APIを使うことで、それらしい動作をさせるプログラムを作れることが分かり、色々調べてコーディングしたのですが、上手く動きません…。処理の流れは以下のようになっています。 (1) CreateFile()関数でCOMを開く。   (CreateFile()の「フラグ」には"FILE_FLAG_OVERLAPPED"を指定) (2) CreateEvent()関数にてイベントオブジェクトを作成。 (3) EscapeCommFunction()でRTS信号をHIGHに設定。 (4) WriteFile()関数でRS-232Cへデータを送信する。 ※ここまでは、オシロスコープにて正しく動作していることを確認しています。 (5) データ送信完了を待つために、SetCommEvent()関数で"EV_TXEMPTY"イベントマスクをセット。 (6) WaitCommEvent()で送信完了を待つ。   ⇒WaitCommEvent()関数が、データ送信完了を待たずに抜けてきてしまう(Falseがリターンされる)…。 (7) そこで、WaitForSingleObject()を使ってイベントハンドラが"シグナル状態"になるのを待つ。   ⇒タイムアウトに"INFINITE"を指定すると、無限待ち状態に陥ってしまう。   ⇒また、タイムアウトに"1000"を指定すると、約1秒後に"WAIT_TIMEOUT"が返ってきてしまう。 WriteFile()関数、そしてWaitCommEvent()関数の引数には、OVERLAPPED構造体へのポインタを渡しているのですが、思うように動いてくれません。 ※Win32APIの関数宣言の記述方法(データ型など)が誤って、このようになっていたりするのでしょうか… どなたかヒントでもお教えいただけると、大変助かります。 以上、よろしくお願いいたします。

  • 1秒未満間隔のファイル更新について

    皆様 下記のようなプログラム(Perl)で、1秒未満のファイル更新を試みております。sleep(1)として、待ち時間を1秒とすると、data.txtに時刻が更新されますが、sleep(0.8)、sleep(0.5)等として待ち時間を1秒未満にすると、プログラムは動作するのですが、data.txtはファイルとして作成されません。 これは、printf()関数のバッファリング、及びフラッシュに関する仕様に起因するものと思われますが、1秒未満の間隔でdata.txtを更新して時刻をdata.txtに書き込む処理は可能でしょうか? #強制フラッシュの"$| = 1;"を使い、sleep(0.8)としても駄目でした。 すみませんが、よろしくお願いします。 (コード) #use Time::HiRes; #$| = 1; while(){ ($sec, $min, $hour, $day, $mon, $year) = localtime(time); open(OUT, "> data.txt"); printf(OUT "%2s:%2s:%2s\n", $hour, $min, $sec); close(OUT); sleep(1); }

  • Perlの多重起動を禁止したい

    main_01.plというプログラムがあります。 これは10分毎にバッチファイルから起動の命令が下ります。ただしプログラムの処理によっては10分以上かかることがあります。 この時、main_01.pl がすでに起動していた場合、main_01.pl はすぐに exit; になるように組みたいのです。僕が考えた方法は、あるテキストファイルにロックをかけ、そのファイルがロック中であるならばプログラムは処理を行わずすぐに終了する、といった感じです。 =============================== # タイムアウト処理 my $timeout = 5; # 排他処理 my $lockfile="lock.txt"; # 多重起動停止 (ここに $lockfile が書き込めなかったらmain_01.plは別に起動していることになるので起動しない。) # 排他処理開始 open(LOCK,"$lockfile"); flock(LOCK,2); # 処理開始 eval { # タイムアウト local $SIG{ALRM} = sub { die "alarm\n" }; alarm( $timeout ); # プログラムスタート print "\n◆スタート\n\n"; sleep(4); # プログラム終了 print "\n◆終わりました。\n\n"; }; # タイムアウト処理 if ( $@ ) { # タイムアウト print "\nタイムアウトしました。TIMEOUT= $timeout \n"; } else { # タイムアウトせずに正常終了 print "\n正常終了しました。\n"; } # 排他処理終了 close(LOCK); exit;

    • ベストアンサー
    • Perl
  • Twitter APIが利用できない!?

    Twitter APIを利用してWebアプリケーションを作成しようとしています。手始めにローカル開発環境でタイムラインを取得したのですが、レンタルサーバに移すと取得できません。 <?php require_once( 'twitteroauth.php' ); (OAuth認証でアクセストークン等を取得する処理は省略) $TwitterOAuth = new TwitterOAuth('コンシューマキー', 'コンシューマシークレット', 'アクセストークン', 'アクセスシークレット'); // タイムラインを取得 $timeLine = $TwitterOAuth->get('statuses/home_timeline'); (以下、表示処理は省略) ?> PHPを使ってこのように書きました。(今回はライブラリとして、TwitterOAuthを使わせていただきました。) ローカル開発環境でこのプログラムを動かすと、正常に動作しました。 しかし、これをレンタルサーバに移すと、動かなくなります・・・ 以下、状況をまとめました。 ・色々試してみるとレンタルサーバ上においても、OAuth認証はうまくいっている模様。  アクセストークン等は取得できていた。 ・タイムラインの取得処理だけが失敗して、NULLが入ってしまっている。   → Twitter APIへのアクセスができない? ・しかし、$TwitterOAuth->post('statuses/update', array('status' =>'テストツイート'));は  うまくいく。   → 試してみると、GETメソッドのものだけが失敗する模様 ・ライブラリを他の物にして、同じ機能を実装しても同様のことが起こります。  ライブラリ無しで書いてみても同じでした。ローカルではうまくいくのに・・・ ・利用しているレンタルサーバは、さくらインターネットのレンタルサーバ。  もう1つは個人の方が運営しているレンタルサーバ。  どちらもライブラリの動作環境は満たしている。 php.iniの問題でしょうか。 それともTwitter APIの利用できないサーバがあるのでしょうか。 初心者なりに色々考えてみましたがわかりませんでした。 どうしたらよいでしょうか。

    • ベストアンサー
    • PHP
  • googleカレンダーapiでタイムアウト

    2年程前からgoogleカレンダーと連携した社内アプリを作成して運用しています。 googleカレンダーからデータ取得処理を1日平均して200回程度行っているのですが今年の2月以降タイムアウトエラーが1日当たり1~3回程度発生する様になりました。 再度取得処理を行えば問題無く取得出来る様です。 特にgoogleカレンダー側で障害が発生しているとも思えないのですが、何が考えられますでしょうか プログラム側でタイムアウト時に数回のリトライ処理を実装する等の対策を行うくらいしか 無いのでしょうか? 以下環境です CentOS 7.4.1708 Apache 2.4.6 PHP 5.6.37 google-api-php-client-2.2.2 以下エラー発生時のログの一部となります。 [29-Feb-2020 15:18:39 Asia/Tokyo] 作成したPHPのID.PHP:Google_IO_Exception Object ( [retryMap:Google_IO_Exception:private] => Array ( [6] => -1 [7] => -1 [28] => -1 [35] => -1 [52] => -1 ) [message:protected] => Operation timed out after 100001 milliseconds with 0 out of -1 bytes received [string:Exception:private] => [code:protected] => 28 [file:protected] => /var/data/google-api-php-client/src/Google/IO/Curl.php [line:protected] => 126 [trace:Exception:private] => Array ( [0] => Array ( [file] => /var/data/google-api-php-client/src/Google/IO/Abstract.php [line] => 136 [function] => executeRequest [class] => Google_IO_Curl [type] => -> [args] => Array ( [0] => Google_Http_Request Object ( [batchHeaders:Google_Http_Request:private] => Array ( [Content-Type] => application/http [Content-Transfer-Encoding] => binary [MIME-Version] => 1.0 ) [queryParams:protected] => Array ( [maxResults] => 5000 [orderBy] => startTime [singleEvents] => true [timeMin] => 2020-02-22T00:00:00+09:00 [timeMax] => 2020-09-03T00:00:00+09:00 ) [requestMethod:protected] => GET [requestHeaders:protected] => Array

  • TRONのラウンドロビンについて

    SH704x-10MHzでiTRONのお勉強を始めました。 従来のシングルスレッドだった時、 タッチパネルに加工処理したデータを表示させるのに約0.5秒ほどかかっていた処理が 今回Taskとして組み込むと約4.5秒かかるようになってしまいました。 (この時アイドルTaskと上位優先順位Task有り。但し上位優先順位Taskはデータ表示処理を起床させ自らはスリープ) 更にタッチパネルの状態をチェックするTaskも同じ優先順位で組み込むと67秒もかかるようになってしまいました。 サンプルプログラムはCMT0の1msec割込み毎にirot_rdqを実行していたのですが、10msec経過してからirot_rdqを実行する方法に変更したところ5.6秒に劇的に短縮されました。 が、本来の速さにはまだまだ程遠い状況です。 irot_rdqは100msecにもしてみましたが10msecの時より若干速くなっただけでした。 CMT0処理(irot_rdq含むとき)はトレースを追ってみると約0.2msecかかっているのですが CMT0内の処理が多すぎるのでしょうか? それともirot_rdqは「こういうもの」なのでしょうか。 ネットでは同件のような情報が見つからず。 書籍を購入するにも知りたい事が書かれているのか調べられず。 サンプルプログラムは簡単すぎて参考にならず。 どなたかご存知の方いらっしゃいましたら是非 ご指導お願いいたします。

  • APIの概念について質問です。

    最初に断っておきますが、僕はプログラミング初心者なので、分かりやすく且つ本質的にご教示いただけましたら幸いです。身近な具体例とか交えてくださると幸いです。 APIの定義について以下のように書かれていました。 「OS(基本ソフト)やアプリケーションソフト、あるいはウェブアプリケーションが、 自ら持つ機能の一部を外部のアプリケーション(ソフトやウェブサービス)から簡単に利用できるようにするインターフェース。 ここで言うインターフェースとは、機能の呼び出し手順や記述方法などを定めた仕様を指す。」   質問1:上記に、「ここで言うインターフェースとは、機能の呼び出し手順や記述方法などを定めた仕様を指す。」と書いてありますが、これは具体的にどういうことですか?呼び出し手順とはなんですか? 質問2:質問1に関連して、インターフェースについて調べていたところ、定義として以下のようなことが書いてありました。 「ソフトウェアインターフェースは、プログラム間でデータをやり取りする手順や形式を定めたもの。特に、OSやコンポーネント(部品化されたソフトウェア)の機能を外部から呼び出して利用するための規約をAPIという。」 以下の定義の文の「プログラム間でデータをやり取りする手順や形式を定めたもの。特に、OSやコンポーネント(部品化されたソフトウェア)の機能を外部から呼び出して利用するための規約をAPIという。」という記述についても全体的によくわかりません。 どういうことでしょうか?

    • ベストアンサー
    • Java
  • VC++ Windows7,異環境によるエラー

    VC++でプログラムをしているEXEを起動した際に シリアル通信のReadFile関数やスレッド処理などのAPI関数を用いた処理で WindowsOSのエディションやPC性能、.Net FrameWorkのバージョンが異なる事で 不具合が発生する事は考えられますか?

  • 人の流れプロジェクト web API について

    人の動きを調査するパーソントリップ調査というものがありますが これが公開されています。 (http://pflow.csis.u-tokyo.ac.jp/index-j.html) このデータを、web API で抽出することができるとあり WebAPIの利用サンプルと、Javaのサンプルコードが載っているのですが どのように回したらよいか分かりません。 プログラムは多少触ったことがあるので 自分で勉強していくつもりなのですが 何をどこから手を付けてよいのか分からないため ・どのようにプログラムを回すのか? ・何から勉強を行えばよいか? の2点について、教えていただけないでしょうか。 分からないことだらけで大変申し訳ないのですが お教えいただけたら非常に幸いです。 よろしくお願いします。

専門家に質問してみよう