Выскакивает S4_DEVICE_TYPE_MISMATCH

Создание исполняемых модулей для электронных ключей SenseLock

Выскакивает S4_DEVICE_TYPE_MISMATCH

Сообщение AlexLevshin » Ср, 30 сен 2009 01:30

Исходные данные:
1) Ключ - Версия 2.0.7, с часами и сетевым контроллером на борту, не перепрошивался, даже не переинициализировался
2) Keil 8.12, mvision 3.0 для сборки файлов для ключа
3) Visual Studio 2008 используется с++ для сборки примеров

Проблема при попытки собрать пример с сортировкой пузырька.
Бин файл зашивается успешно с айди D001 в корневую директорию ключа.
Изображение

Код примера в Keil:
Код: Выделить всё
#include "ses_v3.h"

/*bubble sort function*/
void bubble_sort(unsigned char *p, int len)
{
   int i,j;
   unsigned char tmp;
   
   for (i=0;i<len-1;i++)
   {
      for (j=0;j<len-i-1;j++)
      {
         if (p[j] < p[j+1])
         {
            tmp = p[j];
            p[j] = p[j+1];
            p[j+1] = tmp;
         }
      }
   }
}

/*SenseLock EL main procedure*/
void main()
{
   unsigned char *test = pbInBuff;
   int len = bInLen;

   bubble_sort(test, len);

   _set_response(len,test);
   _exit();
}


Код примера в студии:
Код: Выделить всё
// Test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "sense4.h"

void call_sense4(char *fid, unsigned char *buff, int len)
{
   SENSE4_CONTEXT ctx = {0};
   SENSE4_CONTEXT *pctx = NULL;
   unsigned long size = 0;
   unsigned long ret = 0;
   
   S4Enum(pctx, &size);
   if (size == 0)
   {
      printf("SenseLock EL not found!\n");
      return;
   }
   pctx = (SENSE4_CONTEXT *)malloc(size);
   if (pctx == NULL)
   {
      printf("Not enough memory!\n");
      return;
   }

   ret = S4Enum(pctx, &size);
   if (ret != S4_SUCCESS)
   {
      printf("Enumerate SenseLock EL error!\n");
      free(pctx);
      return;
   }
   memcpy(&ctx, pctx, sizeof(SENSE4_CONTEXT));
   free(pctx);
   
   pctx = NULL;
   ret = S4Open(&ctx);
   if (ret != S4_SUCCESS)
   {
      printf("Open SenseLock EL failed!\n");
      return;
   }
   
   ret = S4ChangeDir(&ctx, "\\");
   if (ret != S4_SUCCESS)
   {
      printf("No root directory found!\n");
      S4Close(&ctx);
      return;
   }
   
   ret = S4VerifyPin(&ctx, (BYTE*)"123456781234567812345678", 24, S4_DEV_PIN);//(BYTE*)"12345678", 8, S4_USER_PIN);
   if (ret != S4_SUCCESS)
   {
      printf("Verify user PIN failed!\n");
      S4Close(&ctx);
      return;
   }
   
   ret = S4Execute(&ctx, fid, buff, len, buff, len, &size);
   if (ret != S4_SUCCESS)
   {
      printf("Execute SenseLock EL exe failed!\n");
   }

   S4Close(&ctx);
}

int _tmain(int argc, _TCHAR* argv[])
{
   unsigned char test[] = {4,3,8,2,9,7,1,5,0,6};
   int len = sizeof(test);
   int i;

   call_sense4("d001", test, len);
   printf("result:\n");
   for (i=0;i<len;i++)
   {
      printf("%d ",test[i]);
   }
   _getch();

   return 0;
}


На S4Execute() валится с кодом ошибки из сабжа. Пробовал S4ExecuteEx() та же шляпа. В чем может быть проблема?
AlexLevshin
 
Сообщения: 2
Зарегистрирован: Чт, 09 июл 2009 11:48

Re: Выскакивает S4_DEVICE_TYPE_MISMATCH

Сообщение hijaq » Ср, 30 сен 2009 11:47

Для работы с ключом из приложения пользователя (функция S4Execute() и т.п.) необходимо использовать специальную библиотеку Sense4userST.lib, а также установить и настроить сетевой менеджер. АДминистрирование и программирование ключа осуществляется при помощи обычной библиотеки.
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50

Re: Выскакивает S4_DEVICE_TYPE_MISMATCH

Сообщение AlexLevshin » Ср, 30 сен 2009 13:43

В Vista Business девайс воткнут, утилита тестирования его видит. ПИНы все по дефолту. Но запустить сервис и сконфигурировать не могу.

Сервис установить удалось, он валится со след. ошибкой:
Изображение

Сетевой менеджер не позволяет сконфигурировать девайс со след. ошибкой:
Изображение
AlexLevshin
 
Сообщения: 2
Зарегистрирован: Чт, 09 июл 2009 11:48

Re: Выскакивает S4_DEVICE_TYPE_MISMATCH

Сообщение Anton » Чт, 15 окт 2009 12:57

Проверяли с Vista.
Сервис установили из консоли с правами администратора путем запуска:
e4nsrv.exe -i

Все работает, никаких проблем в Vista не обнаружено.
Anton
Site Admin
 
Сообщения: 195
Зарегистрирован: Пт, 06 апр 2007 15:32


Вернуться в Исполняемые модули

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron