Названия визуальных новелл. Официальное описание протокола обмена по RS485 приборов фирмы ОВ. Протокола обмена между пэвм и приборами овен согласовано Начальник онр новиков И. В
Скачать 1.6 Mb.
|
4Уровень ПРЕДСТАВЛЕНИЯ протокола ОВЕН4.1Структура данныхБлок данных, принятый от канального уровня протокола, состоит из: • 16-битового локального идентификатора параметра (HASH-кода) • n-байт (от 0 до 15) поля данных 4.2Локальный идентификатор параметраЛокальный идентификатор параметра в протоколе ОВЕН представляет из себя Hash-свертку имени передаваемых параметров. 4.3Соглашение об именах параметровИспользуем 4-х символьные имена пользовательских параметров в виде следующего набора разрешенных символов: 1) 26 букв английского алфавита (от "A" до "Z") без различения строчных и прописных букв 2) 10 арабских цифр (от "0" до "9") Примечание: На 7-ми сегментном индикаторе начертание цифры "5" совпадает с начертанием буквы "S" 3) Следующие специальные символы: пробел "-" "_" "/" Итого - набор из 40 символов. Каждый символ может иметь или не иметь "при себе" точку, таким образом, количество кодовых комбинаций удваивается, и в именах можно будет использовать и точки, не занимая "отдельного" символьного места. Вышеозначенные символы кодируются (нумеруются) подряд идущими ЧЕТНЫМИ цифрами, начиная с 0000000b, причем сначала нумеруются символы-цифры ("0"..."9"), затем без перерыва в алфавитном (английский) порядке буквы (от "A" до "Z"), а затем специальные знаки "-", "_", "/" и, наконец, пробел. Символам с точкой присваивается код символа без точки, увеличенный на 1 (нечетные коды). Пример: "0" - 0000000b "0." - 0000001b "1" - 0000010b "1." - 0000011b ... "a"="A" - 0010100b "a."="A." - 0010101b Таким образом, имена "Comp", "comp", "COMP" будут относиться к одному и тому же параметру, но имена "com.P" или "Co.mp" являются уже именами других параметров и никак не связаны с первым параметром. Пробелы в имени возможны в рамках 4-х символов, но в конце имени. Далее с помощью хеширования имя параметра превращается в его локальный идентификатор, который в совокупности с адресом узла образуют глобальный идентификатор параметра (или сообщения). 4.4Преобразование из ASCII-кодов имени параметра в код символа (приведение)Преобразование из ASCII кодов (делается на PC перед hash-сверткой или внутри прибора): char ch; //преобразуемый ASCII символ char char_for_hash; //символ для обработки с помощью hash-функции int toupper(int c); //преобразование в символы верхнего регистра ch=toupper(ch); //преобразуем все в верхний регистр switch (ch) { case "0".."9": char_for_hash=ch-"0"; break; case "A".."Z": char_for_hash=ch-"A"+10; break; case "-":char_for_hash=10+26; break; case "_":char_for_hash=10+26+1; break; case "/":char_for_hash=10+26+2; break; case " ":char_for_hash=10+26+3; break; default: обработка_ошибки(); break; } char_for_hash*=2; //удвоить код символа if (за_ним_следует_точка) char_for_hash+=1; //прибавить 1 Также можно воспользоваться готовой таблицей (однако следует понимать, что работа с таблицей происходит медленнее):
При наличии точки после символа к его коду прибавляется единица. |