![]() |
|
|
#1
|
|||
|
|||
|
Всем добрый день! Имеется следующая проблема. Реализую код на 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
|
|||
|
|||
|
Спаибо. Там правда другие проблемы возникают, но это уже специфика. Пришлось писать сложнее, чем у Вас
|