MAX_PUMPS = 32; // One side of a pump
MAX_NOZ_PUMP = 4; // Nozzles per pump
function getData(pump:integer; nozzle:integer):string;
var
rcv:string;
loc,byte:integer;
begin
loc := (pump-1)*MAX_NOZ_PUMP+nozzle; // Location of nozzle
byte := loc div 100; // Hi byte
result := chr((byte div 10)*16+(byte mod 10));
byte := loc mod 100; // Lo byte
result := result + chr((byte div 10)*16+(byte mod 10));
tcp.Write(#$22 + #$02 + result); // Communicate with VSU
end;
честно говоря уже все волосы на жопе изодрал. не имел дело с Дельфи, поэтому прошу вас помочь.
Программа передают данные при помощи tcp сокета.
Вопросы вот такие:
1)#$22 - что означает два символа перед значением?
2)Чему будет равен конечным result при pump равный единице в младшем байте или единице в старшем?(на сколько я понимаю pump в данном случае является integer и может иметь значение либо в младшем либо в старшем байте(не знаю как реализовал программист)
меня интересует, что будет в конечном result?
3)result := result + chr((byte div 10)*16+(byte mod 10)); - как это работает и главное зачем? Зачем складывать два chr( )???
p.s. по последнему. Смысл в том что мы делаем запрос. 22 - это код запроса. 2 это сколько байт после этой цифры идем с данными. Смысл в том что в result должно быть число номера требуемой ячейки. Есть 32 станции, на каждой по 4 пистолета. Вот каким то макаром надо находить требуемую ячейку...
Сообщение изменено: ossesion (16 февраля 2012 - 20:54 )