Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2012, 05:30   #11
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Печаль

Цитата:
Сообщение от raxp Посмотреть сообщение


в запросе всего 8 байт, т.е. формируете массив, заполняете его (как заполнять ссылку давал в личке) и отсылаете через WriteFile().

это значит, что второй, третий и четвертый байт в пакете нужно поразрядно инвертировать через xor:
Код:
var mas: array[0..7] of byte;
...
mas[2]:= mas[2] xor $FF;
mas[3]:= mas[3] xor $FF;
mas[4]:= mas[4] xor $FF;
если под "нормальными" байтами имеется ввиду неизмененные байты в пакете, т.е. нулевой (DEL) и пятый (или 6) байт (ETX), ведь 1 байт - стоповый (нельзя), 2-4 - измененные ("ненормальные"), то их:
Код:
function CRC(BufferData: TDataByte): byte;
const polinomio: byte= $40;
begin
 result:= (BufferData[0] xor BufferData[5]) or polinomio
end;
Как правильно вручную задать команду на устройство? Примеров с инэта перепробовал уйму, но результат 0-вой, будь-те любезны помочь составить команду...
Код:
 procedure TForm1.Button1Click(Sender: TObject);
const polinomio: byte = $40;
var
mas:array[0..7] of byte;
Str:string;
i:integer;
j:integer;
begin
mas[0]:=(127);      //DEL ASCII 
mas[1]:=ord(^B);  //аналогично ord(char('STX'))...

mas[2]:=((ord(Char('Q'))) xor $FF)); // не разобрался, как работает, поч $FF? насколько я понял сравнение, то есть массив 2 раза заполнять   
                                                    //нужно и сравнивать?
mas[3]:=(ord('9') xor $FF);             // ---\\---
mas[4]:=(ord('ETX')  XOR $FF);
mas[5]:=ord('ETX');
mas[6]:= (mas[0] xor mas[5]) or polinomio; //контр. сумма и смещения ?
....
for i:= 0 to 7 do
  ComPort1.WriteStr(Char(mas[i]));
Объясните пожалуйста....

Знаю что написал ахинею, //mas[2]:=((ord(Char('Q'))) xor $FF));

примеров с инэта много перерыл.... но вообще действительно никак...

Последний раз редактировалось NewMember; 31.03.2012 в 07:29.
NewMember вне форума Ответить с цитированием
Старый 31.03.2012, 09:32   #12
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
По умолчанию

raxp, объясните пожалуйста..
NewMember вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 2009 - проблема с установкой компонента TComPort cadil Компоненты Delphi 8 05.09.2010 03:27
RS232, Библиотека Игоря Павлова TComPort xBugiman Компоненты Delphi 11 12.06.2010 13:41
Delphi 2009: проблема с работой компоненты TComPort cadil Компоненты Delphi 10 01.04.2010 10:55