Example #1
0
        /// <summary>
        /// Connexion au device en série.
        /// </summary>
        public async Task <bool> Connect(string deviceId)
        {
            _serialPort = await SerialDevice.FromIdAsync(deviceId);

            if (_serialPort != null)
            {
                _serialPort.WriteTimeout = TimeSpan.FromMilliseconds(1000);
                _serialPort.ReadTimeout  = TimeSpan.FromMilliseconds(1000);
                _serialPort.BaudRate     = 9600;
                _serialPort.Parity       = SerialParity.None;
                _serialPort.StopBits     = SerialStopBitCount.One;
                _serialPort.DataBits     = 8;
                _serialPort.Handshake    = SerialHandshake.None;

                _writer = new DataWriter(_serialPort.OutputStream);

                _deviceConnected = true;

                Task taskReceive = Task.Run(() => { ReadLoop(_serialPort.InputStream); });
                await taskReceive.ConfigureAwait(false);

                OnSerialConnected?.Invoke(this, new EventArgs());
                return(true);
            }
            return(false);
        }
        private void Update()
        {
            // Read the next message from the queue
            var message = serialThread?.ReadSerialMessage();

            if (message == null)
            {
                return;
            }

            // Check if the message is plain data or a connect/disconnect event.
            if (string.Equals(message, SERIAL_DEVICE_CONNECTED))
            {
                IsConnected = true;
                OnSerialConnected?.Invoke();
            }
            else if (string.Equals(message, SERIAL_DEVICE_DISCONNECTED))
            {
                IsConnected = false;
                OnSerialDisconnected?.Invoke();
            }
            else
            {
                if (!IsConnected)
                {
                    return;
                }

                OnSerialMessageReceived?.Invoke(message);
            }
        }
        private void Update()
        {
//#if UNITY_EDITOR
//            if (testPitacoConnection && stopReceivePicatoValues == false)
//            {
//                OnSerialMessageReceived?.Invoke(testPitacoValue.ToString(CultureInfo.InvariantCulture));
//                return;
//            }
//#endif
            // Read the next message from the queue
            var message = serialThread?.ReadSerialMessage();

            if (message == null)
            {
                return;
            }

            // Check if the message is plain data or a connect/disconnect event.
            if (string.Equals(message, SERIAL_DEVICE_CONNECTED))
            {
                IsConnected = true;
                OnSerialConnected?.Invoke();
            }
            else if (string.Equals(message, SERIAL_DEVICE_DISCONNECTED))
            {
                IsConnected = false;
                OnSerialDisconnected?.Invoke();
            }
            else
            {
                if (!IsConnected)
                {
                    return;
                }

                OnSerialMessageReceived?.Invoke(message);
            }
        }