motofan logo
Motorola Ситилинк
43 страниц V < 1 2 3 4 5 > »         
> 

P2Kapi, Вопросы

Prusa
сообщение 13.4.2005, 6:44


Опытный
***

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

Рейтинг: 80.5



у меня все нормально скачивает
инициализируешь буфер определенного размера (размер файла)
потом скачиваешь файл в этот буфер
потом очищаешь
закрываешь файл.

Код

char FileName[]="/a/ALARMCLOCK"; //название файла
BYTE *FileBuf; //указатель на буфер для файла
DWORD FileBufSize; //размер буфера (файла)

FileBufSize = 300; //для ALARMCLOCK


if (p2k_GetStatus()){// проверяем подключено ли тело
  if (p2k_FCreate(FileName,0xFFFFFFFF) == 0){//открываем файл без изменения атрибутов

      FileBuf = new BYTE[FileBufSize]; //инициализируем буфер

      if (p2k_FRead(FilBuf,FileBufSize) == 0){ //читаем файл
          //делаем что нить с буфером
      }
      delete[]FileBuf; //очищаем буфер
      p2k_FClose(); //закрываем файл  
  }
}


про volinfo
я его просто инициализирую 1 раз и все зашибись работает.

есть такой недостаток что монитор подключения тела который запускается после вызова Init не убивается вручную, по этому когда выгружаешь библиотеку не закрывая главной проги монитор продолжает работать но память под эту функцию уже очищена, и выскакивает ошибка о невозможности чтения и тд. Vilko сказал что в след версии поправит это.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 14.4.2005, 15:43


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

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

Рейтинг: 25



Мне кажется я сойду с ума.
Prusa,
Я попробовал то что ты написал, но он все равно скачивает только один байт evil_zloi; (причем всегда разный :( ). Насколько я понял ты скачал мою программу. Можешь проверить скачку файла на ней? Умоляю! Жду ответа как соловей лета!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Prusa
сообщение 14.4.2005, 17:00


Опытный
***

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

Рейтинг: 80.5



для начала открой файл куда будешь записывать с тела в бинарном режиме а не в текстовом.
я делаю так:
в том месте где я писал что делаем че нить с буфером напиши вот это:
Код

FILE *f;
char toFileName[] = "C:\\ALARMCLOCK";  //путь и название файла на диске
if (( f= fopen(toFileName,"w+b")) != 0){ //создание файла с именем toFileName, "w+b" - атрибуты: "w+" - открытие и сброс файла, "b" - бинарный режим
   fwrite(FileBuf,1,FileBufSize,f);         //запись в файл
   fclose(f);                                       //закрытие файла
}

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 16.4.2005, 14:52


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

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

Рейтинг: 25



clap;applo clap;applo clap;applo clap;applo
Prusa,
Нет слов чтобы выразить мою благодарность bigsmile; ! По гроб жизни обязан! Как только смогу повышать рейтинг наклацаю тебе плюсиков! :D
max.wiz Спасибо щас буду пробовать! bigsmile;
clap;applo clap;applo clap;applo
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 26.4.2005, 11:45


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



Народ помогите мне плиз. Истинно ли для делфи следующее:

function P2K_Init(p:pointer): Integer;

function P2K_Restart: Integer;

function P2K_GetStatus: Integer;

function File_Close: Integer;

function File_Delete(FileName:string): Integer;

function File_SetPointer(Offset,MoveMethod: Cardinal): Integer;

function File_Count: Integer;

function File_List(var Buffer: array of byte; File_List:String): Integer;

function Seem_Write(SeemNo,RecordNo,StartOffset,Bytes:Cardinal;var Data:array of byte): Integer;

function File_VolInfo(var Buffer: array of byte): Integer;

function Seem_Read(SeemNo,RecordNo,StartOffset,Bytes:Cardinal;var Data:array of byte): Integer;

function File_Create(FileName:String;Attribute:Cardinal): Integer;

function File_Write(var Buffer: array of byte;Size:Cardinal): Integer;

Второе, как блин считать этот гадский seem к примеру 0117_0001, если мона кусочек кода плиз....
Если честно невьезжаю.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 26.4.2005, 20:57


Мастер
****

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

Рейтинг: 42.5



Вот объявления импортируемых процедур из моей программы (всё работает):
Код

// DLL-exported voids
function P2K_Init(voidStatusProc: Pointer): Integer; stdcall; external 'p2kapi.dll';
function P2K_Restart: Integer; stdcall; external 'p2kapi.dll';
function File_Count: Integer; stdcall; external 'p2kapi.dll';
function File_List(var Buf; Count: Longword): Integer; stdcall; external 'p2kapi.dll';
function File_Create(FileName: PChar; Attribute: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_SetPointer(Offset, MoveMethod: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Read(var Buffer; Size: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Write(var Buffer; Size: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Close: Integer; stdcall; external 'p2kapi.dll';
function File_VolInfo(Buffer: PChar): Integer; stdcall; external 'p2kapi.dll';
function Seem_Read(SeemNo, RecordNo, StartOffset, Bytes: Integer; var Data): Integer; stdcall; external 'p2kapi.dll';
function Seem_Write(SeemNo, RecordNo, StartOffset, Bytes: Integer; var Data): Integer; stdcall; external 'p2kapi.dll';


Вот чтение сима из телефона с сохранением в файл - это ОЧЕНЬ просто, проще чем чтение файлов:
(sn - номер сима (если вторая часть = 0001), cnt - размер сима).
Код
function Load_SEEM(sn, cnt: Integer): String;
var n: Integer;
   f: file of byte;
   b: array [0..255] of byte;
   s, seem: String;
begin if PhoneConnected=False then
     begin MessageBox(0,MB_NotConn,MB_Caption,MB_ICONWARNING + MB_SYSTEMMODAL);
           exit;
     end;

     Result:='';
     seem:=IntToHex(sn,4);
     n:=Seem_Read(sn,$0001,0,cnt,b[0]);
     if n=-1 then
     begin MessageBox(0,'SEEM open error. Try again...',MB_Caption,MB_ICONSTOP + MB_SYSTEMMODAL);
           exit;
     end;

     s:=ExtractFilePath(ParamStr(0))+seem+'_0001.seem';
     AssignFile(f,s);
     Rewrite(f);
     BlockWrite(f,b[0],cnt);
     CloseFile(f);
     Result:=s;
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 27.4.2005, 6:01


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



clap;applo max.wiz Большущее ТАБЕ спасибо.


;) max.wiz С File_VolInfo на делфях у меня получилось так и пока не глючит.

implementation
var
disk:array[1..128]of Byte;
.......................
Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';
Form1.XPLabel12.Caption:=Chr(disk[2])+Chr(disk[1])+':';
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Black_hole
сообщение 4.5.2005, 19:16


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 4.5.2005
Пользователь №: 41 879
Модель телефона: E 398
Прошивка: 98R

Рейтинг: 0



2 Vovan_mail

Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';

Вот в этой строке ты обращаешся к переменной disk напрямую, хотя она у тебя обявлена массивом, у тебя ошибки нет?
Или у тебя File_VolInfo подругому описан?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 4.5.2005, 19:50


Мастер
****

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

Рейтинг: 42.5



Цитата(Black_hole @ Среда, 4 Май 2005, 22:16)
Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';

Вот в этой строке ты обращаешся к переменной disk напрямую, хотя она у тебя обявлена массивом, у тебя ошибки нет?
Или у тебя File_VolInfo подругому описан
*



Если описан как
function File_VolInfo(Buffer: PChar): Integer; stdcall; external 'p2kapi.dll';
то ошибки нет - компилятор передаёт по всем правслам. Ведь описание PChar = ^Char, а массив disk - array [] of char и передаёт указатель на disk[<первый элемент>]. Вообще, кастование типов в Дельфях (особенно начиная с 6) намного "гибче". Паскалевский компилятор нашёл бы кучу ошибок :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 4.5.2005, 21:43


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



max.wiz Именно так как написал выше. Лучше спрошу чем навтыкаю кучу глюков. С симами блин вроде-бы как разобрался. unsure.gif А вот с списком файлов Это просто пипец. Прошу учесть что кэмп у меня лет 5, а програмировать стал учится совсем недавно. Так вот как я там не втыкивал блин массивы, списка так и не получил. max.wiz rolleyes.gif Дай своё мыло пришлю с исходником своё недомогание или тут выложить? Может чё подскажешь, может чем поможешь.
blink.gif Вот ещё говорят IMEI лежит в 0004_0001.seem я блин перерыл все наверное симы связанные с 4 и хрен его нашол. он прикрыт как-то?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
P2Kapi, Вопросы · Ломаем и строим (Inventions) · Forum
 

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

 



Текстовая версия Сейчас: 16.9.2019, 8:16

Форум живёт: