![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Visial Basic 2005 にて SerialPort コンポーネントを使ったアプリを作っています。
当初、Microsoft のサンプルを参考に
SerialPort1.ReadLine
でデータを受信していたのですが、この方法だとバッファ内から再度同じデータを受信してしまうらしく、新しいバッファからデータを受信しないとイベントが発生する毎に古いデータを読み取ってしまいます。
そこで調べていたところ、Microsoft のフォーラムで以下のような Visual C# のソースを見つけました。
(以下引用)
> if (serialPort1.BytesToRead > 0)
> {
> // 受信バッファからデータを取得
> byte[] b = new byte[serialPort1.BytesToRead];
> Read(b, 0, b.Length);
> }
まだ Visial Basic 初心者なもので Byte 型の扱い方や上記ソースは Visial Basic でどのように書けばよいのかわかりません。
どなたかご教授ください。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは、もう解決しているかもしれませんが。
ReadLineのヘルプには、
入力バッファ内の NewLine 値まで読み取ります
と記載してあります。Framework2.0からの機能なんですね。
私の場合、データ受信後その内容により返事を返すまでの間
次のデータを受信することは無い場合が多いので
DataReceivedイベントでSerialPort.Readを利用しています。
ReadLineは使用したことが無いのでわかりませんが
Readの場合、読み込んだデータがバッファに残っているということはありません。
この回答への補足
アドバイスありがとうございます。
今のところまだ未解決なのですが、私も miyuyu さんと同じようにデータ受信の内容に応じて返事をするというものを作っています。
問題となっている現象は、二度目のデータ受信時の DataReceived イベント発生の際に一度目に送った返事を即送り出してしまうという感じです。
Write の方のバッファもあやしい気がするのですが、差し支えなければ Read の使い方を教えていただけますと幸いです。
よろしくお願いします。
SerialPort.ReadLine を使っても、SerialPort.DiscardInBuffer でバッファを削除したら問題なく動作しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(Microsoft Office) *Office 2021への乗り換えについて 2 2022/09/02 18:06
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
- その他(クラウドサービス・オンラインストレージ) 社外の方とデータをやり取りするには、どんな方法が良いでしょうか? 3 2023/03/28 16:21
- docomo(ドコモ) +メッセージの送受信。 au(uq mobile)のデータ回線でdocomoの電話番号の+メッセージ 2 2022/09/14 16:09
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
VB.netで、シリアル通信のタイムアウト処理について
Visual Basic(VBA)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
SerialPort処理でInvokeメソッドを使用するとエラーが発生。
Visual Basic(VBA)
-
5
BCD形式で時刻を!
C言語・C++・C#
-
6
シリアル通信でコマンドを送信し、戻ってきたら実行する
Visual Basic(VBA)
-
7
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
8
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
9
COMポートの同時オープン同時読み込み
C言語・C++・C#
-
10
NetworkStreamからのRead()で、処理が止まる(C#)
C言語・C++・C#
-
11
CRC16計算について
C言語・C++・C#
-
12
VBコンソールアプリ(.NET Framework)でRS-232C通信したい。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
Linuxでのシリアル通信について...
-
Connection reset by peer
-
winsockでソケット通信の開発を...
-
ソケット通信内 read関数について
-
「スイッチングハブのバッファ...
-
POSTデータが送信されなくなり...
-
シリアル通信 大きいサイズの...
-
MFCでソケット通信がしたいので...
-
winsockの動作について。
-
VB2005でWin32APIを用いてRS-23...
-
RS-232Cでバイナリデータを受信...
-
ネットワークカメラの動画保存...
-
再現性の無いバグ
-
rs232cでの受信データ(mscomm)...
-
popen実行時にバッファが空の場合
-
WriteFile()でのデータ送信がで...
-
MSCommでoutputできない
-
socket: recvはいつ,どれだけ...
-
シリアル通信の出力バッファと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
socket: recvはいつ,どれだけ...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
UDP処理のエラーについて
-
RS232C通信(PC⇔PLC)
-
シリアル通信の出力バッファと...
-
シリアルポート通信
-
SocketのSend関数でのCLOSEの検...
-
「スイッチングハブのバッファ...
-
シリアル通信 大きいサイズの...
-
Connection reset by peer
-
WinsockAPIのrecvfromの受信デ...
-
C#で通信処理。応答がない場合...
-
rs232cでの受信データ(mscomm)...
-
ソケット通信内 read関数について
-
Linuxでのシリアル通信について...
-
バイナリデータ受信時のデータ順
-
RS-232Cでバイナリデータを受信...
-
recv関数の受信結果について
おすすめ情報