/// <summary> /// Создает процессы по чтению данных из USB и декодированию этих данных /// Все, что нужно, для обеспечения связи по USB /// </summary> /// <param name="serial">Серийный номер USB устройства, с которого нужно получать данные</param> /// <param name="dec">Класс декодера, который нужно использовать в приборе</param> /// <param name="cfg">Конфигурация драйвера USB (настройка параметров потока, буферов чтения и тд)</param> public Device(string serial, ProtocolUSBBase dec, USBCfg cfg) { _dec = dec; _cfg = cfg; _fThread = new FTDIThread(serial, _cfg); _fThread.StateChangeEvent = OnDevStateChanged; _dThread = new ProtocolThread(_dec, _fThread); }
/// <summary> /// Основной конструктор потока декодера. Используется по-умолчанию, если читаем данные из USB /// </summary> /// <param name="dec">Декодер, который будем использовать</param> /// <param name="fThread">Поток, из которого получаем данные для декодирования</param> public ProtocolThread(ProtocolUSBBase dec, FTDIThread fThread) { _dec = dec; _resetDecoderFlag = false; _maxBufferSize = 0; _fThread = fThread; _fStream = null; _terminateFlag = false; _thread = new Thread(Execution); _thread.IsBackground = true; _thread.Start(); }
/// <summary> /// Дополнительный конструктор потока декодера. Используется, если нужно декодировать данные из любого объекта Stream /// </summary> /// <param name="dec">Декодер, который будем использовать</param> /// <param name="fStream">Stream, откуда будем брать данные для декодирования</param> public ProtocolThread(ProtocolUSBBase dec, Stream fStream) { _dec = dec; _fStream = fStream; // проверим, что поток может читать if (_fStream.CanRead == false) { // TODO } _thread = new Thread(ExecutionStream); _thread.Start(); }
public XsanDevice(string Serial, ProtocolUSBBase dec) : base(Serial, dec, new USBCfg(10)) { }