motofan logo
43 страниц V  1 2 3 > »         
> 

P2Kapi, Вопросы

Xandre
сообщение 10.3.2005, 10:58


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Люди добрые! Я хочу написать программу, основанную на P2Kapi от Vilko в качестве курсовой. Но столкнулся с некоторыми проблемами в испльзовании функций p2kapi. Если кто может напишите прототипы функций с их типамии параметрами. или скиньте на мыло: xandre@amik.ru
Прикрепленный файл p2kapi.zip   ( 7.95 килобайт ) Кол-во скачиваний: 2601
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 10.3.2005, 11:17


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



а в чем проблема? там же есть описания функций передаваемых и возвращаемых параметров
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 10.3.2005, 11:41


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Вообще я пишу на Visual C++. Вот фрагмент кода где я пытаюсь вызвать функцию инициации библиотеки:

CString st;

HINSTANCE hLib=NULL;
typedef int(*P2K_Init)();
P2K_Init lp=NULL;
hLib=LoadLibrary("p2kapi.DLL");
typedef int(*P2K_GetStatus)();
P2K_Init lpp=NULL;

if(hLib!=NULL)
{
lp=(P2K_Init)GetProcAddress(hLib,"P2K_Init");
if(lp)
{
if(! P2K_Init(0)){ st.Format("init %d",P2K_Init(0));

AfxMessageBox(st);}

}
lpp=(P2K_GetStatus)GetProcAddress(hLib,"P2K_GetStatus");
if(lpp)
{
if(!(!P2K_GetStatus())){ st.Format("status %d",P2K_GetStatus(0));

AfxMessageBox(st);}

}
FreeLibrary(hLib);
}
else
AfxMessageBox("Не могу найти библиотеку");

Но функция возвращает 0(т.е. инициация не прошла). Следовательно программа не видит телефон.
В описании функций не написаны их типы и типы параметров (например StatusProc что это такое?) поэтому приходится догадываться по контексту.
Вот пример описания функции P2k_Init:
P2K_Init(StatusProc);
Инициализация библиотеки, запуск монитора статуса телефона.
StatusProc - указатель на процедуру, которая будет вызвана при обнаружении/потере
телефона или 0, если вызов процедуры не требуется.
Возващает 0 - если инициализация прошла успешно или -1 в обратном случае.
Процедура StatusProc вызывается библиотекой с одним параметром:
1 если телефон найден или 0 - если потерян.
Ну тип я ещё могу додумать(integer), но где взять StatusProc?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 10.3.2005, 12:06


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



Цитата(Xandre @ Четверг, 10 Марта 2005, 15:41)
но где взять StatusProc?
*


саму написать, а потом передать на нее указатель
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Booroondook
сообщение 10.3.2005, 12:12


Старый мотокодер
******

Группа: Разработчики
Сообщений: 1 132
Регистрация: 7.7.2003
Из: Москва
Пользователь №: 179
Модель телефона: EM30
Прошивка: R6716_G_71.03.04R

Рейтинг: 303



Цитата(Xandre @ Четверг, 10 Марта 2005, 15:41)
Ну тип я ещё могу додумать(integer), но где взять StatusProc?
*


StatusProc - это процедура, написанная тобой в твоей же программе.
В качестве параметра для функции P2K_Init нужно ставить указатель (пойнтер, адрес) на эту твою процедуру.
Смысл функции P2K_Init в том, что после запуска этой функции при потере или нахождении телефона производится вызов (по адресу) твоей процедуры с передачей ей в качестве параметра 0 или 1.
Значит, пишешь процедуру типа выдачи на экран окошка с надписью "телефон найден" или "телефон потерян". А вид надписи зависит от параметра, который твоей процедуре передан - 1 или 0.
Вот, собственно говоря, и вся хитрость.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 10.3.2005, 12:12


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Что она из себя должна представлять? Такая пойдет:
begin
ShowMessage('Not found');
end;
И это из-за неё комп невидит телефон?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Prusa
сообщение 10.3.2005, 15:26


Опытный
***

Группа: Разработчики
Сообщений: 136
Регистрация: 17.8.2003
Из: Москва
Пользователь №: 453
Модель телефона: ROKR E2

Рейтинг: 80.5



Xandre,

вместо typedef int(*P2K_Init)();
пиши typedef int(*P2K_Init)(void*);

и при вызове указывай параметр 0

выслал те класс.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 10.3.2005, 20:59


Мастер
****

Группа: Пользователи
Сообщений: 206
Регистрация: 14.9.2004
Из: МО, г. Наро-Фоминск
Пользователь №: 12 584
Модель телефона: V300 -> V635 -> Z6
Прошивка: ---

Рейтинг: 42.5



В моей проге я инициализировал вот как (асинхронная инициализация):

Код

// Интерфейс
interface
procedure InitLibrary;
var PhoneConnected: Boolean = False;

implementation
// Реализация
var FirstCall: Boolean = True;

procedure f123;
begin if FirstCall=False then
        begin PhoneConnected:=not(PhoneConnected);
                 SetVisibleStatus;
                 exit;
        end;
        FirstCall:=False;
        PhoneConnected:=True;
        SetVisibleStatus;
end;

procedure InitLibrary;
var i: Integer;
begin if FirstCall=False then exit;
        i:=P2K_Init(Addr(f123));
        if i=-1 then
        begin MessageBox(0,'Fatal connection error:  #IL',MB_Caption,MB_ICONSTOP + MB_SYSTEMMODAL);
                 PhoneConnected:=False;
                 exit;
        end;
end;


При запуске программы вызываю InitLibrary.
Потом перед тем как предпринять какое-нить действие с телефоном проверяю значение PhoneConnected = True.
SetVisibleStatus - выставляет индикатор подключения телефона (красный/зелёный круг в строке статуса).
В принципе функция f123 кажись вызывается с параметром типа integer/word/byte (???) (0/1 - (от/под) ключен), но у меня он всегда 0 :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 11.3.2005, 8:41


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Тогда ещё вопрос: Что такое "ptr Buffer" в функциях типа File_Read(ptr Buffer, dword Size);? И как узнать размер файла в телефоне(dword Size)?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 11.3.2005, 9:18


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



Xandre,
сначала получить список файлов, в этом списке - имя (с путем), размер, атрибуты


ptr Buffer - указатель на Buffer, где будут лежать считанные данный

ЗЫ а вообще ты как то невнимательно читаешь хелп к p2kapi, там же все расписано прилично понятно
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
P2Kapi, Вопросы · Ломаем и строим (Inventions) · Forum
 

43 страниц V  1 2 3 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.8.2019, 21:36

Форум живёт: