Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Серийный номер E14-440

Вы не вошли.

 Поиск | Регистрация | Вход 

04.11.2014 09:03:49
#1

Участник
Здесь с 26.10.2014
Сообщений: 10

Серийный номер E14-440

Здравствуйте
Считываю серийный номер на модуле E14-440.
В библиотеке для считывания серийного номера используется BYTE[16]
сам номер состоит 8 символов т.е. 8 байт. А оставшаяся информация в 8 байт это, что???
и как ее интерпретировать. В инструкции по программированию я ничего не нашел.
Да еще хочу указать на не точность в документации. файл e14_440_programmers_guide.pdf
стр. 18 пример:
if(!pModule->MODULE_TEST())
{
printf("Не выполнена функцияMODULE_TEST()!");
return 1;  //выйдем из программы с ошибкой
}
Написано MODULE_TEST()
А в библиотеке lusbapi вызов осуществляется как TEST_MODULE()

05.11.2014 11:08:19
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,488

Re: Серийный номер E14-440

1.

Считываю серийный номер на модуле E14-440.
В библиотеке для считывания серийного номера используется BYTE[16]
сам номер состоит 8 символов т.е. 8 байт. А оставшаяся информация в 8 байт это, что???

Можно полагать, что оставшаяся часть массива зарезервирована.
2.

Написано MODULE_TEST()
А в библиотеке lusbapi вызов осуществляется как TEST_MODULE()

Спасибо, подправим.

05.11.2014 13:17:39
#3

Участник
Здесь с 26.10.2014
Сообщений: 10

Re: Серийный номер E14-440

Тогда еще один вопрос.
На большинстве модулей ЛКард серийный номер прошит как 8 байт или только E14-440?

05.11.2014 13:23:36
#4

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,293

Re: Серийный номер E14-440

Вообще обычно поле серийного номера - оканчивающаяся нулем строка (в смысле символом с кодом 0, а не символом '0'). Надо понимать, что то, что сейчас серийный номер из 8 символов не значит, что потом этих символов не может стать больше. Т.е. если поле на 16 то Вы в программе должны быть готовы, что серийный номер может быть по крейней мере из 15 символов + завершающий символ с кодом 0.

05.11.2014 19:14:27
#5

Участник
Здесь с 26.10.2014
Сообщений: 10

Re: Серийный номер E14-440

Все понял спасибо.

06.11.2014 12:12:04
#6

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Серийный номер E14-440

Алексей L Card пишет:

Вы в программе должны быть готовы, что серийный номер может быть по крейней мере из 15 символов + завершающий символ с кодом 0.

...а чтобы было совсем красиво - быть готовы, что нуля может и не быть (использовать функции с органичением длины наподобие strncpy).
Вообще null-terminated строковые поля фиксированной длины обычно бывают двух типов: с обязательным нулем и без. Поле char[N] с необязательным нулем может содержать все N символов, т.е. подразумевается неявный нуль за концом массива.
Поле char[N] с обязательным нулем может содержать до N-1 полезных символов, и в таких случаях проще всего перед обработкой строки принудительно обнулить последний байт на случай, если данные некорректны.
В целом при работе с данными, пришедшими в программу снаружи (введенными пользователем, считанными из файла, пришедшими по сети и т.п.) не стоит делать каких-либо допущений об их корректности, если из-за этого может нарушиться работа программы. Львиная доля уязвимостей в безопасности - именно такой природы.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск