Конференция "WinAPI" » Купюроприемник CashCode, протокол ccnet [D7, WinXP]
 
  • имя (26.06.07 23:33) [40]
    Удалено модератором
  • malor (04.07.07 11:23) [41]
    Несколько вопросов по "Описанию протокола CCNET", как переводятся слова/фразы:
    Bill-to-Bill unit
    Coin Changer
    escrow
    Cassete
    recycling
  • anonym (19.10.07 18:00) [42]
    Алекс_ТК синхронизация для потока нужна
  • Alexccc (30.10.07 12:10) [43]
    Товарищи подскажите пожайлуста, что делать, купюрник не хочет брать денюжку-выплёвывает, а если надовить сверху то берет (иногда), и время от времени пишит "зажевана купюра" CashCode PartNo: MSM-3005KZ2101
  • Felan (06.12.07 09:05) [44]
    Может кто сталкивался и может объяснить пару моментов с купюрником SM-2073RU1615.

    1 Чем отличается в команде ENEBLE_BILL_TYPES разрешенные купюры и купюры разрешенные для ESCROW;

    2 Почему при установки повышенного уровня защиты для типов купюр командой SET_SECURITY получаем ответ ACK.
    Т.е. команда выполнена, но при попытки прочитать эти данные командой GET_STATUS получаем, что у всех купюр обычный уровень защиты.

    На всякий случай вот полный лог обмена:

    [TBillValidatorAPI] Окрыт порт 1
    [TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_GET_STATUS
    [TBillValidatorAPICMD_GET_STATUS] Создана команда TBillValidatorAPICMD_GET_STATUS <02 03 06 31 C8 A2>
    [TBillValidatorAPI] Получен первый блок <02 03 0B>
    [TBillValidatorAPI] Получен второй блок <00 00 00 00 00 00 A8 67>
    [TBillValidatorAPICMD_GET_STATUS] Парсинг ответа TBillValidatorAPICMD_GET_STATUS <02 03 0B 00 00 00 00 00 00 A8 67>
    [TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_ACK
    [TBillValidatorAPI] ACK/NAK Timeout <200>

    >>> Здесь получили, что у купюрника не установлены биты повышенной защиты

    [TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_SET_SECURITY
    [TBillValidatorAPICMD_SET_SECURITY] Создана команда TBillValidatorAPICMD_SET_SECURITY <02 03 09 32 80 00 FC 29 2E>
    [TBillValidatorAPI] Получен первый блок <02 03 06>
    [TBillValidatorAPI] Получен второй блок <00 C2 82>
    [TBillValidatorAPICMD_SET_SECURITY] Парсинг ответа TBillValidatorAPICMD_SET_SECURITY <02 03 06 00 C2 82>

    >>> Установли повышенную защиту для всех купюр кроме купонов.

    [TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_GET_STATUS
    [TBillValidatorAPICMD_GET_STATUS] Создана команда TBillValidatorAPICMD_GET_STATUS <02 03 06 31 C8 A2>
    [TBillValidatorAPI] Получен первый блок <02 03 0B>
    [TBillValidatorAPI] Получен второй блок <00 00 00 00 00 00 A8 67>
    [TBillValidatorAPICMD_GET_STATUS] Парсинг ответа TBillValidatorAPICMD_GET_STATUS <02 03 0B 00 00 00 00 00 00 A8 67>
    [TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_ACK
    [TBillValidatorAPI] ACK/NAK Timeout <200>

    >>> А здесь нам говорят, что нифига не установлено...

    Может я чего делаю не так???
  • Ravenlord (29.05.08 18:46) [45]
    Реализую независимый от Кешкодовской ДДЛки модуль работы с купюроприемником Cashckode. Тип протокола ID003.
    Возникла проблема при нахождении контрольной суммы пакета

    В тех. мануале описана функция нахождения СRC как P(x)=x^14+x^12+x^5+1… Вот только не понятно.. что такое X  в условии формата пакета [FCh][LNG][DATA Bytes][CRC]
  • Ravenlord (30.05.08 17:26) [46]
    После расспроса тех. поддержки - получил версию функции на С.
    Привожу вариант, адаптированный под Delphi

    var
    inter_crc_l:byte;
    inter_crc_h:byte;

    const polinom:integer = $8408;

    procedure calc_crc(b:byte)
    var
    i,c:byte;
    temp_crc:uint;
    begin
    inter_crc_l := inter_crc_l xor b;
    temp_crc := inter_crc_h;
    temp_crc := temp_crc shl 8;
    temp_crc := temp_crc or inter_crc_l;
    for i:=0 to 7 do begin
     c := temp_crc and $01;
     temp_crc := temp_crc shr 1;
     if c>0 then temp_crc := temp_crc xor polinom;
    end;
    inter_crc_h := temp_crc shr 8;
    inter_crc_l := temp_crc;
    end;
  • iVor © (07.06.08 15:14) [47]
    Работаю с купюроприемником CashCode Bill-to-Bill по протоколу CCNet, за основу взял опубликованный здесь исходник с потоками. Спасибо за него кстати. В благодарность готов поделиться решениями некоторых проблем, вставших в процессе разработки. На данный момент программа завершена на 90%. К сожалению, поделиться не могу, так как это коммерческий продукт.

    по поводу ЦРЦ - в мануале по протоколу, который выложен на сайте кэшкода, есть исходник на дельфи. работает 100%
  • Gbp (18.06.08 17:47) [48]
    Здравствуйте. Поделитесь пожалуйста dll'кой, которая испльзуется в коде на второй странице. Мне очень нужно быстро разобраться с купюроприемником, горит проект!
  • Gbp (18.06.08 17:48) [49]
    Она называется CashCodeSM.dll
  • Tonich (20.06.08 18:34) [50]
    не считаю себя профи конечно, но не дай бог воспользоваться кодом который приведен выше... ) ни синхронизации ни обработок ошибок ни черта ...  
    Выкачав  описание протокола, реализовал его за сутки.  правда на с++ под линукс, но это не так уж и важно..
  • tesseract © (20.06.08 18:42) [51]

    > не считаю себя профи конечно, но не дай бог воспользоваться
    > кодом который приведен выше... )


    Я видел какие люди этими автоматами разбираються, и изнутри их. С тех пор не пользуюсь, виснут примерно 2-3 раза в неделю  ( у нас который под боком). Сдачи не дают и тд. Система - явно хакнутая винда, до линухов мальчикам-мажорам котрые под него софт пишут, рости и рости.
  • Gbp (26.06.08 22:28) [52]
    Здравствуйте.
    Не подскажите ли, как можно уменьшить степень "требовательности"
    купюроприемника к качеству купюр?

    Я работаю с протоколом CCNET. Нужно использовать команду SET_STATUS?
    Не подскажите как ей пользоваться, какие передавать параметры, чтобы купюроприемник принимал бОльшее число купюр
  • Gbp (26.06.08 22:29) [53]
    Тьфу, то есть команду SET_SECURITY.
  • Tonich (27.06.08 12:57) [54]
    SYNC - 0x02
    ADR   - 0x03
    LNG   - 0x09
    CMD  - 0x32
    DATA - 3 байта в которых ответствующим образом выставленные биты (0x00 0x00 0x00)
    CRC   -  

    то есть там всего 24 канала(у устройства) и выставляя биты в DATA соответствующим образом в этих 3 байтах ты скажешь указать какой канал проверять с high security level а какой нет

    то есть в твоем случаи опусти все биты

    после этого устройство должно ответить ..
  • Gbp (28.06.08 14:36) [55]
    Спасибо большое за информацию.
    А CRC нужно рассчитывать?
  • Gbp (28.06.08 14:46) [56]
    Если нужно, то как его считать?
  • Gbp (30.06.08 10:40) [57]
    все, нашел код

    const _CR_CCNET_CRC_POLY = $08408

    function GetCRC16(InData: array of byte; DataLng: word): word;
    var i,TmpCRC: word;
       j: byte;
    begin
    result:=0;
    for i:=0 to (DataLng-1) do
    begin
     TmpCRC:=result xor InData[i];
     for j:=0 to 7 do
      begin
       if (TmpCRC and $0001)<>0 then
        begin
         TmpCRC:=TmpCRC shr 1;
         TmpCRC:=TmpCRC xor _CR_CCNET_CRC_POLY;
        end
            else
        TmpCRC:=TmpCRC shr 1;
      end;
     result:=TmpCRC;
    end;
    end;
  • имя (15.07.08 20:31) [58]
    Удалено модератором
  • имя (15.07.08 23:22) [59]
    Удалено модератором
 
Конференция "WinAPI" » Купюроприемник CashCode, протокол ccnet [D7, WinXP]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]