public ISerialPort Create(SerialDeviceType device) { if (_serialDevices.ContainsKey(device) && null != _serialDevices[device]) { return(_serialDevices[device]); } ISerialPort _serialPort = null; switch (device) { case SerialDeviceType.LoRa: _serialPort = new LoRaSerial(); break; case SerialDeviceType.BTLe: _serialPort = new BTLESerial(); break; } if (null != _serialPort) { _serialDevices[device] = _serialPort; } return(_serialPort); }
public BaudRateSettings( SerialDeviceType deviceType, int desiredBaud, double actualBaud, string setting ) { DeviceType = deviceType; TargetRate = desiredBaud; ActualBaud = actualBaud; PercentError = ComputePercentError(desiredBaud, actualBaud); Setting = setting; }
/// <summary> /// Compute some parameters for baud generators. /// Some devices, such as PIC32, require a clock rate. /// Others, such as FTDI chips, have pre-specified clock rates /// </summary> /// <param name="deviceType"></param> /// <param name="desiredBaud"></param> /// <param name="clockRate"></param> /// <returns></returns> public static BaudRateSettings Compute(SerialDeviceType deviceType, int desiredBaud, int clockRate = 0) { switch (deviceType) { case SerialDeviceType.PIC32: return(ComputePic32Parameters(desiredBaud, clockRate)); case SerialDeviceType.FtdiLow: return(ComputeFtdiLowParameters(desiredBaud)); case SerialDeviceType.FtdiHigh: return(ComputeFtdiHighParameters(desiredBaud)); default: throw new NotImplementedException("Unknown serial device type " + deviceType); } return(null); }