C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: VB シリアル通信・タイマーがうまく動かない


(過去ログ 132 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■78117 / inTopicNo.1)  VB シリアル通信・タイマーがうまく動かない
  
□投稿者/ Emi (1回)-(2015/12/15(Tue) 20:22:27)

分類:[.NET 全般] 

windows7
VB初心者です。
Visual Studio2015で、シリアル通信のアプリを作っています。
2秒毎に値を訪ねるコマンドを発生させて取得し、テキストファイルにデータを保存しようとしていますが、
うまくいきません。
Timer と Thread と両方やってみましたがどちらも1回とれたりとれなかったり、無反応になってしまいます。

1回ずつの応答では取得できるのは確かめています。

下記コード(抜粋)なのですが途中でメッセージボックスを表示させてOKとしてやると取得→ファイル書き込みができたりします。

どうしたらよいか、教えていただければ嬉しいです。
よろしくお願いします。

’ボタンをクリックするとTimer_tickが2秒毎に動くようになります。
 Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Timer1.Enabled = True
        Timer1.Start()
      End Sub

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  Dim command As Byte() = {&H02, "01", &H43・・・}
        SerialPort1.Write(command, 0, command.Length)
End sub

で、
 Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim rData As String

        rData = SerialPort1.ReadExisting()
        'MessageBox.Show(rData)
 
        Dim Desktopname As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory)
          
         Dim filePath As String = Desktopname & "/data/data.csv"

          Dim appendText As String = nows + "," + rdata + Environment.NewLine
  
        File.AppendAllText(filePath, appendText, System.Text.Encoding.GetEncoding("shift_jis"))
End sub


引用返信 編集キー/
■78119 / inTopicNo.2)  Re[1]: VB シリアル通信・タイマーがうまく動かない
□投稿者/ Emi (2回)-(2015/12/15(Tue) 23:42:34)
読み取りデータが不安定だったためとわかりました。
一文字ずつ読み取るようにしたところうまくいきました。
ありがとうございました。

No78117 (Emi さん) に返信
> windows7
> VB初心者です。
> Visual Studio2015で、シリアル通信のアプリを作っています。
> 2秒毎に値を訪ねるコマンドを発生させて取得し、テキストファイルにデータを保存しようとしていますが、
> うまくいきません。
> Timer と Thread と両方やってみましたがどちらも1回とれたりとれなかったり、無反応になってしまいます。
>
> 1回ずつの応答では取得できるのは確かめています。
>
> 下記コード(抜粋)なのですが途中でメッセージボックスを表示させてOKとしてやると取得→ファイル書き込みができたりします。
>
> どうしたらよいか、教えていただければ嬉しいです。
> よろしくお願いします。
>
> ’ボタンをクリックするとTimer_tickが2秒毎に動くようになります。
> Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
> Timer1.Enabled = True
> Timer1.Start()
> End Sub
>
> Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
> Dim command As Byte() = {&H02, "01", &H43・・・}
> SerialPort1.Write(command, 0, command.Length)
> End sub
>
> で、
> Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
> Dim rData As String
>
> rData = SerialPort1.ReadExisting()
> 'MessageBox.Show(rData)
>
> Dim Desktopname As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory)
>
> Dim filePath As String = Desktopname & "/data/data.csv"
>
> Dim appendText As String = nows + "," + rdata + Environment.NewLine
>
> File.AppendAllText(filePath, appendText, System.Text.Encoding.GetEncoding("shift_jis"))
> End sub
>
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -