Example #1
0
        public async override Task <bool> ConnectAsync()
        {
            try
            {
                await _port.OpenAsync();

                State   = States.Connecting;
                _reader = new StreamReader(_port.InputStream);
                _writer = new StreamWriter(_port.OutputStream);

                StartListening(_reader);
                State = States.Connected;
                return(true);
            }
            catch (Exception ex)
            {
                _logger.NotifyUserError("SerialPortChannel_ConnectAsync", ex.Message);
                if (_reader != null)
                {
                    _reader.Dispose();
                    _reader = null;
                }

                if (_writer != null)
                {
                    _writer.Dispose();
                    _writer = null;
                }

                return(false);
            }
        }
Example #2
0
        public async Task ConnectAsync(ISerialPort port)
        {
            if (Connected)
            {
                throw new Exception("Can't Connect: Already Connected");
            }

            try
            {
                await port.OpenAsync();

                var outputStream = port.OutputStream;
                if (outputStream == null)
                {
                    AddStatusMessage(StatusMessageTypes.Warning, $"Could not open serial port");
                    return;
                }

                Connected = true;

                lock (_queueAccessLocker)
                {
                    _toSend.Clear();
                    _sentQueue.Clear();
                    _toSendPriority.Clear();
                }

                Mode = OperatingMode.Manual;

                if (Settings.MachineType == FirmwareTypes.Repeteir_PnP)
                {
                    Enqueue("M43 P25");
                    Enqueue("M43 P27");
                    Enqueue("M43 P29");
                    Enqueue("M43 P31");
                    Enqueue("M43 P32");
                    Enqueue("M43 P33");
                    Enqueue("G90");
                }

                _cancelSource = new CancellationTokenSource();
                _port         = port;

                AddStatusMessage(StatusMessageTypes.Info, $"Opened Serial Port");

                await Task.Run(() =>
                {
                    Work(port.InputStream, port.OutputStream);
                }, _cancelSource.Token);
            }
            catch (Exception ex)
            {
                _port     = null;
                Connected = false;
                AddStatusMessage(StatusMessageTypes.Warning, $"Could not open serial port: " + ex.Message);
            }
        }
Example #3
0
        public async Task OpenAsync(SerialPortInfo portInfo)
        {
            _serialPort = _deviceManager.CreateSerialPort(portInfo);

            await _serialPort.OpenAsync();

            StartListening();

            IsConected = true;
        }
        public async Task OpenAsync(ISerialPort serialPort)
        {
            _serialPort = serialPort;

            await _serialPort.OpenAsync();

            StartListening();
            ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessReceiveQueue), null);
            ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessSendQueue));

            IsConnected = true;
        }
Example #5
0
        public async override Task <bool> ConnectAsync()
        {
            try
            {
                await _port.OpenAsync();

                State   = States.Connecting;
                _reader = new StreamReader(_port.InputStream);
                _writer = new StreamWriter(_port.OutputStream);

                ReceiveDataAsync(_reader);
                State = States.Connected;
                return(true);
            }
            catch (Exception ex)
            {
                _logger.NotifyUserError("SerialPortChannel_ConnectAsync", ex.Message);
                return(false);
            }
        }