Я бы сделал то, что делает мрр 888.
В основном у вас есть 2 фоновых рабочих, один из которых читает с аппаратного устройства.тот, который записывает данные на диск.
Аппаратный фоновый рабочий:
Добавляет фрагменты данных с оборудования в Очередь <> .В каком бы формате вы ни использовали его.
Запись фонового рабочего
Анализирует данные, если необходимо, и создает дамп на диск.
Здесь нужно учестьданные с аппаратного обеспечения на диск так быстро, насколько это возможно, важны?
Если да, то я бы устроил тестирование области записи в основном в цикле с циклом ожидания 100 мс или 10 мс в цикле while с проверкой наличия данных в очереди.
Если нет, то я хотел бы, чтобы он либо находился в спящем режиме (исходя из предположения, что скорость, которую вы получаете от вашего оборудования, периодически меняется), и выполнял бы запись на диск только тогда, когда он содержит около 50-60 МБ данных.Я бы подумал сделать это таким образом, потому что современные жесткие диски могут записывать около 60 Мбайт / с (это жесткий диск для настольного компьютера, твой процесс может быть гораздо быстрее), а постоянная запись данных на него небольшими порциями - пустая трата пропускной способности ввода-вывода.