vbaでシリアルポートのデータを読みたいんですが、シリアルポートに関しては初心者ですので書籍を購入したいと思います。
良い書籍がありましたら教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

VBAですか?VBなら私が使っている本がお薦めです。



私はRS-232Cでのデータのやり取りをVBで作っています。
シリアル通信は今では通信速度が遅いなどの問題で、プログラミングの
主流からは離れているので、本を探すといっても大変なのが実情です。
その少ない本の中から何とか見つけたのが、この本です。

技術評論社「自動計測システムのためのVB6入門」金藤 仁著
ISBN4-7741-0940-1 \3,200(税別)

この本にはRS-232C、GP-IBのサンプルPGMがいくつか載っており、
CD-ROMもついています。

雑誌ならトラ技あたりのバックナンバーをあさればあるかもしれませんが、
本として出ているもので、私が見つけたのはこれだけでした。
お役にたてば幸いです。

あと、文化オリエント社のPDQ Commを使うと、RS-232Cによるシリアルポートの
PGMはもっと簡単になります。このマニュアルにもサンプルPGMがあり、
解説も役立ちます。ただ値段が張るので、お金と相談した上でということかも。
    • good
    • 0
この回答へのお礼

ご解答ありがとう御座います。
この手の書籍は本当に少ないんですね。
どうもありがとう御座いました。

お礼日時:2001/10/11 15:28

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法はありますか?

VBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法を探しています。

【例】aaa.csvというファイルに5行分のデータが入っている。
   これを3行目まで読んだ後で、また1行目から読みたい。
【処理対象ファイル】
 ファイル名:aaa.csv
 ファイルの中身:5行
 1,1,1,1
 2,2,2,2
 3,3,3,3
 4,4,4,4
 5,5,5,5

【読み込み順イメージ】
 1,1,1,1
 2,2,2,2
 3,3,3,3
 1,1,1,1 ←aaa.csvの1行目から読み直し。
 2,2,2,2
 3,3,3,3
 4,4,4,4
 5,5,5,5

現在は処理が思いつかなかったので、読みたいファイルを一度閉じてまた開いてという下記のような無駄な動作にしてしまっています。

for xxx=0 to zzz
open #ファイル番号
Do Until EOF(1)
Line Input #1, 変数
   1度目に3行目が来たら抜ける
Loop
close #ファイル番号
next xxx

しかし、使用するファイルは数十MB~数百MB、Open/Closeも数千は軽く行うので、さすがにこれでは処理が遅すぎてどうにもならなくて困っています。

どなたか良いお知恵をお貸しください。

VBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法を探しています。

【例】aaa.csvというファイルに5行分のデータが入っている。
   これを3行目まで読んだ後で、また1行目から読みたい。
【処理対象ファイル】
 ファイル名:aaa.csv
 ファイルの中身:5行
 1,1,1,1
 2,2,2,2
 3,3,3,3
 4,4,4,4
 5,5,5,5

【読み込み順イメージ】
 1,1,1,1
 2,2,2,2
 3,3,3,3
 1,1,1,1 ←aaa.csvの1行目から読み直し。
 2,2,2,2
 3,3,3,3
 4,4,4,4
 5,...続きを読む

Aベストアンサー

もしかしたら、ただ単に読み取りの位置を先頭に戻したいだけですか?
それでしたら「Seek #1, 1」で出来ると思います。

Qエクセル VBA でのCOMポート認識

エクセルのVBAを使用してあるアプリを作成しています。そのアプリはシリアルポートを使用してある機器と接続する事で実現できます。
そこで質問ですが、当該PCが認識しているCOMポートをVBAのSELECT BOXに表示したいのですがどうやれば(どのような関数?)を使用して実装COMポートを認識するのでしょうか?
もちろん、USB<--->シリアルケーブルを使用した場合もCOMポートだと認識しなければなりません。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

Windowsのプログラム(VBA含む)から、COMポートを扱う場合は、WindowsAPI を使用すれば可能
だと思います。

COMポートの実装チェックには、WindowsAPI の「CreateFile」関数でCOMポートのオープンを実行
して、その関数の戻り値がエラーかどうかを見れば判断できると思います。
ただし、COMポートが実装されていてもエラーになるケース(既に使用中、使用不可に設定されて
いるなど)がありますので、その場合はエラーコードを取得してその値で「実装/非実装」を判断しな
いといけないと思います。

以下に、VBA から WindowsAPI (COMポート制御関連を含む)を利用するに当たって、参考になり
そうなサイトを上げてみました。宜しければ覗いてみて下さい。

■参考サイト
注)リンク切れの際は御容赦下さい。

