VisualStudioでのシリアル通信について

このQ&Aのポイント
  • VisualStudioでのシリアル通信について質問があります
  • 現在VisualStudio2008を使用して作品を制作中の短大2年生です
  • 遠隔地点の温度測定装置を作成しており、無線装置(Xbee)で測定したデータをパソコンで受信してVisualStudioで製作した受信画面に表示させることが目標ですが、うまく動作しません
回答を見る
  • ベストアンサー

VisualStudioでのシリアル通信について

現在VisualStudio2008を使用して作品を制作中の短大2年生なのですが、分からないところがあるため質問させていただきます。 状況といたしましては、遠隔地点の温度測定装置を作成しており、無線装置(Xbee)で測定したデータをパソコンで受信してVisualStudioで製作した受信画面に表示させる事を目標にしているのですが、受信画面をうまく動作させることができません。 デバッグ自体は通っているので、「VisualStudioで書き込むプログラムが足りていないのかな」と考えています。 ハイパーターミナルには日本語ではないのですが、文字化けしたような文字が受信されているので送信側からPCが受信する間までには問題は無いと思います。 プログラミングの方は http://msdn.microsoft.com/ja-jp/library/cc720852.aspx 上のサイトを参考に行いました。 上のサイトのように受信側からデータを送ることは考えておらず、接続するポート名と受信データだけが表示できるものを作成したいと考えています。 私自身VisualStudioの使用経験が皆無で、今回が質問初投稿なので分かりずらい文章や説明があるかも知れませんが、皆さんの知識をお貸しください。よろしくお願いします。

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

  • ベストアンサー
  • FoolWord
  • ベストアンサー率73% (14/19)
回答No.2

XBeeとPCの間はシリアル通信で接続されていると思いますが、XBeeとPCのシリアル通信パラメータは整合とれているのでしょうか? ハイパーターミナルで受信データが文字化けしているのもシリアル通信パラメータが間違っているせいなのかもしれまんせんね。 シリアル通信のプログラミングで参考になりそうさURLも記述しておきます。 http://kana-soft.com/tech/sample_0008.htm

Qp-Mayonnaise
質問者

お礼

回答ありがとうございます。紹介されたページを参考に受信を確認できました。もっとプログラムについて勉強していきます。ありがとうございました。

その他の回答 (1)

回答No.1

>デバッグ自体は通っているので 受信できないのならデバッグできていないか通ったつもりになっているだけですね。 >ハイパーターミナルには日本語ではないのですが、文字化けしたような文字が受信されているので送信側からPCが受信する間までには問題は無いと思います。 文字化けしていてどうして問題ないのですか? >受信画面をうまく動作させることができません。 どのような結果を期待していて、現状でどのようになっているのかを記述するべきです。 プログラミングの基礎からやり直すことをお薦めします。

関連するQ&A

  • シリアル通信について

    VB6にてシリアル通信プログラムを作成しましたが、データが受信できません。 ハイパーターミナルなら受信できて、一度ハイパーターミナルを使用すると、作成したプログラムでもデータが受信できるようになります。(再起動するとまたハイパーターミナルを使用するまで受信できません) 自作プログラムでなにか処理がたりないのでしょうか?

  • VBでXbeeの受信データを表示させたい

    私は現在Xbeeを使用して温度と電流を測定しようと考えているのですが、 分からない部分が出たため、質問をさせていただきます。 Xbeeを使用して、離れた位置で測定したデータを受信することはできたのですが 計算を行う段階でどのように計算すればいいのか分かりません。 送られてくるデータが 16進数で温度・電流それぞれ2桁の文字が2つで一つの状態で送られてきています。 例) 2D AD 02 A2 ----- ----- 電流  温度 VBで表示画面を作成し、16進数の状態では表示させることができているのですが、 測定データをどのように16進数に変換して送られてきているのかが分からないため 関数を作れなくて困っています。 分かりにくい説明だと思いますが、回答よろしくお願いします。

  • シリアルポートから送られてくる文字の指定方法

    現在VB2010で作成中のアプリと測定器のデーターをシリアル通信で記録採取したと考えています。 測定機からの通信が下記の通りにPCに送られてきますが、必要な部分の採取す方法が分かりませんので教えてください。 ハイパーターミナルでの測定器からの文字受信は12文字送られてきます。 VBで作成中のアプリでは5文字目から9文字目のみをテキストに表示したいと思いますが、分かる方教えてください。現在制作中のソースも一部表示しますので、よろしくお願いします。今年から勉強してる、初心者です。 Delegate Sub AddDataDelegate(ByVal str As String) Private Sub AddData(ByVal str As String) '受信データー表示' If SerialPort1.IsOpen = False Then 'シリアルポートをオープンしていないときは、処理しない Return End If '受信データー読み込み Dim data As String data = SerialPort1.ReadExisting()    上記のソースが受信するようにしていますが、受信データーは1s毎に更新されておりますその都度テキストへ表示するようにしたいと思います。データーが更新されても、数値は残るようにしたいと思います。

  • PIC-PCシリアル通信プログラム

    PICとPCでRS232のシリアル通信を行おうとしているんですけれど、 PICからPCに文字列を送ろうと たとえば PIC側からプログラムで puts("A\0");とデータを送信して ReadFile()関数でPC側で受信しているんですけれど、 受信したデータを画面表示されると Aフフフフフフフフフフフフフフフフフフフフフフフフと表示されてしまいます。 ちなみに送信データをNULLだけにしても フフフフフフフフフフフフフフフフフフフフフフフフフを表示されます。 これを解決する方法がわかりません。 どなたか教えてください。

  • シリアル通信におけるプログラム終了が遅い件

    今、Visual Basic6.0でシリアル通信を行うプログラムを作成しています。完成後に実行させると思い通りに端末からのデータを表示してくれるのですが、[切断]といったポートを閉じる操作をしたときにプログラムが終了するまでに30秒から40秒ほどかかってしまいます。ソースを書き直して再度実行するなど、終了するたびに毎回同じくらいの時間がかかります。Windowsのハイパーターミナルでもデータの受信・表示ができる上、[切断]ですぐに終了するのですが、自作のプログラムではそうはいきません。解決方法をよろしくお願いいたします。

  • PCとPLC+制御装置(2台)の通信

    PCと制御装置(2台)をRS422で通信を行っているシステムがあります。 2台の制御装置は同じものでUSB-4ポートハブを介してPCに接続されており、 制御装置から測定結果のデータが送られてきて自作のアプリケーションソフトの画面に測定結果が表示されています。 今回、このシステムにPLCからのデータ(測定データのロットNO.)を 同じ画面上に表示させたいと考えています。 自作ソフト側でPLCからのデータを受け取れて画面に表示できるように 修正したソフトができたときには手元に実際に使用するPLCがなく、正確に通信できているか確認するにはどのようにすれば確認できるのでしょうか? 通信に関わることをこれまで経験したことがないので、わからないことばかりですがご教授お願いいたします。

  • シリアル通信のデータ欠けについて

    シリアル通信のデータ欠けについて教えてください。 WindowsXP上でシリアル通信「115200bps、8、None(ODD、EVEN)、1」の設定で、1ms毎に12バイトの送受信を行っているのですが、1分ほど受信すると、データ欠けが発生します。 受信プログラムはこの問題が発覚してから、受信したデータを変数にバッファリングし、保存ボタンを押してから、ログファイルへ保存するシンプルなプログラムを作成し、確認しています。 「切り分けた内容」 1、57600bpsでも発生する 2、VB6、VisualStudio2008 C#で作成したツール及びフリーソフト(SerialDebugger)でも、データ欠けが発生する 3、RS232Cラインモニタ(キャロちゃん)で確認すると、データ欠けは発生していないので、受信側の問題と判断しています。 4、送信間隔を50msと遅くしても発生する 5、RS232C及び、USB変換したものどちらでも発生する 6、9600bpsでは、発生しない(同じデータ数での判断) 7、ケーブル長は1mほど ちなみに通信時間に余裕が無い為、チェックサムやハンドシェイクなどの機能は、入れられません。 一般的にWindowsでシリアルの高速受信を行うと、データ欠けが発生するのが当たり前なのでしょうか?

  • VisualStudio.NETの実行ファイルはどれ?

    今VisualSdudio.NETでプログラムを書いています。 実行ファイルはDebugフォルダの.exeファイルだと思ったのでダブルクリックしたのですが何もおきません・・・。 プログラムを実行するときはプログラムはひとつ上のフォルダの"DxLib.h"をインクルードしていてcppファイルもこのフォルダにあります。 VisuialSdudio.NETの「デバッグ」→「開始」を選択すると 処理画面が表示され、きちんと実行されます。 コンパイルはVisualStudio.NETで行って、実行はVisualStudio.NETを使わずにやりたいのです。 ファイルアイコンダブルクリックから起動するにはどうしたらいいのでしょうか? どなたかお詳しいかた教えてください><

  • Socket通信プログラム

    VisualC++6.0(SDK)を用いてSocket通信(UDP)プログラムを 作成(チャットやメッセンジャーのようなもの)しています。 送信用と受信用 1つのプログラムにて、送受信両方の機能を兼ね備えたものを作成しようと思っています。 で、送信側から送ったデータを受信側で処理(文字列の追加など)をして 受信側から送信側に送り戻したいとおもいます。 送信ボタンにより送信します。受信したデータはエディットボックスに表示します。 が、受信したデータを送り返すとしているために、 いつまでも、受信->送信->受信・・・・を繰り返してしまいます。 これを、正しく動作するようにするには、どのようにしたら良いのでしょうか? ご存知の方宜しくお願い致します。 足りないものがあったら、補足させていただきます。

  • VisualStudio2010のC++の通信

    VisualStudio2010のC++のシリアルポートによる通信で質問なんですが、 CreateFile で正しい値などを入力したにもかかわらず接続できないと出てきます。 具体的に言うと、H8 3697にシリアル通信で接続したいんですが上手くいきませんでした。 ハイパーターミナルでH8 3697に接続は出来て、受信、送信が出来たので VisualStudio2010のC++のプログラミングが悪いと思います 以下がそのソースコードになっています。 接続ボタンが押されたときのイベント(処理)使用言語 C++ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ DCB dcbPortConfig; memset(&dcbPortConfig, 0, sizeof(DCB)); dcbPortConfig.DCBlength = (DWORD)sizeof(DCB); dcbPortConfig.BaudRate = 19200; dcbPortConfig.ByteSize = 8; dcbPortConfig.Parity = 0; dcbPortConfig.StopBits = 0; m_hComPort = CreateFile("COM11", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(m_hComPort != INVALID_HANDLE_VALUE) { //AfxMessageBox(_T("CMyComm::Open CreateFile失敗")); } // ポートのボーレート、パリティ等を設定 BOOL bRet = SetCommState(m_hComPort, &dcbPortConfig); if(bRet != FALSE) { AfxMessageBox(_T("CMyComm::Open() SetCommState失敗")); } ではよろしくお願いします。 ちなみにH8 3697のほうのソースでは最初初期処理してそれから無限ループでなんかの文字列を10秒ごとに送信している処理になっています。