
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
VC++2010 TCPIP通信の受信処理...
-
WinsockAPIのrecvfromの受信デ...
-
シリアル通信の出力バッファと...
-
winsockでソケット通信の開発を...
-
シリアル通信エラー
-
WriteFile()でのデータ送信がで...
-
SocketのSend関数でのCLOSEの検...
-
ソケット通信内 read関数について
-
ソケット通信の送受信遅延
-
socket: recvはいつ,どれだけ...
-
ClearCommError呼び出し時のCE_...
-
RS232C通信(PC⇔PLC)
-
winsockの動作について。
-
Macターミナルで実行中のプログ...
-
メモリが不足しています(VBA)
-
C言語で、メモリを解放しないで...
-
VC++2010 GDIオブジェクトの解...
-
VBSで応答不要のメッセージボッ...
-
VBSの処理中一旦処理を止めて再...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
「スイッチングハブのバッファ...
-
WriteFile()でのデータ送信がで...
-
socket: recvはいつ,どれだけ...
-
winsockでソケット通信の開発を...
-
RS-232Cでバイナリデータを受信...
-
SerialPortのDataReceivedイベ...
-
シリアル通信エラー
-
C#で通信処理。応答がない場合...
-
Linuxでのシリアル通信について...
-
シリアル通信の出力バッファと...
-
バイナリデータ受信時のデータ順
-
ReadFileについて
-
トラックバック機能を作りたい
-
ソケット通信内 read関数について
-
recv関数の受信結果について
-
ReadFile(GPSとの通信)Win7で...
-
visual c# 2010 シリアル通信ア...
-
WinsockAPIのrecvfromの受信デ...
-
popen実行時にバッファが空の場合
おすすめ情報