シリアル通信でのデータ取りこぼしについて

このQ&Aのポイント
  • シリアル通信でのデータ取りこぼしの原因と対策について教えてください。
  • シリアル通信で測定値を取得する際に取りこぼしが発生しています。取りこぼしをなくす方法を教えてください。
  • 測定機器のシリアル通信でデータ取りこぼしが発生しています。どのようにして取りこぼしを解消できますか?
回答を見る
  • ベストアンサー

シリアル通信でのデータ取りこぼし

はじめまして。 現在、計測機器からシリアル通信で測定値を取得しています。 その測定機器は1秒間当たり、1000データ測定できるのですが、 プログラムで収集した際、取りこぼしが多く発生します。 取りこぼしがないよう収集するには どうすれば、いいのか、教えていただけないでしょうか? よろしくお願いします。 動作の流れは  (1)測定ボタンを押す  (2)1秒間測定する (1000データ) → 保存 ◆教えてほしい箇所  (3)1秒後自動的に終了する 環境  OS:Windows XP  プログラム:VB.NET 2008  通信:RS232C  測定データ1個当たり:X.XXXX (6桁)

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

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.1

まず、測定器側の問題なのか、それとも通信の問題なのかで対処が違いますね。 測定器側の問題であれば、装置とそのシリアル送信手前の問題なので、製造元に確認するなどの処置が必要になります。 通信の場合、通信速度(ボーレート)の設定やVBのRS-232Cオブジェクトの受信バッファサイズなどを確認してみてください。 6桁1000データということは、1桁1バイトとすれば合計6000バイトになりますので、通信速度が9600bpsの場合、測定は1秒でもデータ転送には5秒掛かります。

hiro300
質問者

お礼

ありがとうございます。 測定機器の問題はないと思います。 ですので、通信の問題だと思います。 通信速度の設定や受信バッファサイズを見直してみます。 ありがとうございます。

