Есть ли в LabWindows/CVI что-то похожее на _setmode() для установки режима трансляции файла (или потока) в двоичный или текстовый?

Я использую gSoap для создания исходного кода ANSI C, который я хотел бы создать в среде LabWindows/CVI в 64-разрядной ОС Windows 7. Файл gSoap stdsoap2.c включает несколько экземпляров функции _setmode() со следующим прототипом:

int _setmode (int fd, int mode);

Где fd — файловый дескриптор, а для режима установлено значение _O_TEXT или _O_BINARY.

Как ни странно, несмотря на то, что LW/CVI содержит интерфейс для Microsoft SDK, этот SDK не содержит прототипа _setmode ни в одном из включенных заголовочных файлов, несмотря на то, что справочная ссылка на SDK содержит информацию об этой функции.

Кто-нибудь знает о методе в LabWindows/CVI, используемом для установки режима перевода файла (или потока) в текст или двоичный файл.

Спасибо, Рюикер


person ryyker    schedule 12.07.2011    source источник
comment
Эммм, я думаю, это будет НЕТ =)   -  person ryyker    schedule 03.08.2011


Ответы (2)


Похоже, вы просто хотите открыть файл как ASCII или двоичный. Таким образом, вы должны иметь возможность заменить экземпляры _setmode() функцией LW/CVI OpenFile(), как описано здесь. Вот краткий пример чтения файла как двоичного.

char filename = "path//to//file.ext"
int result;
result = OpenFile(filename, VAL_READ_ONLY, VAL_OPEN_AS_IS, VAL_BINARY); 

if (result < 0)
    // Error, notify user.
else
    // No error.

Также обратите внимание на это предупреждение со страницы:

Внимание Windows SDK также содержит функцию OpenFile. Если вы включите windows.h и не включите formatio.h, вы получите ошибки компиляции при вызове OpenFile.

person gary    schedule 14.01.2012
comment
Извините за долгую задержку, но я хотел бы закрыть петлю здесь. Я уже давно решил проблему. Причина, по которой я не смог воспользоваться вашим предложением (хотя для большинства сценариев это было хорошим предложением), заключалась в том, что я использую генератор кода gsoap, поэтому не могу легко решить вручную изменить автоматически сгенерированный код, не усложняя ситуацию каждый раз. мы заново генерируем. То, что я наконец сделал, перечислено в моем кратком ответе ниже. - person ryyker; 21.08.2013

Замыкание цикла по этому вопросу.
Я не мог использовать единственный предложенный ответ по причине, указанной в моем комментарии выше.
Хотя я использовал SDK, это было не для выбора другой версии функции OpenFile, скорее это была поддержка использования функции, которую использовал генератор автоматического кода, _setmode(), но она не поддерживалась моей основной средой разработки (LabWindows/CVI).

Таким образом, мое решение БЫЛО включать SDK, чтобы дать мне определение для _setmode, а также включение следующего в мой неавтоматически сгенерированный код:

#define _O_TEXT         0x4000  /* file mode is text (translated) */     
#define _O_BINARY       0x8000  /* file mode is binary (untranslated) */

Итак, с оговоркой, что этот пост описывает то, что я на самом деле сделал, я собираюсь отметить ответ, предложенный @gary, как ответ, как это было на стадионе. Спасибо @gary.

person ryyker    schedule 21.08.2013