Вы можете использовать fstream
, но вам нужно будет посмотреть спецификации того, как ваше устройство хотело бы получать данные. Некоторые устройства будут в порядке, используя данные ASCII, другим устройствам потребуется определенная двоичная последовательность битов / байтов данных. Возможно, вам также придется написать собственные объекты сериализации, которые перегружают функции operator<<
и operator>>
для данных, которые вы пытаетесь записать. Либо так, либо вы могли бы использовать методы read()
и write()
для чтения / записи необработанных двоичных данных из / в буферные массивы, выделенные в вашей программе.
Редактировать : если вас беспокоит поведение блокировки, у вас есть два варианта. Вам нужно будет либо использовать POSIX API, и проверить открытый дескриптор файла с помощью poll()
или select()
, чтобы узнать, доступны ли данные, либо вам придется поддерживать любые вызовы записи или чтения файлов в наборе отдельные потоки, которые могут в основном действовать как асинхронные действия чтения / записи. Таким образом, вы в основном отправляете сообщение потоку чтения / записи, и этот поток блокирует при необходимости вызовы fstream
, однако остальная часть вашей программы может продолжать функционировать. Возможно, ваша программа не предназначена для потоков, и если это так, то POSIX API был бы единственным выходом.