関連するQ&A

  • シリアル通信 VB 受信したデータ

    初めまして。 今現在,RS-232Cのシリアル通信で,重量計で測定したデータ(990kg)をCOM1に取り込めるようにするプログラムを作成中です。 出力データのフォーマットは以下のようになっています。 ST   , GS   , +0012345  kg  CRLR  ヘッダ1  ヘッダ2   データ  単位  ターミネータ 18バイトのデータを受信していることになります。 ここで質問なのですが,プログラムでは1バイトずつイベントを発生させて1バイトずつ受信させているのですが,1バイト×18回 のデータをどのようにつなぎ合わせれば18バイトのデータとして扱えるようになるのですか? うまく説明できていないかも知れませんが,お分かりの方がいらっしゃいましたら宜しく御願いします。 VBではOnCommを使用しています。

  • 古い計測器とPC・EXCEL-VBAでRS-232通信をしてデータロガーをつくれますか。

    マニュアル等はないのですが、ANALOGIC社製のマルチメータDP100という古い測定器をもっています。シリアル通信ができるようで、RS-232コネクタがついています。この測定器と古いPCを用いてデータロガーを作成したいのですが、RS-232通信の基礎もわからないため何から始めればいいのか、また、そもそも、マニュアルもないのにこういうことが出来るのか(通信には測定器専用のコマンド等があるのではないですか?)ということも分かりません。以下のことについて教えていただきたく思います。 1.RS-232通信というのは機器ごとに専用のコマンド等があり、それがわからないと通信できないものなのか、それとも機器が異なっても共通の手順でデータのやりとりが可能なのか。 2.EXCELのVBAで通信のプログラムは可能でしょうか。 3.何か参考になるHP等。

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

    シリアル通信のデータ欠けについて教えてください。 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でシリアルの高速受信を行うと、データ欠けが発生するのが当たり前なのでしょうか?

  • シリアル通信ができません

    VBの5.0を使っています RS232Cケーブルで計測器の制御・情報取得を目指していますが上手くいきません このサイト(http://spectrum123.at.infoseek.co.jp/vb/vb_5/vb_5.htm) を参考にしています 現状では実行すると制御機器が「Remote Mode」を表示するので何らかの信号が出ていることは間違いないのですが 計測器の説明書にしたがってコマンドを送信してもリアクションがありません どうか、よろしくお願いします

  • VBでのシリアル通信

    VB6 Professional Virsionを使用しています。 RS232Cでシリアル通信をしたいのですが、どうすればいいのでしょうか。ヒントを教えてください。

  • TeraTerm シリアル通信の垂れ流しデータ取得

    ターミナルソフト「TeraTerm」の「マクロ」を使用して、RS-232C 経由でシリアルポートに接続された端末機器(測定器)と通信するソフトウェアを開発中です。 「マクロプログラム」の中から「あるテキストデータ」を送信(sendln)すると、端末機器からは時々刻々の測定値データを1行ごとに連続して垂れ流しで返してくれる。 この垂れ流れてくるデータを取り込んで、ある種の判断処理プログラムを制作したいのだが、この手の言語に不慣れなこともあって、相談させてください。 一般的な場合、コマンド「recvln」を発行するとシステム変数「inputstr」に受診データが格納されるのだけど、今回のような垂れ流されるデータのの場合も同じようなことをするのだろうか? コンソールに時々刻々と垂れ流しデータが表示されているのだから、何か重複してしまう操作のように思えてならない。 もっとスマートな処理方法があるように思えてならない。 なるべくリアルタイムに近い処理をさせたいので、無駄な処理は省きたい。 ご教授やアドバイスをいただければ助かります。

  • シリアル通信について

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

  • シリアル通信の通信・検証方法とは?

    Visual C++ 6.0(MFC)でプログラミングを行っています. VB 6.0でPCから値を入力し,PICへRS232Cケーブルを用いて値を送り,モータコントロールするプログラムは既に存在しており,現在はVBで書かれていた部分(インターフェイス部)をVC++に書き換えようとしています. サンプルプログラムを参考にシリアル通信に関するVC++のプログラムは完成し,PCからモータの制御を行おうと思ったのですが,うまくいきません. こういった際,どこに問題があるのかを検証したいのですがどうすればいいでしょうか? 現状, 1,シリアル通信ができていない 2,シリアル通信はできているが,PICへ値がうまく格納されていない 3,それ以外 問題があるのは分かるのですが,プログラマーのほうに原因がフィードバックされないため困っています. 明確な答えでなくても,アドバイスのようなものがいただけたら幸いです.

  • VB6.0 RS-232C通信プログラム

    はじめまして。 以下に示したような通信プログラムを作成しなくてはならないのですが,VC6.0は若干かじった事がある程度で,VB6.Oは初心者のためどのように作成してよいのか分からない状況です(何から始めてよいのかわからない・・)。宜しければ,参考書やサイトなど知っておられる方がいらっしゃいましたら,御願いします。 (構成) (1) 重量計で測定したデータ(測定する毎に)をRS-232CでPC(XP)ポートに送り,データを収集するできるプログラム (2) 収集したデータをtxtで保存し,他のPCに送れるようにする(送信ボタンを作成して,ボタンを押すことで)

  • VB6でのシリアル通信について質問です。

    VB6でのシリアル通信について質問です。 現在、VB6で開発したラベル印刷のシステムを引き受けたのですが、以下のような状況に陥り困っております。 ・プリンタからPCへの接続はシリアル通信のみ。 ・現在使用しようとしているPCにはシリアル通信のポートがなく、USB接続のみしかできない。 ・RS232CからUSBへの変換コネクタを使ってPCとプリンタを接続しようとしているが、印刷実行時に実行時エラー 8015が発生する。 ・VBからプリンタへの通信はMSCommを使用している。 ・プログラム自体は客先にソースのみが残っていたもので、仕様書等はまったくない。 ネットで調べたところ、MicrosoftのサイトではUSBポートからMSCommを使って通信をする事はできないというような事が記載されておりました。 ただ、他のサイトを色々と調べたところ、普通に通信できるとの意見も記載されておりました。 実際のところ、VB6でRS232C-USB変換コネクタを使用してプリンタへのシリアル通信は可能なのでしょうか。 可能な場合、今回発生したエラーの原因になりそうなものとはなんなのでしょうか。 また、通信が不可能な場合、代替策としてどのような方法を取るのが一番ベストなのでしょうか。 どなたか何卒ご教授よろしくお願い致します。

専門家に質問してみよう