alexs писал(а):Можно поподробнее?
Пример (примерный) ответа на GetStatus он там вначале посылает текущую уст. дату и время, дк вот если в этом ответе например время будет 13:10:23, то касса пришлет в таком виде 13 10 10 23 (это уже смещение на один), а если еще в дата будет - 10-03-13 то касса пришлет такое 10 10 10 03 13 и это еще смещение на два. Вот потом и получается что мы не правильно считаем данные в свои переменные(например ту же дату уже неправильно считаем если не сделаем размаскировку)
Там в описании драйвера сказано что нужно делать маскировку отправляемых данных на ККМ, но ни чего не сказано про размаскировку получаемых ответов.
Так вот, загвоздка как раз в этом и была, что необходимо выполнять как бы маскировку только в обратную сторону.
В вашей компоненте маскировку отправляемых данных выполняет функция
function TAtollKKM.MakeCommand(AData: string): string;
Я эту так сказать размаскировку выполнил вот так:
- Код: Выделить всё
Function DeMask(AData: Ansistring): Ansistring;
Var
i: Integer;
B: Byte;
DLE_Flag: Boolean;
Begin
Result := '';
DLE_Flag := False;
For i := 1 To length(AData) Do
Begin
If DLE_FLag Then
DLE_Flag := False
Else
If AData[i] = sDLE Then
Begin
If i < length(AData) Then
If AData[i + 1] In [sDLE, sETX] Then
Begin
Result := Result + AData[i + 1];
DLE_Flag := True;
End;
End
Else
Result := Result + AData[i];
End;
End;
И после этого все заработало как часы