private void SetTimeouts() { if (IsOpen) { CommTimeouts ct = new CommTimeouts(); ct.ReadIntervalTimeout = readTimeout; ct.ReadTotalTimeoutMultiplier = 1; ct.ReadTotalTimeoutConstant = 0; ct.WriteTotalTimeoutConstant = writeTimeout; ct.WriteTotalTimeoutConstant = 0; if (!SetCommTimeouts(comPortHandle, ref ct)) { throw new IOException("Error setting timeouts"); } } }
static extern bool SetCommTimeouts(IntPtr hFile, [In] ref CommTimeouts lpCommTimeouts);
private void Initialize() { _ReadSafeFileHandle = ApiService.CreateReadConnection(DeviceId, FileAccessRights.GenericRead | FileAccessRights.GenericWrite); if (_ReadSafeFileHandle.IsInvalid) { return; } var dcb = new Dcb(); var isSuccess = ApiService.AGetCommState(_ReadSafeFileHandle, ref dcb); WindowsDeviceBase.HandleError(isSuccess, Messages.ErrorCouldNotGetCommState); dcb.ByteSize = _ByteSize; dcb.fDtrControl = 1; dcb.BaudRate = (uint)_BaudRate; dcb.fBinary = 1; dcb.fTXContinueOnXoff = 0; dcb.fAbortOnError = 0; dcb.fParity = 1; switch (_Parity) { case Parity.Even: dcb.Parity = 2; break; case Parity.Mark: dcb.Parity = 3; break; case Parity.Odd: dcb.Parity = 1; break; case Parity.Space: dcb.Parity = 4; break; default: dcb.Parity = 0; break; } switch (_StopBits) { case StopBits.One: dcb.StopBits = 0; break; case StopBits.OnePointFive: dcb.StopBits = 1; break; case StopBits.Two: dcb.StopBits = 2; break; default: throw new ArgumentException(Messages.ErrorMessageStopBitsMustBeSpecified); } isSuccess = ApiService.ASetCommState(_ReadSafeFileHandle, ref dcb); WindowsDeviceBase.HandleError(isSuccess, Messages.ErrorCouldNotSetCommState); var timeouts = new CommTimeouts { WriteTotalTimeoutConstant = 0, ReadIntervalTimeout = 1, WriteTotalTimeoutMultiplier = 0, ReadTotalTimeoutMultiplier = 0, ReadTotalTimeoutConstant = 0 }; isSuccess = ApiService.ASetCommTimeouts(_ReadSafeFileHandle, ref timeouts); WindowsDeviceBase.HandleError(isSuccess, Messages.ErrorCouldNotSetCommTimeout); }
private static extern int WinSetCommTimeouts(IntPtr hFile, CommTimeouts timeouts);
override internal bool SetCommTimeouts(IntPtr hPort, CommTimeouts timeouts) { return(Convert.ToBoolean(WinSetCommTimeouts(hPort, timeouts))); }
private static extern int SetCommTimeouts(int hFile, ref CommTimeouts lpCommTimeouts);