投稿者 vb素人  (学生) 投稿日時 2017/8/22 09:34:04
魔界の仮面弁士さま

返信ありがとうございます。
デリゲートを使う方法で試しているのですが(下記④、⑤の部分)、うまくいきません。

実行すると
★の位置で「パラメーター カウントが一致しません。」というエラーが出てしまいます。




'①
    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

  '細かい所は省略します。
    '受信データを10進数表記に変換してxdecと、ydecをInvokeします。
     Dim datax As Byte() = {bin(2), bin(1)}
     Dim xbyte As UShort = BitConverter.ToUInt16(datax, 0)    '符号なし2 バイト整数に変換 
     Dim xdec As String = Convert.ToString(xbyte, 10)           '10進数表記の "1023" に変換 
     Invoke(New Delegate_RcvXDataToTextBox(AddressOf RcvXDataToTextBox), xdec)

     Dim datay As Byte() = {bin(4), bin(3)}
     Dim ybyte As UShort = BitConverter.ToUInt16(datay, 0)    '符号なし2 バイト整数に変換 
     Dim ydec As String = Convert.ToString(ybyte, 10)           '10進数表記の "1023" に変換 
     Invoke(New Delegate_RcvYDataToTextBox(AddressOf RcvYDataToTextBox), ydec)

    End Sub

'③xdecとydecの値をTextBoxへ表示させます。
    Private Sub RcvXDataToTextBox(xdec As String)

        Dim X As Integer
        '受信データをテキストボックスの最後に追記する.
        If IsNothing(xdec) = False Then
            RcvXTextBox.AppendText(xdec)
            X = CInt(xdec)
'★
           Invoke(New Delegate_RcvDataToGraph(AddressOf RcvDataToGraph), X)
        End If

    End Sub

    Private Sub RcvYDataToTextBox(ydec As String)

        Dim Y As Integer
        '受信データをテキストボックスの最後に追記する.
        If IsNothing(ydec) = False Then
            RcvYTextBox.AppendText(ydec)
            Y = CInt(ydec)
            Invoke(New Delegate_RcvDataToGraph(AddressOf RcvDataToGraph), Y)
        End If

    End Sub

'④グラフへデータを渡すデリゲート
    Private Delegate Sub Delegate_RcvYDataToGraph(X As Integer, Y As Integer)


'⑤グラフ表示
    Private Sub RcvYDataToGraph(X As Integer, Y As Integer)
        Chart1.Series.Clear()   '既存の Series をクリアする場合 
        Dim s As Series

        s = Chart1.Series.Add("E")
        s.ChartType = SeriesChartType.Point

        s.Points.AddXY(X, Y)

    End Sub