投稿者 vb素人  (学生) 投稿日時 2017/9/6 09:37:25
シリアル通信で受信したデータの保存について。

↓の①~③のコードで受信データxとyの保存まで対応できていますが、
自分で設定した時間(TextBox1で設定)ごとにxとyのデータを保存する方法が分かりません。





    Private Delegate Sub Delegate_RcvXDataToTextBox(xdec As String)
    Private Delegate Sub Delegate_RcvYDataToTextBox(ydec As String)


    Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

'細かい所は省略します
         Dim datax As Byte() = {bin(2), bin(1)}
         Dim x As UShort = BitConverter.ToUInt16(datax, 0)    '符号なし2 バイト整数に変換 

         Dim datay As Byte() = {bin(4), bin(3)}
         Dim y As UShort = BitConverter.ToUInt16(datay, 0)    '符号なし2 バイト整数に変換 

         Received(x, y)

    End Sub


    Private Sub Received(x As UShort, y As UShort)

        If InvokeRequired Then
            Invoke(New Action(Of UShort, UShort)(AddressOf Received), x, y)
        Else
  'グラフの設定などは省略
            s.Points.AddXY(x, y)

            '★
            Dim sw As System.IO.StreamWriter
            sw = New System.IO.StreamWriter("abc.csv", True,
                                                  System.Text.Encoding.GetEncoding(932))

            sw.WriteLine(x & "," & y)
            sw.Close()

        End If
    End Sub


Button3を押したらデータの保存を開始して、
Timer1_Tick内(☆印の箇所?)でxとyをファイルに書き込むのかと思っていますが、
xとyのデータを受け渡す方法が上手くいきません。



    Dim CountTimer As Integer

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        CountTimer = CInt(TextBox1.Text)
        Timer1.Interval = 1000
        Timer1.Enabled = True
    End Sub



    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        CountTimer = CountTimer - 1
'☆
        If CountTimer = 0 Then
            Timer1.Enabled = False
            MessageBox.Show("測定終了")
        End If
    End Sub