给定的端口名称未以 COM/com 开头或未解析为有效的串行端口,这个是什么原因

解决方案 »

  1.   

    Imports System.IO.Ports
    Imports System.Text
    Public Class Form1
        '声明一个通讯端口对象
        Dim RS232 As SerialPort
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For Each sp As String In SerialPort.GetPortNames
                cmbCOM.Items.Add(sp)
            Next
            cmbCOM.Sorted = True
            cmbCOM.SelectedIndex = 0
        End Sub    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
            Dim mBaudRate As Integer
            Dim mParity As Parity
            Dim mDataBit As Integer
            Dim mStopbit As StopBits
            Dim mPortName As String
            mPortName = cmbCOM.SelectedIndex.ToString
            mBaudRate = 9600
            mParity = Parity.None
            mDataBit = 8
            mStopbit = StopBits.One
            '建立一个通讯端口对象
            RS232 = New SerialPort(mPortName, mBaudRate, mParity, mDataBit, mStopbit)
            RS232.Encoding = Encoding.Unicode
            If Not RS232.IsOpen Then
                RS232.Open()
                btnSend.Enabled = True
                btnReceive.Enabled = True
            Else
                MsgBox("~~通讯端口打开错误(通讯端口已被打开~~)", MsgBoxStyle.Critical Or MsgBoxStyle.OkCancel)
                End
            End If
        End Sub    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
            RS232.Write(txtSend.Text)
        End Sub    Private Sub btnReceive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceive.Click
            Dim InString As String
            InString = ""
            Try
                RS232.ReadTimeout = 1000
                InString = RS232.ReadExisting()
                If InString Is Nothing Then
                    Exit Sub
                Else
                    txtReceive.Text = InString
                End If
            Catch ex As Exception
                MessageBox.Show("读取错误:" + ex.ToString, "错误通知", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try
        End Sub    Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
            If RS232 Is Nothing OrElse Not RS232.IsOpen Then
                MsgBox("~~通讯端口尚未打开~~", MsgBoxStyle.Critical Or MsgBoxStyle.OkCancel)
            Else
                RS232.Close()
                btnStart.Enabled = False
                btnReceive.Enabled = False
            End If
        End Sub    Private Sub btnEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnd.Click
            If Not RS232 Is Nothing Then
                If RS232.IsOpen Then RS232.Close()
            End If
        End Sub    Private Sub cmbCOM_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbCOM.SelectedIndexChanged    End Sub
    End Class
      

  2.   

    cmbCOM.SelectedIndex.ToString
    这个里面必须是com1 com2之类的
      

  3.   

    cmbCOM.SelectedIndex.ToString
    这句改为COM4
    提示 “对端口“COM4”的访问被拒绝。”
    有没有可能是我的电脑中的这个端口的问题呀
      

  4.   

    你先看看有没有这个端口吧. "我的电脑"右键->"管理"->"设备管理器"->"端口"