示例#1
0
        public override bool start()
        {
            Monitor.Enter(mLock);
            try
            {
                if (WinUSBController.initUSB() == false)
                {
                    Console.WriteLine("WinUSBController.start() : Failed init");
                    Monitor.Exit(mLock);
                    this.stop();
                    return(false);
                }

                mDeviceHandle = WinUSBController.open((ushort)VendorID, (ushort)ProductID);
                mIsDeviceOpen = WinUSBController.isOpen(mDeviceHandle);
                if (mIsDeviceOpen == false)
                {
                    Console.WriteLine("WinUSBController.start() : Failed open, vendor(0x{0:X4}), product(0x{1:X4})", (ushort)VendorID, (ushort)ProductID);
                    Monitor.Exit(mLock);
                    this.stop();
                    return(false);
                }

                int ret = WinUSBController.controlTransfer(mDeviceHandle, USBXPRESS, USBXPRESS_REQUEST, USBXPRESS_CLEAR_TO_SEND, 0, null, 0, 0);
                if (ret < 0)
                {
                    Console.WriteLine(String.Format("WinUSBController.start() : Failed controlTransfer({0})", ret));
                    Monitor.Exit(mLock);
                    this.stop();
                    return(false);
                }

                mThreadState = true;
                mThread      = new Thread(threadFunc);
                mThread.Start();
            }
            catch (Exception e)
            {
                Console.WriteLine("SiUSBController.start() : Failed catch({0})", e.Message);
                Monitor.Exit(mLock);
                this.stop();
                return(false);
            }
            Monitor.Exit(mLock);
            return(true);
        }
示例#2
0
        private int beginTransaction()
        {
            // Claim Interface
            int ret = WinUSBController.claimInterface(mDeviceHandle, 0);

            if (ret < 0)
            {
                Console.WriteLine(String.Format("WinUSBController.beginTransaction() : Failed claimInterface({0})", ret));
                return(ret);
            }

            ret = WinUSBController.controlTransfer(mDeviceHandle, USBXPRESS, USBXPRESS_REQUEST, USBXPRESS_FLUSH_BUFFERS, 0, null, 0, 0);
            if (ret < 0)
            {
                Console.WriteLine(String.Format("WinUSBController.beginTransaction() : Failed controlTransfer({0})", ret));
                WinUSBController.releaseInterface(mDeviceHandle, 0);
                return(ret);
            }
            return(ret);
        }