none
vb串口程序与win8兼容关系 RRS feed

  • 问题

  • 自己写的程序 以前都是在XP win7系统的电脑上使用 都没有问题

    现在换了win8的电脑 

    串口无法打开 (用串口工具是可以打开的 串口号也没有错误)

    系统报错 如下

    Rs232+CIOChannelException: Unable to open COM1
       在 x64.Rs232.Open()
       --- 内部异常堆栈跟踪的结尾 ---

    开串口的程序如下

     Public Overloads Sub Open()
            Dim uDcb As DCB, iRc As Integer
            Dim iMode As Integer = Convert.ToInt32(IIf(meMode = Mode.Overlapped, _
                FILE_FLAG_OVERLAPPED, 0))
            If miPort > 0 Then
                Try
                    mhRS = CreateFile("COM" & miPort.ToString, _
                    GENERIC_READ Or GENERIC_WRITE, 0, 0, _
                    OPEN_EXISTING, iMode, 0)
                    'hCF = mhRS  'new
                    If mhRS <> -1 Then
                        Dim lpErrCode As Integer
                        iRc = ClearCommError(mhRS, lpErrCode, 0&)
                        iRc = PurgeComm(mhRS, PurgeBuffers.RXClear Or PurgeBuffers.TxClear)
                        iRc = GetCommState(mhRS, uDcb)
                        Dim sParity As String = "NOEMS"
                        sParity = sParity.Substring(meParity, 1)
                        Dim sDCBState As String = String.Format( _
                          "baud={0} parity={1} data={2} stop={3}", _
                         miBaudRate, sParity, miDataBit, CInt(meStopBit))
                        iRc = BuildCommDCB(sDCBState, uDcb)
                        iRc = SetCommState(mhRS, uDcb)
                        If iRc = 0 Then
                            Dim sErrTxt As String = pErr2Text(GetLastError())
                            Throw New CIOChannelException("Unable to set COM state0" & sErrTxt)
                        End If
                        iRc = SetupComm(mhRS, miBufferSize, miBufferSize)
                        pSetTimeout()
                    Else
                        Throw New CIOChannelException("Unable to open COM" & miPort.ToString)
                    End If
                Catch Ex As Exception
                    Throw New CIOChannelException(Ex.Message, Ex)
                End Try
            Else
                Throw New ApplicationException("COM Port not defined, " + _
                    "use Port property to set it before invoking InitPort")
            End If
        End Sub

    不知道win7和win8系统在串口这方面有什么不同 希望大虾们多多指教 谢谢!

    2014年1月23日 7:30