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

Я использую 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 содержит интерфейс к SDK от Microsoft, этот SDK не содержит прототипа _setmode ни в одном из включенных заголовочных файлов, хотя справочная ссылка на SDK содержит информацию оfunction.

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

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

Ответы [ 2 ]

1 голос
/ 21 августа 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, предложенный как ответ, как это было в Ball Ball Park. Спасибо @ Гэри.

0 голосов
/ 14 января 2012

Похоже, вы просто хотите открыть файл в формате 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.

...