none
在VB2008用SerialPort時遇到跨執行緒作業無效..... RRS feed

  • 問題

  • Dear Sir:

    大家好,我是VB2008的初學者,我現在要用VB來做一個Serial的接收傳送的程式,

    因無法貼圖,所以我就用瞄述的,我目前只有用一個Botton1 , 一個Label1還有一個SerialPort這樣,

    我有確定RS232的線是沒問題的,因為我用終端機都收的到,但用以下程式執行時可以Connect,

    但一送資料到電腦時就出現以下訊息了:

    "跨執行緒作業無效: 存取控制項 'Label1' 時所使用的執行緒與建立控制項的執行緒不同。"

    目前程如下:

    Public Class Form1
        Dim conn As Integer = 0
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Dim s_str As String = "GetID"
            If (SerialPort1.IsOpen) Then
                SerialPort1.Close()
                Button1.Text = "Connect"
            Else
                SerialPort1.Open()
                Button1.Text = "Disconnect"
            End If

            'SerialPort1.Write(s_str)'也試過寫出去,不過好像也有問題....
        End Sub

        Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim bRead As Integer
            Dim mes As String = ""
            Label1.Text = "test"
            bRead = SerialPort1.BytesToRead
            Dim cData(bRead - 1) As Byte
            'mes = SerialPort1.ReadExisting()
            SerialPort1.Read(cData, 0, bRead)
            For Each b As Byte In cData
                    mes += Chr(b)
            Next
            Label1.Text = mes

        End Sub

    End Class

    不知這樣的問題要如何解決呢?我已經有爬過文了,不過還是一直找不到答案,

    希望有經驗的大大可以協助一下....多謝。

    2010年8月3日 上午 02:18

解答

所有回覆