Прокс считыватели, формат карт

FORUM_NAME: Прочие приборы
Модератор: Модераторы
AlexRuden
AlexRuden
Возраст: 39
Репутация: 0
Сообщения: 1096
Зарегистрирован: 13.01.2012
С нами: 4 года 10 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #41 AlexRuden » 04.10.2013, 15:14

piroxilin писал(а):Да - подношу карту, там 5 байт кода сами набигают и окно закрывается и код полный уже в окне пароля (как в п. 4.5)
А вы успеваете рассмотреть какие 5 байт (может видео записать и в стоп кадре глянуть)? Непонятно кто данные коверкает, считыватель или ОрионПро. Проверить не могу , пользуюсь другими дешевыми считывателями. А проверка копипастом кода работает правильно.
Гм.. Скорее всего драйвер считывателя в контрол поля ввода урезанные байты кидает, хотя не должно быть такого. Если в софте к считывателю настроек нет, то вам в ТП с очередным баго-поклоном.
Курите man'ы , господа.

piroxilin
piroxilin
Репутация: 0
Сообщения: 10
Зарегистрирован: 03.10.2013
С нами: 3 года 2 месяца
Профессия: монтажник, инженер

Непрочитанное сообщение #42 piroxilin » 04.10.2013, 16:02

у считывателя нет даже драйверов - он работает по ротоколу ЮСБ-клавиатуры т.е. в любой программе ждущей ввода с клавы можно прочитать текстовый код с считывателя - хоть в DOOM )).
Кино запишу - поржать чисто.

piroxilin
piroxilin
Репутация: 0
Сообщения: 10
Зарегистрирован: 03.10.2013
С нами: 3 года 2 месяца
Профессия: монтажник, инженер

Непрочитанное сообщение #43 piroxilin » 04.10.2013, 19:40


AlexRuden
AlexRuden
Возраст: 39
Репутация: 0
Сообщения: 1096
Зарегистрирован: 13.01.2012
С нами: 4 года 10 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #44 AlexRuden » 05.10.2013, 07:20

Подождите, если с клавиатуры руками вбить код в поле ввода на скрине в п 4.4 и нажать ентер - тоже коверкает код? Не должно быть такого. Считыватель же просто передает ascii-символы и в конце символ ентера (13) . На видео видно, что считыватель правильный код передает.
Курите man'ы , господа.

piroxilin
piroxilin
Репутация: 0
Сообщения: 10
Зарегистрирован: 03.10.2013
С нами: 3 года 2 месяца
Профессия: монтажник, инженер

Непрочитанное сообщение #45 piroxilin » 05.10.2013, 14:57

Тут баг в конверторе 5 байт из ЮСБ-МА в 8 байт ТМ . Руками или считывателем вбивать в поле для настольного считывалеля - результат идин и тот-же = сжирается 5-й байт.

AlexRuden
AlexRuden
Возраст: 39
Репутация: 0
Сообщения: 1096
Зарегистрирован: 13.01.2012
С нами: 4 года 10 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #46 AlexRuden » 05.10.2013, 15:52

piroxilin писал(а):Тут баг в конверторе 5 байт из ЮСБ-МА в 8 байт ТМ . Руками или считывателем вбивать в поле для настольного считывалеля - результат идин и тот-же = сжирается 5-й байт.
Дык нету бага - поставил ОрионПро с обновлением, версия АБД 1.12.3164. Проверил как конвертит - всё правильно, ничего не отжирает, 5-ый байт на месте.
Курите man'ы , господа.

piroxilin
piroxilin
Репутация: 0
Сообщения: 10
Зарегистрирован: 03.10.2013
С нами: 3 года 2 месяца
Профессия: монтажник, инженер

Непрочитанное сообщение #47 piroxilin » 05.10.2013, 19:49

Хм, у меня версия 1.0 (версия 12 , сборка 3111)
версия 1.12 (обновление 0)
У меня после установки сервис-пака вообще перестали считываться новые коды карточек - вернул всё на старую версию...

тогда тест - забей вручную код "67005693FF"

получится "770067005693FF01" (c2000-2) или "430000005693FF01" (proxy-usb-ma) ???

konstsch
konstsch
Репутация: 0
Сообщения: 4
Зарегистрирован: 18.06.2014
С нами: 2 года 5 месяцев
Профессия: инженер

Непрочитанное сообщение #48 konstsch » 18.06.2014, 19:04

Такая же проблема подскажите как решить?

piroxilin
piroxilin
Репутация: 0
Сообщения: 10
Зарегистрирован: 03.10.2013
С нами: 3 года 2 месяца
Профессия: монтажник, инженер

Непрочитанное сообщение #49 piroxilin » 19.06.2014, 11:48

Обновились и заработало.
Только старую версию полностью снесли.

Причём когда раньше обновлялись, то была проблема по считыванию карт орионом по интерфейсу, с приборов. А после реинсталла - всё нормально заработало.

StDIABLO
StDIABLO
Репутация: 1
Сообщения: 1
Зарегистрирован: 09.12.2014
С нами: 1 год 11 месяцев
Профессия: программист

