Считаватель PERCo-CR-12001

Тема в разделе "WASM.HEAP", создана пользователем yurza, 24 мар 2010.

  1. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Народ не кто не программировал данный аппарат подключается к ПК через COM порт про подключении на девайсе горит красный индикатор потем экспирементов и мониторинга COM порта прешел к заключению что-бы перевести девайс в режим считавание необходимо через WriteFile писать в данный порт с задержкой 200 мс определенную последовательность байт т.е. char *inicilizaciy="\xF3\xFF\x01\x02\x03" и одновремменно её читать вроде все запустилоль электронную карту считываем получаем необходиммый нам данные с карточки в виде последовательности байт которые после преобразование получаем её серию и номер тут мы закричили ура получилось но не тут то было посли перезагрузке ПК данная программка перестала работать (вообше) т.е. не переходит в режим считывания. Что такое, начал разбиратся и оказалось чтобы данный начали писатся необходимо как то иницилизировать данное устройсто так вот с помощью сторонный программы (Advanced Serial Port Monitor) я попытался записать данный набор байт(char *inicilizaciy="\xF3\xFF\x01\x02\x03" ) в COM порт и о чудо заработала и моя програмулины вот теперь сижу и соображаю как так. А теперь вапрос мож кто уже работал с данным девайсом и подскажет что да как в документации не черта нету по интернету полазил тоже не фиге нет.
     
  2. nds

    nds Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    157
    инициализацию порта делаете?
    скорость четность итд?
     
  3. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    В смысле через CreateFile так делаю его все нормально без INVALID_HANDLE_VALUE через SetCommState и структур иницилизирую только вот прикол он скорость я указываю 9600 они её 2 раза иницилизирует сначало 9600 потом 1200 четность настроена только передача почемуто иницилизируется не 8 бит как указал а 7 ну кароче пошел каверятся я в этом что за фигня
     
  4. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Блин походу придется попытатся отреверсить их софтину как делает она. У нах при клике на кнопку считать создается отдельный поток и Семафор и ожидает принятия данных. А я для экспериментов кручусь в while(1) пока приняттые данный не изменять
     
  5. nds

    nds Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    157
    алгоритм примерно такой должен быть(на паскале но думаю будет понятно)
    hPort := CreateFile(pchar('com'+inttostr(com)),
    GENERIC_READ + GENERIC_WRITE, //
    0, nil, //
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); //

    GetCommState(hPort, DCB);

    //инициализация настроек порта
    DCB.BaudRate:=9600;
    DCB.ByteSize:=8;
    DCB.StopBits:=onestopbit;
    DCB.Parity:=NOPARITY;
    {DCB.XoffChar:=#19; //в принципе это остальные настройки
    DCB.XonChar:=#17; //порта но они не являются необходимыми
    DCB.DCBLength:=28;
    DCB.Flags:=1025;
    DCB.wReserved:=0;
    DCB.XonLim:=2048;
    DCB.XoffLim:=512;
    DCB.ErrorChar:='я';
    DCB.EofChar:=;
    DCB.EvtChar:=#0;
    DCB.wReserved1:=0; }
    SetCommState(hPort, DCB);
    //установка таймаутов для приема-передачи сообщений
    GetCommTimeouts(hPort,timeouts);
    timeouts.ReadTotalTimeoutMultiplier:=500;
    timeouts.ReadTotalTimeoutConstant:=5000;
    SetCommTimeouts(hPort,timeouts);
    retry:
    //сброс находящихся в очередени на прием передачу сообщений
    PurgeComm(hPort,PURGE_TXCLEAR or PURGE_RXCLEAR);
     
  6. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Многовать тут надо как максимум 200 делать надо а то девайс в режим ожидания преходит
     
  7. nds

    nds Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    157
    этот таймоут это время которое ждет компьютер при приеме данных от устройства
     
  8. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Кароче по ходу что то хитрое таду засунули проверил свою софтину под баркод сканером все прекрасно работает что то намудрили они