
Visual C++ 6.0(MFC)でプログラミングを行っています.
VB 6.0でPCから値を入力し,PICへRS232Cケーブルを用いて値を送り,モータコントロールするプログラムは既に存在しており,現在はVBで書かれていた部分(インターフェイス部)をVC++に書き換えようとしています.
サンプルプログラムを参考にシリアル通信に関するVC++のプログラムは完成し,PCからモータの制御を行おうと思ったのですが,うまくいきません.
こういった際,どこに問題があるのかを検証したいのですがどうすればいいでしょうか?
現状,
1,シリアル通信ができていない
2,シリアル通信はできているが,PICへ値がうまく格納されていない
3,それ以外
問題があるのは分かるのですが,プログラマーのほうに原因がフィードバックされないため困っています.
明確な答えでなくても,アドバイスのようなものがいただけたら幸いです.
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信号も確認します。これらを使わない方法も有りますが、使っているときはイネーブルにしないとハード的に通信できません。
次に他のパソコンのハイパーターミナルで受信します。
文字でないデータを見るには、次の方法を使います。
ハイパーターミナルの「テキストのキャプチャ」を使えばファイルに書き込んでくれます。そのファイルをバイナリデータとしてエディタで見ます。
ハイパーターミナルで、モータを制御してみます。長い命令だったら、「テキストファイルの送信」を使います。
この方法で動かなかったら、プログラムでいくら頑張っても動きません。
No.3
- 回答日時:
No.2さんのようにプロトコル・アナライザーで解析するのが
常道であると考えます。
しかし、プロトコル・アナライザーが用意できない場合もあるでしょう。
そんな場合、
ハイパーターミナル等の端末で確認されることを
考えてみてはいかがでしょうか?
Vistaではハイパーターミナルがありませんので、
オンライン・ソフトで探されては如何でしょうか?
端末かモーターを操作できれば、VCアプリ側の問題ですし、
端末でも操作できなければ、(ケーブル等も含め)
ハード側の問題となります。
当然のことですが、
PCとPIC側でボーレート、パリティ等の設定が合致している必要があります。
念のため、確認なさってはいかがでしょうか?
No.2
- 回答日時:
>プログラマーのほうに原因がフィードバックされないため困っています.
やることはNo.1氏の書いている通り、問題点の切り分けです。
可能であれば、PCとPICの間にプロトコルアナライザーを入れて通信データを確認します。
これで、「通信しているかどうか」「通信内容が正しいかどうか」は確認できます。
通信していなかったり、内容が間違っていればプログラムのほうが疑えますので、それぞれ使用しているモジュールのI/Fやデータやプロトコルの設定などが正しいか確認することになります。
No.1
- 回答日時:
まったく動いてないのに完成したというのが不思議なんですけど、、、
デバッグのやり方って話なら、
1.原因の切り分け (インターフェース部分を観測し、どちらが間違っているか判定する)
2.原因になっているモジュールをデバッグする
しかないです。
ファンクションコールしている部分を担当してるなら、検証はハードウェアレベルでやるなり、リダイレクト出来るならリダイレクトするなりですね。
元々動いてるソフトがあるなら、それと全く同じ出力が得られていればいいわけですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) シリアル通信 2 2022/05/07 17:14
- LANケーブル・USBケーブル スマホを充電せずに通信だけさせたい 4 2022/07/02 15:24
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- C言語・C++・C# C言語 3 2022/10/04 15:07
- ドライブ・ストレージ RS232C 通信でエラー(受信が正確でない)がでます。どなたか教えてくださいませ。 11 2022/09/03 11:53
- FTTH・光回線 AU光回線の速度が出ません 2 2022/07/30 16:05
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- カスタマイズ(車) いわゆる「テレビキャンセラー」について・・・・・ 7 2022/11/01 20:57
- その他(スマートフォン・携帯電話・VR) iPhone SE を使ています、ボイスメモのPC保存方法を教えてください 2 2022/11/12 09:08
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MSCommによるCOMポートの制御
-
Visual Studio 「AnyCpu」について
-
Windows PowerShellでC言語を実...
-
「読み込み違反」が起きたとき...
-
exeファイルのアンインストール...
-
意味不明の実行時エラーで困っ...
-
Comctl32.dllの配布
-
会員登録&登録データ検索閲覧C...
-
vbaにてseleniumを使用したedge...
-
Designer.vbは直接コードをいじ...
-
VB.NETで参照設定したDLLの修正...
-
Visual Basic インストール型ア...
-
縦・横が逆転して印刷されるこ...
-
VBAでArrayListを使う為の「msc...
-
プリンターを指定して印刷するには
-
ManagementClassが見つからない。
-
VBの文字化け
-
Javaから直接プリンターへ印刷...
-
VBAでSeleniumからChromeを起動...
-
VBAでエクセルからワードへの差...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでUSB制御プログラム作成する...
-
シリアル通信の通信・検証方法...
-
MSCommによるCOMポートの制御
-
派遣社員ですビジュアルベーシ...
-
VBでHTTPの並行アクセスを行い...
-
vb.netでCreateEventの引数
-
遺伝的アルゴリズムについて教...
-
非SSLアクセスをはじく方法
-
ミキサーの情報の取得方法を教えて
-
Lotus Notesのカレンダーに外部...
-
USBシリアルケーブル仕様の通信...
-
プログラム作成ソフトは何をダ...
-
VBプログラムのコーディング...
-
Windowsのログオンユーザーを取...
-
九九の答えの計算
-
VB2005でスケジュール追加
-
vbscriptでの書き方
-
DataGridViewのサンプルコード...
-
プロパティーの属性取得
-
RS-232C接続のための VS 2008 C...
おすすめ情報