Необходимо послать запрос термостату фирмы Huber с блоком управления СС3.
Протокол нестандартный, запрос в виде SP?<CR><LF>.
Каким образом отсылать спецсимволы <CR><LF> (#13#10).
Необходимо послать запрос термостату фирмы Huber с блоком управления СС3.
Протокол нестандартный, запрос в виде SP?<CR><LF>.
Каким образом отсылать спецсимволы <CR><LF> (#13#10).
Из книжки:
При необходимости помещения в строку кода, не имеющего печатного изображения, используется знак ($) и следующий за ним код из двух цифр в шестнадцатиричной системе исчисления.
Расшифруйте, что же вы хотели сказать, K.I.V? Надо осуществить преобразование степени счисления 16->10? Или что-то ещё?
Тоже не понял, что и во что вы хотите перевести? Поподробнее
да я хотел ... хочу ( просто отвлекли более важные дела ), может в понедельник продолжу и зря вас отвлекаю, но от помощи не откажусь ...
делаю протокол обмена по 485 :
- посылаю в hex запрос прибору
- прибор сразу отвечает n кол-вом байт в hex формате ( девять байт, из них 8-мь цифр с индикатора и один байт наверно положение точки ( постараюсь обойтись без точки, но может понадобиться)).
- на данной стадии принимаю в буфет какой-то бред
- но после решения (надеюсь) этой проблемы, надо как-то из это буфера с значениями полулить нормальное число в формате dec
пока своих мыслей нет, но если только взять пример с модемом, перевести в железо и гонять ...
зы понимаю, что не для этой темы, но суть описал ...
Если кто-нибудь поделился бы готовым понятным кодом (я делаю на ST), то жить станет легче.
зарание спасибо.
А описание протокола есть, можно посмотреть?
Или привидите пример запроса и ответа с прибора.
с протоколом конечно загнул, опрос ...
запрос : 10h
ответ: 3dh 20h 20h 20h 20h 32h 37h 20h 25h
(h - hex)
по идеи, аналог терминалки на пк...
Примерно так
var
bufer_ptr:POINTER TO BYTE;
valueWORD;
power10WORD:=1;
values_arr:ARRAY [1..10] of DWORD;
arr_index:BYTE:=1;
end_var
bufer_ptr:=str_incom;
for iter:=0 to len(str_incom) do
if bufer_ptr^>16#30 and bufer_ptr^<16#39 then
value:=value+(bufer_ptr^-16#30)*power10;
power10:=power10*10;
else
values_arr[arr_index]:=value;
arr_index:=arr_index+1;
value:=0;
power10:=1;
end_if
bufer_ptr:=bufer_ptr+1;
end_for
странно ... а полный текст можно?
здесь, слуайно, на выходе не цикл мгноеных значей должен получиться?
хотя у меня не полуаеться съесть всю сточку, а только первые 5-6 байт, допустим байт другой откиним, но пустшки "20h" пропадают - ну и ладно но число не собрать ...
Эх ... начал скчать по API ///