1)VBAでWindowsAPIを使用してシリアル通信を行う方法

◎WindowsAPI講座
http://www.serpress.co.jp/winapi/
・このページよりリンクされている下記項目「シリアル通信(1)~(4)」のページでVBAから通信関連の
 APIを使用する方法が書かれています。
 NO.12 シリアル通信(1) ←必要なWindowAPI定義の説明
 NO.13 シリアル通信(2) ←シリアルポートのオープンとクローズを説明
 NO.14 シリアル通信(3) ←シリアルポートの通信プロトコル、送受信バッファ、タイムアウトの設定
 NO.15 シリアル通信(4) ←シリアルポートの送受信方法を説明
・今回の場合は、
   シリアルポートのオープン → 存在有無チェック → シリアルポートのクローズ
 までを行えば良いようなので、シリアル通信(1)~(2) までを参照すれば良いと思います。

2)CreateFile関数でCOM10以上のCOMポートを使用する際の注意点

◎CreateFile関数(Win32API)でCOM10以上を使う場合の注意点
http://www.aofactory.net/log/eid328.html
・ここで、API関数「CreateFile」で指定するCOMポート名(COM1、COM2など)に「COM10」以上を使用
 する場合の問題点および対策が書かれています。
・指定するCOMポートのデバイス名の頭に "\\.\" を付ければ良いようです。
   VBAでの指定例: "COM10" の場合は、 "\\.\COM10" とする。

3)WindowsAPI利用でCOMポートの存在有無をチェックする方法

◎COMポートが存在するかどうかを調べるには? - OKWaveの過去ログより
http://okwave.jp/qa4033242.html
・ここで、API関数「CreateFile」が失敗した際に、同じくAPI関数「GetLastError」でエラーコードを見て
 COMポートの存在有無を調べる旨が書かれています。
注)ただし、VBAでは「GetLastError」を呼んでもエラーコードが得られない可能性があるので、下記4)
 の方法を採った方が良いようです。

4)VBA から Windows API を利用する方法など

◎Office VBA と Windows API - Microsoft MSDN より
http://msdn.microsoft.com/ja-jp/library/cc326057.aspx
・このページの「エラー情報の取得」の説明で、VBAからWindowsAPIを呼出した際のエラーコードの取得
 方法が書かれています。
・VBAからWindowsAPIのDLLを呼び出した際のエラー情報は、「GetLastError関数」では取得できない
 可能性があるので、VBAの場合は「Errオブジェクト」の「LastDLLErrorプロパティ」でエラーコードを取得
 すれば良いようです。
・今回の場合は、COMポートオープン時のエラーコード取得に、この方法が利用できると思います。

こんにちは。

Windowsのプログラム(VBA含む)から、COMポートを扱う場合は、WindowsAPI を使用すれば可能
だと思います。

COMポートの実装チェックには、WindowsAPI の「CreateFile」関数でCOMポートのオープンを実行
して、その関数の戻り値がエラーかどうかを見れば判断できると思います。
ただし、COMポートが実装されていてもエラーになるケース(既に使用中、使用不可に設定されて
いるなど)がありますので、その場合はエラーコードを取得してその値で「実装/非実装」を判断しな
いといけないと...続きを読む

QH83052 シリアル通信 A/D変換データ送信 について

毎回の質問失礼します。
現在H83052マイコンを使用して、センサで得た電圧値を1ms間隔でA/D変換させるプログラムを作成しています。
マイコンのA/D変換機能と、ITUタイマ機能を用いて測定を行うまでのプログラムの作成は何とか完了しました。
ここで、測定終了後データをどのようにして表示したらいいのかというところでとまっています。
データはA/D変換データ(data[]←int型)、A/D変換時の時間データ(time[]←long型)が、測定プログラム実行時に200個ずつ配列に保存されています。
これをそのままシリアル通信機能を用いてPC側に表示させるようにしたいのです。シリアル通信のH8側からPCへの送信の場合TDRにデータを書き込みそれをTxDより送信すると思うのですが、実際にTDRのアドレスは1バイトですので、データとしては入りません。1バイトごと分けて送信するという方法になってくるのではないかと考えていますが・・・
また、送信する時のコードとしては、数字データもアスキーコードとして送信されてしまうことになるのでしょうか?
どなたか、わかることやアドバイスがあれば、回答よろしくお願いします。

毎回の質問失礼します。
現在H83052マイコンを使用して、センサで得た電圧値を1ms間隔でA/D変換させるプログラムを作成しています。
マイコンのA/D変換機能と、ITUタイマ機能を用いて測定を行うまでのプログラムの作成は何とか完了しました。
ここで、測定終了後データをどのようにして表示したらいいのかというところでとまっています。
データはA/D変換データ(data[]←int型)、A/D変換時の時間データ(time[]←long型)が、測定プログラム実行時に200個ずつ配列に保存されています。
これをそのままシリアル...続きを読む

