формирование двоичного файла

Вопросы, не попадающие в другие разделы.

формирование двоичного файла

Сообщение golportret » Чт янв 21, 2010 7:10 am

Уважаемые коллеги, подскажите, плиз, как сформировать и записать на диск двоичный файл. Проблема в том, что, например, не работает ф-ия StringChar(0) - т.е. я не могу записать в строку байт, равный 0!((
Спасибо.
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение alex3000plus » Чт янв 21, 2010 4:00 pm

А что Вы ожидали вернет эта функция? Просто по-моему нет такого символа, это вроде конец строки.
alex3000plus
 
Сообщения: 15
Зарегистрирован: Пн дек 07, 2009 10:23 pm

Сообщение golportret » Чт янв 21, 2010 4:23 pm

alex3000plus писал(а):А что Вы ожидали вернет эта функция? Просто по-моему нет такого символа, это вроде конец строки.


Конец строки - это #13.
А ожидал записи в файл байта с нулевым значением - простой такой байт, где все биты - нули! :)
Тем более, что в доке указан диапазон допустимых входных значений функции StringChar - 0-255. Хочу сформировать двоичный файл, где каждый байт может принимать значения от 0 до 255.
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение alex3000plus » Чт янв 21, 2010 5:55 pm

Не, #13 - это возврат каретки (переход в начало строки).
Про доки согласен, там так написано. Но я бы у того, кто писал эти доки и функции спросил бы тоже самое.

А Вы уже пытались писать в файл? Какой функцией? Другие непечатные символы пишутся? Я ща точно не могу сказать, но мне кажется, что средствами интача такое может и не получиться.
alex3000plus
 
Сообщения: 15
Зарегистрирован: Пн дек 07, 2009 10:23 pm

Сообщение golportret » Пт янв 22, 2010 2:52 am

alex3000plus писал(а):Не, #13 - это возврат каретки (переход в начало строки).
Про доки согласен, там так написано. Но я бы у того, кто писал эти доки и функции спросил бы тоже самое.

А Вы уже пытались писать в файл? Какой функцией? Другие непечатные символы пишутся? Я ща точно не могу сказать, но мне кажется, что средствами интача такое может и не получиться.


Пытался, ф-ия: FileWriteMessage - их всего 2 - 2-я пишет данные, разделённые запятыми. В ИнТаче это, кажется, просто баг(( Казалось бы для бинарного файла не должно быть разницы 0 или, к примеру 224?
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение golportret » Пт янв 22, 2010 4:49 am

alex3000plus писал(а):Другие непечатные символы пишутся?


В файл пишутся все остальные 255 символов в диапазоне 1-255, InTouch боится/чурается/не понимает только 0! :shock:
Странно, человечество изобрело 0 уже очень давно - почему в Wonderware ещё об этом не знают? :D
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение golportret » Пт янв 22, 2010 6:04 am

Ситуация оказывается ещё безнадёжнее, чем представлялась: при получении из ОРС-сервера строки, содержащей двоичные нули - все символы после этого двоичного нуля - игнорируются... :evil:
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение Klinkmann_Msk » Пт янв 22, 2010 9:38 am

To golportret:
Как я уже сказал, можно воспользоваться техподдержкой непосредственно WW.
Для этого киньте заявку мне (Mikhail.Gurov@Klinkmann.SPb.ru), а я её переправлю (куда-нибудь :twisted: )
Обязательно укажите свои контактные данные (компания, отдел, должнось, контакты,...), т.к. наша компания не работает с анонимами.
Письма с корпоративных адресов приветствуются :) А всякие Mail.ru оседают в спам-фильтре :)
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение golportret » Пт янв 22, 2010 10:31 am

Klinkmann_Msk писал(а):To golportret:
Как я уже сказал, можно воспользоваться техподдержкой непосредственно WW.
Для этого киньте заявку мне (Mikhail.Gurov@Klinkmann.SPb.ru), а я её переправлю (куда-нибудь :twisted: )
Обязательно укажите свои контактные данные (компания, отдел, должнось, контакты,...), т.к. наша компания не работает с анонимами.
Письма с корпоративных адресов приветствуются :) А всякие Mail.ru оседают в спам-фильтре :)


Интересно, а что - техподдержка баги уберёт? :wink:
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение Klinkmann_Msk » Пт янв 22, 2010 10:33 am

To golportret:
У них может быть "заплатка" или посоветуют что-либо "умное" :)
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Spaun » Сб янв 23, 2010 11:19 am

Если честно, непонял в чём вопрос и собственно проблема?
StringChar() возвращает символ, соответствующий ASCII коду.
ASCII код 0 это 48
ASCII код 1 это 49 и т.д. и т.п.

Пишем StringChar( 48 ) - получаем в тексте 0,
пишем StringChar( 49 ) - получаем в тексте 1
пишем StringChar( 13 ) - получаем аналог нажатия "Enter"

для обратного используем StringASCII()
Spaun
 
Сообщения: 105
Зарегистрирован: Вс ноя 29, 2009 10:35 am

Сообщение golportret » Вс янв 24, 2010 4:55 pm

Spaun писал(а):Если честно, непонял в чём вопрос и собственно проблема?
StringChar() возвращает символ, соответствующий ASCII коду.
ASCII код 0 это 48
ASCII код 1 это 49 и т.д. и т.п.

Пишем StringChar( 48 ) - получаем в тексте 0,
пишем StringChar( 49 ) - получаем в тексте 1
пишем StringChar( 13 ) - получаем аналог нажатия "Enter"

для обратного используем StringASCII()


Что же вы, уважаемый не продолжили? :x StringChar(0)?
На самом деле ситуация такая (подсказали добрые люди): в InTouch строка - это StringChar(i), где i в диапазоне 1-255, и это принципиально, по определению и т.п. 0 - это признак конца строки - и это везде!((
Печаль высказана, потому как при приёме данных из ОРС-сервера, когда в качестве одного из значащих символов поступает двоичный ноль, то приём благополучно завершается(( По моему мнению, это жуткий недостаток InTouch, хотя во многих отношениях это хорошая Скада.
golportret
 
Сообщения: 12
Зарегистрирован: Чт янв 21, 2010 3:08 am

Сообщение Spaun » Пн янв 25, 2010 6:48 am

Это не баг.
ASCII состоит из:
1.Стандартного набора символов (от 0 до 127),назначенных буквам, цифрам, знакам препинания и самым употребляемым специальным символам;
Значениями 0-32 и 127 закодированы непечатаемые символы. Они не имеют графического представления;
2.Расширенного набора символов (от 128 до 255), представляющих дополнительные специальные, математические, графические и иностранные символы.
Spaun
 
Сообщения: 105
Зарегистрирован: Вс ноя 29, 2009 10:35 am

Сообщение Klinkmann_Msk » Пн янв 25, 2010 8:43 am

To golportret:
0 - это признак конца строки - и это везде!
Только там, где используются C-строки, так называемые Null-Terminated. А есть ещё и Pascal-строки :)
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1