private ErrorCode WriteReadBytesCommand(UsbEndpointBase endpoint)
        {
            UsbPacket   usbPacket = CreateReadBytesCommandPacket();
            UsbTransfer transfer  = null;

            try
            {
                ErrorCode errorCode = endpoint.SubmitAsyncTransfer(usbPacket, 0, (int)(_usbPacketSizeWithoutData + usbPacket.uiDataLen), _transferTimeoutInMilliseconds, out transfer);

                if (errorCode != ErrorCode.None)
                {
                    return(errorCode);
                }

                WaitHandle.WaitAll(new[] { transfer.AsyncWaitHandle }, _waitTimeout, false);

                if (!transfer.IsCompleted)
                {
                    transfer.Cancel();
                }

                int bytesTransferred;

                return(transfer.Wait(out bytesTransferred));
            }
            finally
            {
                transfer?.Dispose();
            }
        }
예제 #2
0
    MCTest()
    {
        mct = new MCTestForm(this);

        //usbPacket = new UsbWin32Packet();
        usbPacket = new UsbPacket();
        usbPacket.Open();
        if (usbPacket.IsOpen())
        {
            mct.SetUsbPortName(usbPacket.Name);
        }
        oscUsb = null;
        oscUsb = new Osc(usbPacket);
        oscUsb.SetAllMessageHandler(UsbMessages);

        udpPacket = new UdpPacket();
        udpPacket.RemoteHostName = mct.GetUdpRemoteHostName();
        udpPacket.RemotePort     = mct.GetUdpRemotePort();
        udpPacket.LocalPort      = mct.GetUdpLocalPort();
        udpPacket.Open();
        oscUdp = new Osc(udpPacket);
        oscUdp.SetAllMessageHandler(UdpMessages);
        oscUdp.SetAddressHandler("/analogin/0/value", AIn0Message);

        Application.Run(mct);
    }
예제 #3
0
        private uint StartSession()
        {
            UsbPacket usbPacket = new UsbPacket(UsbPacketType.USB_PROTOCOL_LAYER, (short)UsbPacketId.Pid_Start_Session, 0);

            _device.GarminWrite(usbPacket);

            UsbPacket returnPacket = _device.GarminReadSingleton();

            // packet returned should be 3.2.3.3 "Pid_Session_Started (6)".
            // It should also contain the device's unit id. We expect only 1 packet
            if (returnPacket.packetId != (short)UsbPacketId.Pid_Session_Started)
            {
                throw new InvalidOperationException("Unexpected packet id: " + returnPacket.packetId);
            }

            return(BitConverter.ToUInt32(returnPacket.data, 0));
        }
예제 #4
0
        public QuickTest()
        {
            InitializeComponent();

            // udpPacket = new UdpPacket();
            // udpPacket.RemoteHostName = "192.168.0.200";
            // udpPacket.RemotePort = 10000;
            // udpPacket.LocalPort = 10000;
            // udpPacket.Open();
            // oscUdp = new Osc(udpPacket);

            usbPacket = new UsbPacket();
            usbPacket.Open();
            osc = new Osc(usbPacket);

            osc.SetAddressHandler("/analogin/7/value", TrimPotReading);
        }
예제 #5
0
        public DeskTimerForm()
        {
            InitializeComponent();

            // udpPacket = new UdpPacket();
            // udpPacket.RemoteHostName = "192.168.0.200";
            // udpPacket.RemotePort = 10000;
            // udpPacket.LocalPort = 10000;
            // udpPacket.Open();
            // osc = new Osc(udpPacket);

            usbPacket = new UsbPacket();
            usbPacket.Open();
            osc = new Osc(usbPacket);

            Working = true;
            ResetTimers();

            osc.SetAddressHandler("/analogin/0/value", SensorReading);
        }
        public CPUMonitorWindow()
        {
            InitializeComponent();

            cpuCounter = new PerformanceCounter();

            cpuCounter.CategoryName = "Processor";
            cpuCounter.CounterName  = "% Processor Time";
            cpuCounter.InstanceName = "_Total";

            usbPacket = new UsbPacket();
            usbPacket.Open();
            osc = new Osc(usbPacket);

            // udpPacket = new UdpPacket();
            // udpPacket.RemoteHostName = "192.168.0.200";
            // udpPacket.RemotePort = 10000;
            // udpPacket.LocalPort = 10000;
            // udpPacket.Open();
            // osc = new Osc(udpPacket);
        }
        private unsafe UsbPacket CreateReadBytesCommandPacket()
        {
            // ReSharper disable once UseObjectOrCollectionInitializer
            var usbPacket = new UsbPacket
            {
                uiSeqNum     = _sequenceNumber,
                usPacketType = 0x0013,
                uiDataLen    = 0,
                ReadBytes    = new ReadBytesParams
                {
                    uiFileOffset = _fileOffset,
                    uiByteCount  = 512
                }
            };

            usbPacket.ucSync[0]             = (byte)'S';
            usbPacket.ucSync[1]             = (byte)'G';
            usbPacket.ReadBytes.uiUnused[0] = 0;
            usbPacket.ReadBytes.uiUnused[1] = 0;
            usbPacket.ReadBytes.uiUnused[2] = 0;

            return(usbPacket);
        }