Exemple #1
0
 private void InternalClose()
 {
     Win32Com.CancelIo(m_hPort);
     if (m_RxThread != null)
     {
         m_RxThread.Abort();
         m_RxThread.Join(100);
         m_RxThread = (Thread)null;
     }
     Win32Com.CloseHandle(m_hPort);
     if (m_ptrUWO != IntPtr.Zero)
     {
         Marshal.FreeHGlobal(m_ptrUWO);
     }
 }
Exemple #2
0
 private void InternalClose()
 {
     Win32Com.CancelIo(hPort);
     if (rxThread != null)
     {
         rxThread.Abort();
         rxThread.Join(100);
         rxThread = (Thread)null;
     }
     Win32Com.CloseHandle(hPort);
     if (ptrUWO != IntPtr.Zero)
     {
         Marshal.FreeHGlobal(ptrUWO);
     }
     stateRTS = 2;
     stateDTR = 2;
     stateBRK = 2;
     online   = false;
 }
Exemple #3
0
        public CommBase.PortStatus IsPortAvailable(string s)
        {
            IntPtr file = Win32Com.CreateFile(s, 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero);

            if (file == (IntPtr)(-1))
            {
                if ((long)Marshal.GetLastWin32Error() == 5L)
                {
                    return(CommBase.PortStatus.unavailable);
                }
                file = Win32Com.CreateFile(AltName(s), 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero);
                if (file == (IntPtr)(-1))
                {
                    return((long)Marshal.GetLastWin32Error() == 5L ? CommBase.PortStatus.unavailable : CommBase.PortStatus.absent);
                }
            }
            Win32Com.CloseHandle(file);
            return(CommBase.PortStatus.available);
        }
Exemple #4
0
        public static PortStatus IsPortAvailable(int iComPort)
        {
            string comPort = "COM" + iComPort.ToString();
            IntPtr file    = Win32Com.CreateFile(comPort, 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero);

            if (file == (IntPtr)(-1))
            {
                if ((long)Marshal.GetLastWin32Error() == 5L)
                {
                    return(PortStatus.Unavailable);
                }
                file = Win32Com.CreateFile(AltName(comPort), 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero);
                if (file == (IntPtr)(-1))
                {
                    return((long)Marshal.GetLastWin32Error() == 5L ? PortStatus.Unavailable : PortStatus.Absent);
                }
            }
            Win32Com.CloseHandle(file);
            return(PortStatus.Available);
        }