|
#1
|
|||
|
|||
Hex-данные
Всем добрый день! Имеется следующая проблема. Реализую код на Delphi 2010, посредством которого на com-порт записываются данные в шестнадцатеричном виде. В частности, если использовать библиотеку COmPort Library, то синтаксис такой:
comport1.Writestr(#$ff+#$ff+#$01+#$01+#$06.... проблема состоит в том, что например в конце этих данных требуется контрольная сумма блока данных, который тоже меняется. Как мне записать уже посчитанные HEX данные? Посчитать их не проблема, но на выходе получится или integer (в десятичном виде) или Hex как стринговая переменная. Побывал переводить НЕХ в стринг, и записывать соответствующие этим НЕХ кодам символы но возникают проблемы с некоторыми числами (например delphi не сопоставляет символ коду AF и т.д.). |
#2
|
||||
|
||||
Ну это вряд-ли он не сопоставляет. Разницы никакой, запишете вы #$af или #175. Возможно имеет место неправильная обработка кодировки строки в D2010, там-же блин юникод, мать его...
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Да,там мать его юникод =) Ну а можно ли как-то получить из суммы чисел это AF (например) и отправить его командой writestr($#AF...) ну или writestr($175...), без применения преобразований в обычную стринговую переменную?
|
#4
|
|||
|
|||
Вот Вам мой Int to Hex, у которого на выходе не строка
Код:
function convert(input : integer) : integer; var temp0, temp1 : integer; begin temp1 := input shr 4; if temp1 > 9 then result := 255; // error temp0 := input and $0F; if temp0 > 9 then result := 255; // error result := 10 * temp1 + temp0; end; |
#5
|
|||
|
|||
Спаибо. Там правда другие проблемы возникают, но это уже специфика. Пришлось писать сложнее, чем у Вас
|