Visual C++ 6.0(MFC)でプログラミングを行っています.
VB 6.0でPCから値を入力し,PICへRS232Cケーブルを用いて値を送り,モータコントロールするプログラムは既に存在しており,現在はVBで書かれていた部分(インターフェイス部)をVC++に書き換えようとしています.
サンプルプログラムを参考にシリアル通信に関するVC++のプログラムは完成し,PCからモータの制御を行おうと思ったのですが,うまくいきません.
こういった際,どこに問題があるのかを検証したいのですがどうすればいいでしょうか?
現状,
1,シリアル通信ができていない
2,シリアル通信はできているが,PICへ値がうまく格納されていない
3,それ以外
問題があるのは分かるのですが,プログラマーのほうに原因がフィードバックされないため困っています.
明確な答えでなくても,アドバイスのようなものがいただけたら幸いです.
No.1
- 回答日時:
まったく動いてないのに完成したというのが不思議なんですけど、、、
デバッグのやり方って話なら、
1.原因の切り分け (インターフェース部分を観測し、どちらが間違っているか判定する)
2.原因になっているモジュールをデバッグする
しかないです。
ファンクションコールしている部分を担当してるなら、検証はハードウェアレベルでやるなり、リダイレクト出来るならリダイレクトするなりですね。
元々動いてるソフトがあるなら、それと全く同じ出力が得られていればいいわけですよね?
No.2
- 回答日時:
>プログラマーのほうに原因がフィードバックされないため困っています.
やることはNo.1氏の書いている通り、問題点の切り分けです。
可能であれば、PCとPICの間にプロトコルアナライザーを入れて通信データを確認します。
これで、「通信しているかどうか」「通信内容が正しいかどうか」は確認できます。
通信していなかったり、内容が間違っていればプログラムのほうが疑えますので、それぞれ使用しているモジュールのI/Fやデータやプロトコルの設定などが正しいか確認することになります。
No.3
- 回答日時:
No.2さんのようにプロトコル・アナライザーで解析するのが
常道であると考えます。
しかし、プロトコル・アナライザーが用意できない場合もあるでしょう。
そんな場合、
ハイパーターミナル等の端末で確認されることを
考えてみてはいかがでしょうか?
Vistaではハイパーターミナルがありませんので、
オンライン・ソフトで探されては如何でしょうか?
端末かモーターを操作できれば、VCアプリ側の問題ですし、
端末でも操作できなければ、(ケーブル等も含め)
ハード側の問題となります。
当然のことですが、
PCとPIC側でボーレート、パリティ等の設定が合致している必要があります。
念のため、確認なさってはいかがでしょうか?
No.4ベストアンサー
- 回答日時:
まず、シリアル通信が正しく動作しているかどうか確認してみましょう。
動作を確認するには次のような方法があります。
○ループバックテスト
まずはPC側のプログラムが正しく動作しているか確認します。
1.PIC側のRS-232Cケーブルを抜いて、TXDとRXDを短絡します。
2.続いてPC側のプログラムから適当なデータを送信します。
3.送信したものと同じデータを受信できれば、PC側のシリアル通信が正しく動作していると言えます。
(参考)http://whzat.dyns.net/shoko3/USB-Serial_Bridge/i …
上記URLにある「自己診断プラグ」を作っておくと便利です。
○エコーバックテスト
続いて、PIC側のプログラムがデータを正しく受信できているか確認します。
1.PIC側では、シリアル通信で受信したデータをそのまま送信するプログラムを用意し、PCとPICを通信ケーブルで接続します。
2.ループバックテストをクリアしたPC側プログラムから適当なデータを送信します。
3.送信したものと同じデータを受信できれば、PIC側で正しくデータを受信できていることが確認できます。
> 1,シリアル通信ができていない
> 2,シリアル通信はできているが,PICへ値がうまく格納されていない
> 3,それ以外
ループバックテストとエコーバックテストで、上記の1、2まで確認できますが、3については非常に高い確率でPIC側のプログラムに問題でしょう。
ところで、モータと言っているのはDCモータですか、それともRC用サーボモータ?
ありがとうございます.検証方法が全く思いつかなかったため,ループバックテスト,エコーバックテストを行い検証していこうと思います.他の皆さんもありがとうございました.
No.5
- 回答日時:
オシロでTXD端子に何かしらの波形が出る事を確認する。
TXDは出力とは限らない。モデムのTXDは入力になります。
それは電話回線に出て行く方向がTXDだからです。
そのため、ケーブルにはストレートとクロスが有ります。
それで、相手装置と電気的な入出力を確認します。
RTS,CTS信号も確認します。これらを使わない方法も有りますが、使っているときはイネーブルにしないとハード的に通信できません。
次に他のパソコンのハイパーターミナルで受信します。
文字でないデータを見るには、次の方法を使います。
ハイパーターミナルの「テキストのキャプチャ」を使えばファイルに書き込んでくれます。そのファイルをバイナリデータとしてエディタで見ます。
ハイパーターミナルで、モータを制御してみます。長い命令だったら、「テキストファイルの送信」を使います。
この方法で動かなかったら、プログラムでいくら頑張っても動きません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語について。
-
3×3のラテン方陣をつくるプログ...
-
VisualStudio2022でC言語プログ...
-
2つほどお聞きしたいことがあり...
-
UART通信の取説で,left floati...
-
10進数からN進数に変換するプロ...
-
gccを行ってもexeファイルが生...
-
MACで動く実行ファイルをWindow...
-
ストリームについて。
-
Cのコンパイルでコメントアウト...
-
Windows Formアプリからコンソ...
-
パソコン
-
今ってプログラミング言語は何...
-
どうして+3
-
プログラミング言語についてc++...
-
次の記述について
-
C#でTreeViewのCheckBoxのサイ...
-
逆コンパイルと逆アセンブルの...
-
プログラムの実行時に'<'でリダ...
-
私は
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでUSB制御プログラム作成する...
-
シリアル通信の通信・検証方法...
-
MSCommによるCOMポートの制御
-
九九の答えの計算
-
DataGridViewのサンプルコード...
-
ミキサーの情報の取得方法を教えて
-
IPアドレスの競合について
-
visual basicでの時間制御プロ...
-
RS-232C接続のための VS 2008 C...
-
外部装置を扱うプログラムについて
-
CSS Dock Menu[jQuery]について
-
PIC18F2520を用いたLCD制御につ...
-
派遣社員ですビジュアルベーシ...
-
プログラム作成ソフトは何をダ...
-
VB.NETの白黒判別プログラム教...
-
美しいソースコード
-
vba 時間の引き算 例えば 15:00...
-
Designer.vbは直接コードをいじ...
-
「読み込み違反」が起きたとき...
-
意味不明の実行時エラーで困っ...
おすすめ情報