On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



ссылка на сообщение  Отправлено: 14.12.20 18:11. Заголовок: Проблема с UTF в NVRAM


Здравствуйте!

Вот такое вот объявление, само по себе, еще даже до обращения к массиву в программе:

#ENCODING_UTF16
NONVOLATILE STRING Name_Str_NVRAM[110][64];

приводит после прошивки, и затем дальнейших штатных перезагрузок процессора к ошибкам в лог-файле: "# SIMPL+: Could not load all variables from NVRAM. Variables could be incorrect"
Контроллер RMC3, прошивка предпоследняя, без триального Crestron ONE.

Если убрать #ENCODING_UTF16, то все на первый взгляд нормально (во всяком случае ошибка в логе исчезает), но тогда с данными не понятно что делать - мне нужно запоминать до 110 строк русских названий,
поступающих по массиву входных линий в модуль, по одной строке. Строки следуют не быстро, примерно через 0.5 сек. каждая. В отладчике видно, что строка приходит целиком.

Кстати, несмотря на ошибку с #ENCODING_UTF16, программа почти работает, только почему-то в первых 55 элементах содержатся правильные строки, а остальные
элементы пустые, хотя делается попытка занести данные во все 110 элементов массива.

Пробовал уменьшить размерность, но даже Name_Str_NVRAM[2][64] с UTF вызывает Could not load all variables from NVRAM. Variables could be incorrect.

Как вариант, можно попробовать сохранять строки в файл, имел опыт работы с конфигами (латиницей) в NVRAM.
Интересно, вывод в файл построчно UTF строк сработает, как думаете?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]





ссылка на сообщение  Отправлено: 16.12.20 09:44. Заголовок: Вот я пытался русски..


Вот я пытался русский текст и в файл, и в NVRAM писать, на выходе всегда вопросы были. Длина одинаковая. При чем в самой логике в переменной типа стринг русский сохраняется и нормально вызывается, а если вызывать из памяти, то тю-тю.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 16.12.20 09:55. Заголовок: всё что не ASCII 128..


всё что не ASCII 128бит - боль и страдания... и похоже это никак не меняется с годами :(

3 серия по определению UTF16 из-за C#, но из-за взятой за основу и навешанных костылей софтово/модульно (для совместимости с прошлым веком) 2 серию с ASCII, вечно вылазят косяки

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 16.12.20 10:11. Заголовок: Добрый день! А нет..


Добрый день!

А нет ли у Вас версии, почему первые 55 элементов массива Name_Str_NVRAM[110][64] в UTF16, из 110 элементов всего, сохраняются и выводятся в Xpanel нормально, а элементы 56-110 при считывании выводятся в отладчике как пустые?

Какая-то мысль крутится в голове, но никак не могу ее оформить. Будет сегодня время, попробую сделать типа контрольных точек побольше в программе, или может выгрузить все содержимое NVRAM (не диск!), это кажется через File Manager можно сделать ?

P.S. Кстати, вспомнил - пробовал делать массив меньше: Name_Str_NVRAM[55][64] - примерно первая половина элементов работает нормально, во второй половине - сбой. И вот тут я не уверен, что работали 25 элементов. Кажется, 28 элементов работали нормально, но это не точно. Точно, что во второй половине был сбой.

И еще - раньше я писал в NVRAM UTF-16 вот так: "ToASCII(Input_Str); // Convert from UTF16 - then correct store in NVRAM", нашел в старой программе. Без этого пару лет назад не работало.
Сейчас все и без этого как бы сохраняется и вызывается, но куда девается примерно половина - не понятно.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 16.12.20 10:25. Заголовок: ну он либо пишет оди..


ну он либо пишет один из двух байт, либо читает один из двух (ASCII 1 байт/UTF16 2 байта)

смахивает на какой то косяк с внутренней реализацией ковертов

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 20.12.20 19:28. Заголовок: Вам еще повезло, что..


Вам еще повезло, что много строк влазит в NVRAM. Я давно уже наступил на эти грабли. NVRAM в пределах одного модуля simpl+ стал иметь весьма серьезные ограничения по объему сохраненных данных.
Доходило до того ,что разбивал на разные модули по 2 строки в каждом (не помню точно по сколько символов, но не суть). Все что больше при перезагрузке терялись.
Потом забил на этот бред и стал хранить в файле. Проблемы ушли. По кодировке затрудняюсь сказать, но названия хранил и русские в том числе, с этим проблем не было.
Ну и сразу скажу, удобнее сохранять сразу структуру/массив структур. А потом её/их читывать. Со считывание массива структур прямо скажем по хэлпу было ни разу не понятно. Но на телеграмм канале, подсказали как делать и всё получилось. Задача в моем случае была, сохранить IPадрес, MACадрес, Название устройства
Теперь ждем проблем когда SD карта затрется

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 9
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет