示例#1
0
        /// <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();
        }
示例#4
0
 public XsanDevice(string Serial, ProtocolUSBBase dec)
     : base(Serial, dec, new USBCfg(10))
 {
 }