У меня Delphi просит P2KAPI.dcu, мож кто кинет?
![]() P2Kapi, Вопросы |
![]() |
![]() |
![]() |
![]() |
![]() |
Здравствуйте, гость ( Вход | Регистрация ) |
![]() P2Kapi, Вопросы |
Gulik17 |
![]() |
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Регистрация: 31.10.2006 Пользователь №: 105 517 Модель телефона: E398 -> E1 Прошивка: *#9999# Рейтинг: 0 ![]() |
У меня Delphi просит P2KAPI.dcu, мож кто кинет?
|
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
Gulik17,
Этот файл для разных версий Delphi будет разный, лучше так сделать: 1) Скопировать p2kapi.pas в папку с проектом 2) Добавить p2kapi.pas в проект (Project -> Add file или как там) И всё, после добавления p2kapi в uses проблем не должно быть. |
n0wheremany |
![]() |
![]() Прогр@ммер ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 564 Регистрация: 10.9.2005 Пользователь №: 51 111 Модель телефона: E398 Рейтинг: 341 ![]() |
Цитата 1) Скопировать p2kapi.pas в папку с проектом 2) Добавить p2kapi.pas в проект (Project -> Add file или как там) 1. Либо скопировать либо добавить в проект. 2. Добавить в uses |
B3nNa |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 4 Регистрация: 27.1.2008 Пользователь №: 161 491 Модель телефона: Motorola V3x Рейтинг: 0 ![]() |
Hi,
I'm trying to use P2k_SendCMD in Vb.Net, but when i try to execute code, i get this error: QUOTE Object reference not set to an instance of an object. i declared the function in this way: CODE Public Declare Function P2K_SendCMD Lib "p2kapi3.dll" (ByVal Cmd As Int32, ByVal SendBuff As Byte(), ByVal SendSize As Int32, ByVal RecvBuff As Byte(), ByVal RecvSize As Int32) As Integer and that's the code: CODE P2K_Init(0) Threading.Thread.Sleep(1500) Dim Send(10000), Recv(10000) As Byte Dim SendSize, RecvSize As Int32 Send(0) = &HFF Send(1) = &HFF SendSize = 2 Try P2K_SendCMD(&H39, Send, SendSize, Recv, RecvSize) Catch ex As Exception End Try can anyone help me? thanks in advance, B3nNa |
Ailinor |
![]() |
![]() Интересующийся ![]() ![]() Группа: Разработчики Сообщений: 86 Регистрация: 27.8.2007 Из: Днепропетровск, Украина Пользователь №: 145 831 Модель телефона: V3r Прошивка: R4515_G_0.BD.74R Рейтинг: 69 ![]() |
![]() Что-то V3re (не разлоченная) некоректно работает с библиотекой. Кто-то сталкивался с этой проблемой? Из-за чего это может быть? |
VlzRu |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 5 Регистрация: 19.6.2008 Пользователь №: 175 279 Модель телефона: V/E/* Рейтинг: 0 ![]() |
А в чем разница между функциями Flash_WriteData и Flash_Bin? Насколько успел разобраться, первая просто отправляет в порт данные, переданные ей в параметрах, при этом не понятно, по какому адресу будут зашиты отправленные байты? Вторая отсылает через SendCmd команду "BIN", и переданный ей буфер, при этом сказано, что перед ее[Flash_Bin] вызовом необходимо передать в тело(или точнее загрузчик?) адрес начала записываемой области (Flash_Addr). Т.е. существуют две функции, выполняющие одно и то же? Или я не прав?
|
n0wheremany |
![]() |
![]() Прогр@ммер ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 564 Регистрация: 10.9.2005 Пользователь №: 51 111 Модель телефона: E398 Рейтинг: 341 ![]() |
Цитата Flash_WriteData Ф-ия отправляет не форматированные данные телефону. Не знаешь не лезь. Цитата Flash_Bin Ф-ия отправляет форматированные даные телефону на адрес отправленный ф-ей Flash_Addr до этого. Ф-ия Flash_WriteData только для людей, знающий как ей пользоваться. |
VlzRu |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 5 Регистрация: 19.6.2008 Пользователь №: 175 279 Модель телефона: V/E/* Рейтинг: 0 ![]() |
Спасибо за ответ. Еще вопрос, не сочтите за наглость.
Чтобы записать данные в некоторую область памяти, нужно ее предварительно стереть. Правильно? Значит нужно чтобы начальный и конечный адреса этой области были забиты в лоадер? Т.е. алгоритм такой: 1. Инициализация библиотеки, телефона. 2. Запись лоадера с необходимыми адресами памяти. 3. Команда "ERASE" -> в телефон. 4. Вызываем в цикле Flash_Bin, переправляем всю прошивку в тело. 5. Радуемся. :-) Так? |
n0wheremany |
![]() |
![]() Прогр@ммер ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 564 Регистрация: 10.9.2005 Пользователь №: 51 111 Модель телефона: E398 Рейтинг: 341 ![]() |
Цитата 1. Инициализация библиотеки, телефона. 2. Запись лоадера с необходимыми адресами памяти. 3. Команда "ERASE" -> в телефон. 4. Вызываем в цикле Flash_Bin, переправляем всю прошивку в тело. 5. Радуемся. :-) Чтото в этом роде. ЗЫ - не знаешь не лезь. |
VlzRu |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 5 Регистрация: 19.6.2008 Пользователь №: 175 279 Модель телефона: V/E/* Рейтинг: 0 ![]() |
Охота стать знающим...
![]() |
Osta |
![]() |
Freestyler ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Легенды MotoFan.Ru Сообщений: 10 329 Регистрация: 20.7.2004 Пользователь №: 8 235 Модель телефона: Moto Прошивка: *#9999# Настроение: Все невыспавшиеся в следующей жизни будут котами Рейтинг: 4362 ![]() |
|
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
VlzRu,
держи две функции для стирания/прошивания, пока беды не случилось: Код procedure TForm1.Erase; var Size: Cardinal; OutData:array[0..1023] of Char; Res:Cardinal; StartTime,PointTime:Cardinal; begin StartTime:=GetTickCount; Label1.Caption:='Erasing flash memory'; Label1.Update; Size:=SizeOf(OutData); ProgBar.Max:=1000; Res:=Flash_SendCmd('ERASE',nil,0,OutData,Size,100); while Res<>0 do begin PointTime:=(GetTickCount-StartTime) mod 2000; if PointTime>=1000 then PointTime:=2000-PointTime; ProgBar.Position:=PointTime; Size:=SizeOf(OutData); Res:=Flash_ReadData(OutData,Size,20); Application.ProcessMessages; end; end; function TForm1.Flash(FName: string; Base: Cardinal):integer; var F:file of Byte; FSize,Size:Cardinal; FlashAddr,FlashOff:Cardinal; InData:array[0..$ff] of Byte; begin result:=0; Label1.Caption:='Flashing Phone'; Label1.Update; ProgBar.Position:=0; AssignFile(F,FName); Reset(F); FlashAddr:=Base; FlashOff:=0; FSize:=FileSize(F); ProgBar.Max:=FSize; repeat BlockRead(F,InData,$100,Size); result:=result+Flash_Addr(FlashAddr); result:=result+Flash_Bin(InData,Size); Inc(FlashAddr,$100); Inc(FlashOff,$100); ProgBar.Position:=FlashOff; Application.ProcessMessages; until FlashOff>=FSize; end; |
n0wheremany |
![]() |
![]() Прогр@ммер ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 564 Регистрация: 10.9.2005 Пользователь №: 51 111 Модель телефона: E398 Рейтинг: 341 ![]() |
Osta
Верно конечно... Но будет как у меня более 1,5 года лежащий 398 с пробитой флэшкой... Благо умный человек позаботился )) Цитата procedure TForm1.Erase; Надо читать ответ, а не просто возможные байты... ибо ERR тоже ответ. И весьма плохой. Зы DmT, разве у тебя Flash_ReadData не стопорит прогу? до ответа? |
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
n0wheremany,
У Flash_ReadData (и Flash_WriteData) последний параметр - таймаут в миллисекундах. И у Flash_SendCmd, кстати, тоже ![]() |
VlzRu |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 5 Регистрация: 19.6.2008 Пользователь №: 175 279 Модель телефона: V/E/* Рейтинг: 0 ![]() |
Огромное спасибо n0wheremany и DmT ! Теперь я все понял.
|
VlzRu |
![]() |
Новичок ![]() Группа: Пользователи Сообщений: 5 Регистрация: 19.6.2008 Пользователь №: 175 279 Модель телефона: V/E/* Рейтинг: 0 ![]() |
Хотя нет... не все :-)
Что, в теории, делает команда JUMP? судя по https://forum.motofan.ru/index.php?showforum=143 Flash&backup'у отправлять ее нужно после засылки лоадера, или это зависит от чего-то? На какой адрес нужно прыгать? На адрес, в котором начинается лоадер? (JUMP для Motorola == JMP для asm) ? |
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
VlzRu,
Для телефонов на платформе LTE нужно: Добавлено позже (26.6.2008, 2:49): VlzRu, Для телефонов на платформе LTE нужно: 1) Записать лоадер по адресу 0x03fd0000 2) JUMP на 0x03fd0010 3) Если намерен что-то прошивать - стирание памяти (адреса вбиваются в лоадер) 4) Прошивание/чтение (для чтения лоадер должен это поддерживать) 5) Опционально выключение или перезапуск телефона |
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
|
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
|
david768 |
![]() |
Новичок ![]() Группа: Начинающие Сообщений: 1 Регистрация: 21.10.2009 Пользователь №: 208 402 Модель телефона: E398 Рейтинг: 0 ![]() |
Я чайник...Как установить скины???
|
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
david768, Модификация Е398
|
![]() ![]() |
Текстовая версия | Сейчас: 3.9.2025, 9:04 |
Форум живёт: