/// <summary> /// Create SerialPort with specified underlying stream/streamCtrl objects. /// </summary> /// <param name="stream"></param> /// <param name="streamCtrl"></param> public SerialPort(Stream stream, ISerialStreamCtrl streamCtrl) { _isUserProvidedStream = true; _stream = stream; _streamCtrl = streamCtrl; _streamCtrl.ErrorEvent += new SerialErrorEventHandler(ForwardErrorEvents); _streamCtrl.PinChangedEvent += new SerialPinChangedEventHandler(ForwardPinChangedEvents); _streamCtrl.ReceivedEvent += new SerialReceivedEventHandler(ForwardReceivedEvents); }
/// <summary> /// Closes the port connection, sets to false and disposes of the internal Stream object. /// </summary> public void Close() { if( IsOpen ) { _stream.Flush(); _stream.Close(); _stream = null; _streamCtrl = null; } }
/// <summary> /// Opens a new serial port connection. /// </summary> public void Open() { if( IsOpen ) throw new InvalidOperationException("Port is already open"); if( IsUserProvidedStream ) throw new InvalidOperationException("User Provided Stream cannot be re-opened"); if( SerialStreamSocket.IsCompatible( _portName )) { SerialStreamSocket devStream = SerialStreamSocket.CreateInstance( _portName ); _stream = (Stream) devStream; _streamCtrl = (ISerialStreamCtrl) devStream; } else { WinStream devStream = new WinStream( _baudRate, _dataBits, _discardNull, _dtrEnable, _handshake, _parity, _parityReplace, _portName, _readBufferSize, _readTimeout, _receivedBytesThreshold, _rtsEnable, _stopBits, _writeBufferSize, _writeTimeout ); _stream = (Stream) devStream; _streamCtrl = (ISerialStreamCtrl) devStream; _streamCtrl.ErrorEvent += new SerialErrorEventHandler(ForwardErrorEvents); _streamCtrl.PinChangedEvent += new SerialPinChangedEventHandler(ForwardPinChangedEvents); _streamCtrl.ReceivedEvent += new SerialReceivedEventHandler(ForwardReceivedEvents); } }
/// <summary> /// Create SerialPort with specified underlying stream/streamCtrl objects. /// </summary> /// <param name="stream"></param> /// <param name="streamCtrl"></param> public SerialPort( Stream stream, ISerialStreamCtrl streamCtrl ) { _isUserProvidedStream = true; _stream = stream; _streamCtrl = streamCtrl; _streamCtrl.ErrorEvent += new SerialErrorEventHandler(ForwardErrorEvents); _streamCtrl.PinChangedEvent += new SerialPinChangedEventHandler(ForwardPinChangedEvents); _streamCtrl.ReceivedEvent += new SerialReceivedEventHandler(ForwardReceivedEvents); }