Непрочитанное сообщение #50 StDIABLO » 09.12.2014, 21:18

Специально зарегистрировался :) чтобы написать в темку

Проапгрейдил немного код написаный ранее.
"getline.c" гуглится впрямую

Спойлер

Код: Выделить всё

/* getline.c -- Replacement for GNU C library function getline

Copyright (C) 1993 Free Software Foundation, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */

/* Written by Jan Brittenson, bson@gnu.ai.mit.edu.  */

#include <sys/types.h>
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
   + OFFSET (and null-terminate it). *LINEPTR is a pointer returned from
   malloc (or NULL), pointing to *N characters of space.  It is realloc'd
   as necessary.  Return the number of characters read (not including the
   null terminator), or -1 on error or EOF.  */

int getstr (char ** lineptr, size_t *n, FILE * stream, char terminator, int offset)
{
  int nchars_avail;             /* Allocated but unused chars in *LINEPTR.  */
  char *read_pos;               /* Where we're reading into *LINEPTR. */
  int ret;

  if (!lineptr || !n || !stream)
    return -1;

  if (!*lineptr)
    {
      *n = 64;
      *lineptr = (char *) malloc (*n);
      if (!*lineptr)
        return -1;
    }

  nchars_avail = *n - offset;
  read_pos = *lineptr + offset;

  for (;;)
    {
      register int c = getc (stream);

      /* We always want at least one char left in the buffer, since we
         always (unless we get an error while reading the first char)
         NUL-terminate the line buffer.  */

      assert(*n - nchars_avail == read_pos - *lineptr);
      if (nchars_avail < 1)
        {
          if (*n > 64)
            *n *= 2;
          else
            *n += 64;

          nchars_avail = *n + *lineptr - read_pos;
          *lineptr = (char *) realloc (*lineptr, *n);
          if (!*lineptr)
            return -1;
          read_pos = *n - nchars_avail + *lineptr;
          assert(*n - nchars_avail == read_pos - *lineptr);
        }

      if (c == EOF || ferror (stream))
        {
          /* Return partial line, if any.  */
          if (read_pos == *lineptr)
            return -1;
          else
            break;
        }

      *read_pos++ = c;
      nchars_avail--;

      if (c == terminator)
        /* Return the line.  */
        break;
    }

  /* Done - NUL terminate and return the number of chars read.  */
  *read_pos = '\0';

  ret = read_pos - (*lineptr + offset);
  return ret;
}

ssize_t getline(char **lineptr, size_t *n, FILE *stream)
{
  return getstr (lineptr, n, stream, '\n', 0);
}
Собственно код программы

Спойлер

Код: Выделить всё

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "getline.c"

void crc8bolid(unsigned char *decString, unsigned char *decBytes) {
   int i;
   int a;
   int b;
   unsigned int decValue = atoi(decString);
   printf("%#08x\n", decValue);
   a= decValue / 100000;
   b= decValue % 100000;
   unsigned char *myaBytes = (unsigned char*) &a;
   unsigned char *mybBytes = (unsigned char*) &b;
   
   decBytes[3] = myaBytes[0];
   decBytes[2] = mybBytes[1];
   decBytes[1] = mybBytes[0];
   decBytes[0] = 1;
   decBytes[4] = 0;
   decBytes[5] = 0;
   decBytes[6] = 0;
   decBytes[7] = 0;
   unsigned char CRCTABLE[] = { 0, 94, 188, 226, 97, 63, 221, 131, 194, 156,
         126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95,
         1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160,
         225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99,
         61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121,
         155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57,
         186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217,
         135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166,
         68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140,
         210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
         17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236,
         14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12,
         82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18,
         145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180,
         234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149,
         203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106,
         43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169,
         247, 182, 232, 10, 84, 215, 137, 107, 53 };

   for (i = 0; i < 7; i++) {
      decBytes[7] = CRCTABLE[decBytes[7] ^ decBytes[i]];
   }
}
int main(int argc, char **argv)
{
   unsigned char decBytes[8];
   int i;
   FILE *f;
   f = fopen("out.txt", "w");
   FILE * fp;
   char * line = NULL;
   size_t len = 0;
   ssize_t read;

   fp = fopen("in.txt", "r");
   if (fp == NULL)
      return 2;

   while ((read = getline(&line, &len, fp)) != -1) {
      printf("%s", line);
      crc8bolid(line, decBytes);
      for (i = 7; i >= 0; i--) {
         fprintf(f, "%02x", decBytes[i]);
         printf("%02x", decBytes[i]);
      }
      fprintf(f, "\n");
      printf("\n");
   }

   if (line)
      free(line);
   fclose(f);
   return 0;
}
Программа выдает правильный код на код Виганд 011 55982 -> в код Dallas TouchMemory 05 00 00 00 0b da ae 01
Как в FAQ
Вложения
w-to-tm.zip
(28.88 КБ) 404 скачивания


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Прочие приборы»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя

forum-bolid.ru : Отказ от ответственности