Beispiel #1
0
 public CdcAcmSerialPort(UsbManager usbManager, UsbDevice usbDevice, int portNumber)
     : base(usbManager, usbDevice, portNumber)
 {
     // Disabled because it is not work well under SmartThreadPool.
     //EnableAsyncReads = (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBeanMr1);
     EnableAsyncReads = false;
 }
        public void Default_0_GetHidDevices()
        {
            if (!Platform.IsWindows)
            {
                return;
            }
            var deviceInfos = UsbManager.GetHidDevices();

            Assert.NotNull(deviceInfos);
            foreach (var deviceInfo in deviceInfos)
            {
                _output.WriteLine("deviceInfo.Path: \"" + deviceInfo.Path + "\"");
                _output.WriteLine("deviceInfo.SerialNumber: \"" + deviceInfo.SerialNumber + "\"");
                Assert.False(string.IsNullOrWhiteSpace(deviceInfo.Path));
                var productId = deviceInfo.ProductId;
                if (!string.IsNullOrEmpty(productId))
                {
                    Assert.True(productId.Length == 4);
                }
                var vendorId = deviceInfo.VendorId;
                if (!string.IsNullOrEmpty(vendorId))
                {
                    Assert.True(vendorId.Length == 4);
                }
                Assert.False(string.IsNullOrWhiteSpace(deviceInfo.Description));
                Assert.False(string.IsNullOrWhiteSpace(deviceInfo.Manufacturer));
                var optional = deviceInfo.Optional;
                if (optional.ContainsKey("type"))
                {
                    Assert.False(string.IsNullOrWhiteSpace(optional["type"]));
                }
            }
        }
Beispiel #3
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            PowerManager pm = (PowerManager)GetSystemService(Context.PowerService);

            PowerManager.WakeLock wl = pm.NewWakeLock(WakeLockFlags.ScreenBright, "My Tag");
            wl.Acquire();
            this.Window.AddFlags(WindowManagerFlags.KeepScreenOn);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            text      = FindViewById <EditText>(Resource.Id.editText1);
            text.Text = getIP();
            t1        = FindViewById <TextView>(Resource.Id.textView2);
            t2        = FindViewById <TextView>(Resource.Id.textView3);

            var client = new TcpClient();

            Button button1 = FindViewById <Button>(Resource.Id.button1);

            button1.Click += StartBotClicked;

            Button button2 = FindViewById <Button>(Resource.Id.button2);

            button2.Click += NetworkTestClicked;

            usbManager = GetSystemService(Context.UsbService) as UsbManager;

            image             = FindViewById <TextureView>(Resource.Id.imageView1);
            mc                = new MyCamera(image);
            mc.FrameRefreshed = sendFrame;
        }
        private void WireupUsb(IUsbSerialDriver device)
        {
            UsbManager manager = (UsbManager)GetSystemService(UsbService);

            var port1 = device.Ports[0];

            UsbDeviceConnection connection = manager.OpenDevice(device.Device);

            port1.Open(connection);
            port1.SetParameters(115200, DataBits._8, StopBits._1, Parity.None);

            var buffer = new byte[500];

            Log.Debug("main", "here");

            var timeout = (int)TimeSpan.FromSeconds(1).TotalMilliseconds;

            port1.CtsChanged += Port1_CtsChanged;
            port1.Rts         = true;

            while (true)
            {
                var bytesRead = port1.Read(buffer, timeout);
                if (bytesRead > 0)
                {
                    var str = Encoding.ASCII.GetString(buffer, 0, bytesRead);
                    Log.Debug("card read", str);
                }
                Thread.Sleep(50);
            }
        }