Aベストアンサー

3052搭載のシリアル通信モジュール(SCI)はTDRにセットされた8bitデータを
トコロテンを押し出すかのようにMSBから順に1bitつづ通信経路(TxD)に電位として出力します。

SCIはTDRにセットされた8bitデータが「数値」なのか「キャラクターコード」なのか一切判別しません。
ただのバイナリデータとして取り扱います。(このことが知りたかったのではないかな?)

PCで簡易にモニタしたいのであれば、ファームウェアにて取得した数値のデータをキャラクターコードに変換し
SCIを用いて出力すればRS232Cケーブルを接続するだけで可能です。
公開されたのは随分昔ですがAcknowrichというフリーウェアが組み込みの動作確認にはお勧めです。

モニタデバッグ環境でシリアルを利用しているのであれば、USB-シリアル変換機等でPC側の
シリアル入力を増やしてあげる必要があるかもしれません。

あとはシリアル通信に関するプルトコルを把握するのが近道です。
■参考サイト
http://www.softech.co.jp/mm_050907_firm.htm
(サンプルの説明はH8Sですが、内容もレジスタ構成も3052と同じ)
「UART」というキーワードで検索しても仕組みを理解するヒントが見つかるでしょう。

シリアル通信のプロトコルそのものにはACK等の応答確認がありませんから、
「ひたすらデータを垂れ流ししてるだけ」とイメージしちゃうと理解が速いかも

3052搭載のシリアル通信モジュール(SCI)はTDRにセットされた8bitデータを
トコロテンを押し出すかのようにMSBから順に1bitつづ通信経路(TxD)に電位として出力します。

SCIはTDRにセットされた8bitデータが「数値」なのか「キャラクターコード」なのか一切判別しません。
ただのバイナリデータとして取り扱います。(このことが知りたかったのではないかな?)

PCで簡易にモニタしたいのであれば、ファームウェアにて取得した数値のデータをキャラクターコードに変換し
SCIを用いて出力すればRS232Cケーブ...続きを読む

QXcodeプログラミング大全という書籍を参考にして、勉強をしているので

Xcodeプログラミング大全という書籍を参考にして、勉強をしているのですが、
この書籍の中の「ImageKitを使ったイメージブラウザの作成」というところを応用して、
一つのウィンドウ内に複数のイメージブラウザを設置して、各画像に対して回転・反転処理を
行うということをやりたいのですが、複数のイメージブラウザを設置したのはいいのですが、
画像をドラッグ&ドロップで配置した対象イメージブラウザ(名前など)を取得する方法が、わからなくて
書き込みさせていただきました。

マウスでドラッグした際に、対象のイメージブラウザが選択状態になるので、取得可能と
思っているのですが、可能なのでしょうか?

また、可能な場合はどのようにすれば取得できるのでしょうか?

どなたか、お分かりになる方ご教授をお願いします。

Aベストアンサー

たしかに、ドラッグ&ドロップでは、「imageBrowserSelectionDidChange:」のDelegateは発生しませんね。

なにか方法はあるんでしょうが、むしろそれより、ドラッグ&ドロップを受け入れているViewを知る必要のないプログラムを書く方が、全体に簡潔で、合理的になるんじゃないでしょうか?

Qゲームプログラミング初心者におすすめの書籍は?

長年の夢である、ゲームプログラミングにチャレンジしてみたいと思っています。
ジャンルは特に決めていませんが、割と本格的なシューティングなど作れたら良いなあ、と。
で、色々調べてみたところ、DirectXで作るのが良さそうで、また、やってみたいと思いました。
DirectXによるゲーム作成の書籍をいくつか調べてみましたが、いまいちどれが良いのかわかりません。
ゲームプログラミング初心者におすすめの書籍などありましたら紹介してください。
また、経験者の方に、このように勉強した、というような事を教えていただけたらと思います。

今のところ、あるWebページを参考に勉強していこうかと思っていますが。。。
ちなみに、仕事で10年ほど業務プログラムを作ってきましたので、C++やJavaの経験はあります。

Aベストアンサー

「あるWebページを参考に」とおっしゃっているのでご存じかもしれませんが。
HSPはいかがですか?
株式会社ラトルズより、
「12歳からはじめる、HSP3.0ゲームプログラミング教室」が発売されています。

参考URL:http://www.onionsoft.net/hsp/


人気Q&Aランキング

おすすめ情報