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() та же шляпа. В чем может быть проблема?