Beispiel #5
0
        public SmartScopeUsbInterfaceXamarin(Context context, UsbManager usbManager, UsbDevice device)
        {
            Destroyed = false;
            if (!usbManager.HasPermission(device))
            {
                Logger.Error("Permission denied");
                throw new Exception("Device permission not obtained");
            }

            UsbInterface interf = device.GetInterface(0);

            for (int i = 0; i < interf.EndpointCount; i++)
            {
                if (interf.GetEndpoint(i).EndpointNumber == 1)
                {
                    dataEndpoint = interf.GetEndpoint(i);
                }
                else if (interf.GetEndpoint(i).EndpointNumber == 2)
                {
                    commandWriteEndpoint = interf.GetEndpoint(i);
                }
                else if (interf.GetEndpoint(i).EndpointNumber == 3)
                {
                    commandReadEndpoint = interf.GetEndpoint(i);
                }
            }
            usbConnection = usbManager.OpenDevice(device);
            usbConnection.ClaimInterface(interf, true);
        }
        public static Task <bool> RequestPermissionAsync(this UsbManager manager, UsbDevice device, Context context)
        {
            if (manager == null)
            {
                throw new ArgumentNullException(nameof(manager));
            }
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            string permission = String.Format(ExtendedUsbConstants.ACTION_USB_PERMISSION_FORMAT, context.PackageName);

            var usbPermissionReceiver = new UsbBroadcastReceiver <bool>((c, i) => i.GetBooleanExtra(UsbManager.ExtraPermissionGranted, false));

            usbPermissionReceiver.Register(context, permission, true);

            PendingIntent intent = PendingIntent.GetBroadcast(context, 0, new Intent(permission), 0);

            manager.RequestPermission(device, intent);

            return(usbPermissionReceiver.ReceiveTask);
        }
Beispiel #7
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            Log.Info(TAG, "OnCreate");

            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.serial_console);

            usbManager    = GetSystemService(Context.UsbService) as UsbManager;
            titleTextView = FindViewById <TextView>(Resource.Id.demoTitle);
            dumpTextView  = FindViewById <TextView>(Resource.Id.consoleText);
            scrollView    = FindViewById <ScrollView>(Resource.Id.demoScroller);

            sleepButton = FindViewById <Button>(Resource.Id.sleepButton);
            wakeButton  = FindViewById <Button>(Resource.Id.wakeupButton);

            // The following arrays contain data that is used for a custom firmware for
            // the Elatec TWN4 RFID reader. This code is included here to show how to
            // send data back to a USB serial device
            byte[] sleepdata = new byte[] { 0xf0, 0x04, 0x10, 0xf1 };
            byte[] wakedata  = new byte[] { 0xf0, 0x04, 0x11, 0xf1 };

            sleepButton.Click += delegate
            {
                WriteData(sleepdata);
            };

            wakeButton.Click += delegate
            {
                WriteData(wakedata);
            };
        }
 public FtdiSerialPort(UsbManager manager, UsbDevice device, int portNumber)
     : base(manager, device, portNumber)
 {
     readEndpoint  = UsbDevice.GetInterface(0).GetEndpoint(0);
     writeEndpoint = UsbDevice.GetInterface(0).GetEndpoint(1);
     maxPacketSize = readEndpoint.MaxPacketSize;
 }
Beispiel #9
0
        /// <summary>
        /// All'avvio controlla se ci sono dispositivi connessi
        /// e inizializza il il gestore di eventi
        /// </summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            UsbManager = new UsbManager();
            UsbManager.StateChanged += new UsbStateChangedEventHandler(DeviceStateChanged);

            // Directory di lavoro per la gestione dei file in user mode
            if (Directory.Exists(Services.FileSSRestoreService.DataDirectory) == false)
            {
                Directory.CreateDirectory(Services.FileSSRestoreService.DataDirectory);
            }

            // display all devices
            UsbDiskCollection disks = UsbManager.GetAvailableDisks();

            WriteLine("Available USB disks:", Color.DarkCyan);
            foreach (UsbDisk disk in disks)
            {
                WriteLine(disk.ToString());
                OnDeviceAdded(disk.Name);
            }
            WriteLine(string.Empty);

            WriteLine("Waiting for events...", Color.DarkCyan);

            Tests();
        }
Beispiel #10
0
        public Connection(UsbAccessory accessory, UsbManager manager, Action <byte[]> onDataReceived, Action onConnectionClosed)
        {
            Logger.LogInfo(nameof(Connection), "Constructor", "called.");

            try
            {
                _Accessory = accessory;
                _Manager   = manager;

                _OnDataReceived     += onDataReceived;
                _OnConnectionClosed += onConnectionClosed;

                OpenConnection();

                _TaskCancelTokenSource = new CancellationTokenSource();
                _TaskCancelToken       = _TaskCancelTokenSource.Token;

                // Start the receivedata task in a new thread, with the given canceltoken.
                Task.Factory.StartNew(() => ReceiveData(), _TaskCancelToken);

                Logger.LogInfo(nameof(Connection), "Constructor", nameof(ReceiveData) + " task : " + "created.");
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
            }
        }
Beispiel #11
0
        private void GetCardReader()
        {
            UsbManager manager     = (UsbManager)GetSystemService(UsbService);
            var        cardReaders = CardReaderProbe.ProbeForCardReaders(manager);

            var device = cardReaders.First();

            if (!manager.HasPermission(device))
            {
                var usbPermission = "Cid.Example.USB_PERMISSION";

                var permissionIntent = PendingIntent.GetBroadcast(this, 0, new Intent(usbPermission), 0);

                var filter = new IntentFilter(usbPermission);

                var receiver = new UsbPermissionReceiver
                {
                    Callback = () => WireUpCardReader(device)
                };

                RegisterReceiver(receiver, filter);

                manager.RequestPermission(device, permissionIntent);
            }
            else
            {
                WireUpCardReader(device);
            }
        }
 public static void Register(UsbManager usbManager, Context context, ILogger logger)
 {
     DeviceManager.Current.DeviceFactories.Add(new AndroidUsbDeviceFactory(usbManager, context)
     {
         Logger = logger
     });
 }
Beispiel #13
0
 public void Dispose()
 {
     if (NativeDevice != null)
     {
         NativeDevice.Dispose();
         NativeDevice = null;
     }
     if (Connection != null)
     {
         Connection.Dispose();
         Connection = null;
     }
     if (Endpoint != null)
     {
         Endpoint.Dispose();
         Endpoint = null;
     }
     if (EndpointWrite != null)
     {
         EndpointWrite.Dispose();
         EndpointWrite = null;
     }
     if (Manager != null)
     {
         Manager.Dispose();
         Manager = null;
     }
 }
 public AndroidUsbInterfaceManager(UsbManager usbManager, Context androidContext, int deviceNumberId, ILogger logger, ITracer tracer, ushort?readBufferLength, ushort?writeBufferLength) : base(logger, tracer)
 {
     _ReadBufferSize  = readBufferLength;
     _WriteBufferSize = writeBufferLength;
     UsbManager       = usbManager ?? throw new ArgumentNullException(nameof(usbManager));
     AndroidContext   = androidContext ?? throw new ArgumentNullException(nameof(androidContext));
     DeviceNumberId   = deviceNumberId;
 }
Beispiel #15
0
        internal static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(UsbManager usbManager)
        {
            // using the default probe table
            var table  = UsbSerialProber.DefaultProbeTable;
            var prober = new UsbSerialProber(table);

            return(prober.FindAllDriversAsync(usbManager));
        }
        public void Open(UsbManager usbManager, int bufferSize = DEFAULT_BUFFERSIZE)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(GetType().Name);
            }
            if (IsOpen)
            {
                throw new InvalidOperationException();
            }

            var connection = usbManager.OpenDevice(port.GetDriver().GetDevice());

            if (connection == null)
            {
                throw new Java.IO.IOException("Failed to open device");
            }
            isOpen = true;

            buffer = new byte[bufferSize];
            port.Open(connection);
            port.SetParameters(BaudRate, DataBits, StopBits, Parity);

            cancelationTokenSource = new CancellationTokenSource();
            var cancelationToken = cancelationTokenSource.Token;

            cancelationToken.Register(() => Log.Info(TAG, "Cancellation Requested"));

            Task.Run(() => {
                Log.Info(TAG, "Task Started!");
                try
                {
                    while (true)
                    {
                        cancelationToken.ThrowIfCancellationRequested();

                        Step(); // execute step
                    }
                }
                catch (OperationCanceledException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    Log.Warn(TAG, "Task ending due to exception: " + e.Message, e);
                    ErrorReceived.Raise(this, new UnhandledExceptionEventArgs(e, false));
                }
                finally
                {
                    port.Close();
                    port.Driver.Device.Dispose();//richard: avoid GREF leak
                    buffer = null;
                    isOpen = false;
                    Log.Info(TAG, "Task Ended!");
                }
            }, cancelationToken);
        }
 public UsbDataBinder(UsbManager manager, UsbDevice device)
 {
     // TODO Auto-generated constructor stub
     mUsbManager = manager;
     mDevice     = device;
     mIntf       = mDevice.GetInterface(0);
     mEndpoint   = mIntf.GetEndpoint(0);
     mConnection = mUsbManager.OpenDevice(mDevice);
 }
Beispiel #18
0
        public Task <IList <IUsbSerialDriver> > FindAllDriversAsync(UsbManager usbManager)
        {
            var tcs = new TaskCompletionSource <IList <IUsbSerialDriver> >();

            Task.Run(() => {
                tcs.TrySetResult(FindAllDrivers(usbManager));
            });
            return(tcs.Task);
        }
Beispiel #19
0
 protected override void OnCreate(Bundle bundle)
 {
     base.OnCreate(bundle);
     SetContentView(Resource.Layout.Main);
     manager   = (UsbManager)this.GetSystemService(Context.UsbService);
     tgConnect = FindViewById <ToggleButton>(Resource.Id.toggleButton1);
     Result    = FindViewById <TextView>(Resource.Id.textView1);
     tgConnect.CheckedChange += tgConnect_HandleCheckedChange;
 }
Beispiel #20
0
        public override void OnCreate()
        {
            Instance = this;

            OnUsbDataReceiver += MainActivity.Instance.Instance_OnUsbDataReceiver;

            mPermissionIntent = PendingIntent.GetBroadcast(this, 0, new Intent(Consts.ACTION_USB_PERMISSION), 0);
            mUsbManager       = (UsbManager)GetSystemService(Context.UsbService);
        }
Beispiel #21
0
        protected void findUSBSerialDevice()
        {
            if (m_usbManager == null)
            {
                m_usbManager = (UsbManager)Application.Context.GetSystemService(Context.UsbService);
            }

            if (m_usbManager != null)
            {
                UsbAccessory[] ubTempList        = m_usbManager.GetAccessoryList();
                PendingIntent  mPermissionIntent = PendingIntent.GetBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
                UsbAccessory   accesory          = ubTempList[0];
                //m_usbManager.RequestPermission(accesory, mPermissionIntent);

                readSb = new StringBuffer();
                bool tienepermiso = m_usbManager.HasPermission(accesory);
                filedescriptor = m_usbManager.OpenAccessory(accesory);
                if (filedescriptor != null)
                {
                    writeIndex = 0;
                    FileDescriptor fd = filedescriptor.FileDescriptor;

                    inputstream  = new FileInputStream(fd);
                    outputstream = new FileOutputStream(fd);
                    if (inputstream == null || outputstream == null)
                    {
                        return;
                    }
                    SetConfig(1200, 8, 1, 0, 0);
                    if (inputstream != null)
                    {
                        while (true)
                        {
                            readcount = inputstream.Read(usbdata, 0, 1024);
                            if (readcount > 0)
                            {
                                for (int count = 0; count < readcount; count++)
                                {
                                    readBuffer[writeIndex]       = usbdata[count];
                                    readBufferToChar[writeIndex] = (char)readBuffer[writeIndex];
                                    writeIndex++;
                                }
                                writeIndex = 0;
                                readSb.Append(readBufferToChar);
                                string p = readSb.ToString().Replace("\0", "");
                                if (p.Contains("2+"))
                                {
                                    string peso = p.Substring(p.IndexOf("2+"), 7);
                                    Toast.MakeText(this, peso, ToastLength.Long).Show();
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        public List <UsbDevice> GetPossibleSerialPorts(Context context)
        {
            usbManager = (UsbManager)context.GetSystemService(Context.UsbService);

            IDictionary <string, UsbDevice> allDevices = usbManager.DeviceList;
            List <UsbDevice> devices = allDevices.Values.Where(s => UsbSerialDevice.IsSupported(s)).ToList();

            return(devices);
        }
 public SerialInputOutputManager(UsbManager usbManager, IUsbSerialPort port)
 {
     _usbManager = usbManager;
     this.port   = port;
     BaudRate    = DEFAULT_BAUDRATE;
     Parity      = DEFAULT_PARITY;
     DataBits    = DEFAULT_DATABITS;
     StopBits    = DEFAULT_STOPBITS;
 }
Beispiel #24
0
        public static Task <IList <IUsbSerialDriver> > FindAllDriversAsync(
            this UsbSerialProber prober,
            UsbManager manager)
        {
            var tcs = new TaskCompletionSource <IList <IUsbSerialDriver> >();

            Task.Run(
                () => { tcs.TrySetResult(prober.FindAllDrivers(manager)); });
            return(tcs.Task);
        }
Beispiel #25
0
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }

            UsbManager.Close();
            base.Dispose(disposing);
        }
        public static async Task <UsbSerialPort> GetUsbSerialPortAsync(
            UsbManager usbManager)
        {
            var drivers = await FindAllDriversAsync(usbManager);

            var ports = drivers.SelectMany(driver => driver.Ports).ToList();

            //TODO: List All Available Ports
            return(ports[0]);
        }
Beispiel #27
0
        public static List <IUsbSerialDriver> GetDriverList(UsbManager usbManager)
        {
            if (Build.VERSION.SdkInt < BuildVersionCodes.HoneycombMr1)
            {
                return(new List <IUsbSerialDriver>());
            }
            IList <IUsbSerialDriver> availableDrivers = UsbSerialProber.DefaultProber.FindAllDrivers(usbManager);

            return(availableDrivers.Where(driver => IsValidUsbDevice(driver.Device)).ToList());
        }
Beispiel #28
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById <Button>(Resource.Id.MyButton);

            // 获取UsbManager
            myUsbManager = (UsbManager)GetSystemService(UsbService);

            enumerateDevice();

            findInterface();

            openDevice();

            assignEndpoint();

            //查找USB设备
            button.Click += (o, e) =>
            {
                int    ret = -100;
                string mes = "1111111111";
                byte[] Receiveytes;

                byte[]   OutBuffer;//数据
                int      BufferSize;
                Encoding targetEncoding;

                //将[UNICODE编码]转换为[GB码],仅使用于简体中文版mobile
                targetEncoding = Encoding.GetEncoding(0);          //得到简体中文字码页的编码方式,因为是简体中文操作系统,参数用0就可以,用936也行。
                BufferSize     = targetEncoding.GetByteCount(mes); //计算对指定字符数组中的所有字符进行编码所产生的字节数
                OutBuffer      = new byte[BufferSize];
                OutBuffer      = targetEncoding.GetBytes(mes);
                byte[] cmdData = new byte[BufferSize + 5];

                //初始化打印机
                cmdData[0] = 0x1B;
                cmdData[1] = 0x40;
                //设置字符顺时旋转180度
                cmdData[2] = 0x1B;
                cmdData[3] = 0x56;
                cmdData[4] = 0;
                for (int i = 0; i < BufferSize; i++)
                {
                    cmdData[5 + i] = OutBuffer[i];
                }
                //发送数据
                sendPackage(cmdData);
            };
        }
Beispiel #29
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);

            usbManager       = GetSystemService(Context.UsbService) as UsbManager;
            listView         = FindViewById <ListView>(Resource.Id.deviceList);
            progressBar      = FindViewById <ProgressBar>(Resource.Id.progressBar);
            progressBarTitle = FindViewById <TextView>(Resource.Id.progressBarTitle);
        }
Beispiel #30
0
        public static string getDriveSerialNumber(char letter)
        {
            string volumeSN = UsbManager.GetVolumeSerialNumber(devName(letter));

            if (volumeSN == null && IsMappedDrive(letter) && IsDriveMounted(letter))
            {
                String realPath = GetDriveMapping(letter);
                volumeSN = UsbManager.GetVolumeSerialNumber(devName(realPath[0]));
            }
            return(volumeSN);
        }