//private void DoSyncOpenActions()
        //{
        //    usbService.serialPortConnected = true;
        //    usbService.serialPort.SetBaudRate(UsbSerialInterface.BAUD_RATE_9600);
        //    usbService.serialPort.SetDataBits(UsbSerialInterface.DATA_BITS_8);
        //    usbService.serialPort.SetStopBits(UsbSerialInterface.STOP_BITS_1);
        //    usbService.serialPort.SetParity(UsbSerialInterface.PARITY_NONE);
        //    /**
        //        * Current flow control Options:
        //        * UsbSerialInterface.FLOW_CONTROL_OFF
        //        * UsbSerialInterface.FLOW_CONTROL_RTS_CTS only for CP2102 and FT232
        //        * UsbSerialInterface.FLOW_CONTROL_DSR_DTR only for CP2102 and FT232
        //        */
        //    usbService.serialPort.SetFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
        //    //serialPort.Read(usbService.mCallback);
        //    usbService.serialPort.GetCTS(usbService.ctsCallback);
        //    usbService.serialPort.GetDSR(usbService.dsrCallback);


        //    usbService.syncreadThread = new ReadThread(usbService);
        //    usbService.syncreadThread.Start();
        //    //
        //    // Some Arduinos would need some sleep because firmware wait some time to know whether a new sketch is going
        //    // to be uploaded or not
        //    //Thread.sleep(2000); // sleep some. YMMV with different chips.

        //    // Everything went as expected. Send an intent to MainActivity
        //    Intent intent = new Intent(ServiceConstants.ACTION_USB_READY);
        //    usbService.context.SendBroadcast(intent);
        //}

        /// <summary>
        /// The Run
        /// </summary>
        public override void Run()
        {
            usbService.serialPort = UsbSerialDevice.CreateUsbSerialDevice(usbService.device, usbService.connection);
            //serialPort = null;// UsbSerialDevice.CreateUsbSerialDevice(usbService.device, usbService.connection);

            if (usbService.serialPort != null)
            {
                if (LNG.CommonFramework.StaticMethods.IsAsync)
                {
                    if (usbService.serialPort.Open())
                    {
                        DoOpenActions(true);
                    }
                    else
                    {
                        // Serial port could not be opened, maybe an I/O error or if CDC driver was chosen, it does not really fit
                        // Send an Intent to Main Activity

                        if (usbService.serialPort is CDCSerialDevice)
                        {
                            Intent intent = new Intent(ServiceConstants.ACTION_CDC_DRIVER_NOT_WORKING);
                            usbService.context.SendBroadcast(intent);
                        }
                        else
                        {
                            Intent intent = new Intent(ServiceConstants.ACTION_USB_DEVICE_NOT_WORKING);
                            usbService.context.SendBroadcast(intent);
                        }
                    }
                }
                else if (usbService.serialPort.SyncOpen())
                {
                    DoOpenActions(false);
                }
                else
                {
                    // Serial port could not be opened, maybe an I/O error or if CDC driver was chosen, it does not really fit
                    // Send an Intent to Main Activity
                    if (usbService.serialPort is CDCSerialDevice)
                    {
                        Intent intent = new Intent(ServiceConstants.ACTION_CDC_DRIVER_NOT_WORKING);
                        usbService.context.SendBroadcast(intent);
                    }
                    else
                    {
                        Intent intent = new Intent(ServiceConstants.ACTION_USB_DEVICE_NOT_WORKING);
                        usbService.context.SendBroadcast(intent);
                    }
                }
            }
            else
            {
                // No driver for given device, even generic CDC driver could not be loaded
                Intent intent = new Intent(ServiceConstants.ACTION_USB_NOT_SUPPORTED);
                usbService.context.SendBroadcast(intent);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// The SelectSerialPort
        /// </summary>
        /// <param name="index">The index<see cref="int"/></param>
        /// <returns>The <see cref="bool"/></returns>
        public bool SelectSerialPort(int index)
        {
            bool success = false;

            if (serialPorts?.Count > 0 && serialPorts.Count > index)
            {
                serialPort = serialPorts[index];
                success    = true;
            }

            return(success);
        }
Esempio n. 3
0
        /// <summary>
        /// The onSerialPortsDetected
        /// </summary>
        /// <param name="serialPorts">The serialPorts<see cref="List{UsbSerialDevice}"/></param>
        public void OnSerialPortsDetected(List <UsbSerialDevice> serialPorts)
        {
            this.serialPorts = serialPorts;
            if (serialPorts.Count > 0)
            {
                if (serialPort == null)
                {
                    serialPort = serialPorts[0];
                }

                if (!serialPorts.Contains(serialPort))
                {
                    serialPort = serialPorts[0];
                }
            }
        }