Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 8 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
Давайте поможем мне создать простенький файл-менеджер для Сименса (примерно М55) написанный на делфи. Не прошу полностью исходники (есть исходники SGHFS для Самсунга) но там много не понимаю.
Для начала хочу узнать
    Как посылать на телефон комманды
    Какие там есть комманды (записать/считать)
    Правила безопасности (чтоб не повалить телефон)

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Цитата:
Взаимодействие с мобильными телефонами
Вы, наверное, не раз видели или даже пользовались программами, которые отображают любую информацию о вашем телефоне. Сейчас вы узнаете, как самим сделать такую программу!

Для начала положим на форму Memo, CheckBox "Соединиться», кнопку «Послать команду», Edit.

А) Подключение

Итак, в «Public declarations» объявляем 2 функции и 2 процедуры, потом объявляем 4 глобальные переменные:


public
{ Public declarations }

function OpenCOMPort: Boolean;
function SetupCOMPort: Boolean; //для настройки порта
procedure Connect;
procedure Disconnect;

var
Form1: TForm1;
ComFile: THandle; //Хэндл создаваемого нами файла
ComString: string; //(COM1, COM2 или COM3)
ComSpeed: Integer; //Скорость взаимодействия с COM-портом
Status: Boolean; //подключен или не подключен (чтобы в дальнейшем проверять статус)

Жмём Ctrl+C и записываем дальше:

procedure TForm1.Connect;
begin
ComString := 'COM2';
ComSpeed := 19200;
if OpenCOMPort = true then //Открываем порт…
if SetupCOMPort = true then //…и конфигурируем его
Memo1.Lines.Add('Подключились...');
Sleep(1500); //засыпаем на полторы секунды чтобы дать время на соединение
end;

procedure TForm1.Disconnect;
begin
CloseHandle(ComFile);
Memo1.Lines.Add('Отключились.');
end;

function TForm.OpenCOMPort: Boolean;
var DeviceName: array[0..80] of Char;
Device: string;
begin
Device := ComString;
StrPCopy(DeviceName, Device);
ComFile := CreateFile(DeviceName,
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if ComFile = INVALID_HANDLE_VALUE then
begin
Result := False;
Status := Result;
end
else
begin
Result := True;
Status := Result;
end;

end;

function TForm1.SetupCOMPort: Boolean;
const RxBufferSize = 256;
TxBufferSize = 256;
var DCB: TDCB;
Config: string;
CommTimeouts: TCommTimeouts;
begin
Result := True;
if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then
Result := False;
if not GetCommState(ComFile, DCB) then
Result := False;

Config := 'baud=' + IntToStr(ComSpeed) + ' parity=n data=8 stop=1'; //Устанавливаем скорость
if not BuildCommDCB(@Config[1], DCB) then
Result := False;
if not SetCommState(ComFile, DCB) then
Result := False;

with CommTimeouts do
begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 1000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 1000;
end;
if not SetCommTimeouts(ComFile, CommTimeouts) then
Result := False;
end;

Теперь два раза щёлкаем по CheckBox и записываем код:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
Connect
else
Disconnect;
end;

В событии формы OnDestroy записываем:

procedure TForm1.FormDestroy(Sender: TObject);
begin
if Status = true then //При выходе из программы отключаемся
Disconnect;
end;

Б) Шлём команды и принимаем ответы

Щёлкаем два раза по кнопке «Послать команду» и записываем код:

procedure TForm1.Button1Click(Sender: TObject);
var BytesWritten: DWORD;
s: string;
d: array[1..1500] of Char;
BytesRead: DWORD;
i: Integer;
Result: string;
begin
s := Edit1.Text; //Берём команды из Edit1…
s := s + #13 + #10;
WriteFile(ComFile, s[1], Length(s), BytesWritten, nil); //…и посылаем их телефону
Result := '';
if not ReadFile(ComFile, d, SizeOf(d), BytesRead, nil) then
begin
MessageDlg('Ошибка чтения!', mtError, [mbOK], 0);
exit;
end;

s := '';
for i := 1 to BytesRead do //Считываем ответ от телефона
s := s + d[I];
Result := s;
Memo1.Lines.Add(Result); //Выводим ответ от телефона в Memo
end;

Вот и всё! Теперь подключите телефон, запускайте программу, ставьте галку в CheckBox'е, и, после того, как вам написали в Memo, что вы подключились вводите в Edit любую AT-команду и жмите «Послать команду». Удачи!

В) Некоторые полезные команды AT

Этими командами вы можете воспользоваться, для посылки телефону (из поля Edit):

AT+CGMI – производитель
AT+CGMM – модель телефона
AT+CPAS – состояние
AT+COPS? – оператор
AT+CGSN – номер IMEI
AT+CGMR – версия прошивки
AT+CBC – степень зарядки телефона
AT+CREG? – статус сети
AT^SCID – номер SIM-карты
AT+CIMI - номер IMSI
AT^SPIC – попыток до блокировки SIM-карты

Более подробно о командах вы сможете узнать из pdf-инструкции s35i_c35i_m35i_atc_commandset_v01.pdf (можно утащить по адресу: http://www.like.e-technik.uni-erlangen. ... et_v01.pdf)

Примечания: Автор: Лазуткин Алексей (alessio19@mail.ru), помощь в написании: av3nger (av3nger@hakep.com)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
Daemon
Большое спасибо.

Добавлено спустя 3 минуты, 13 секунд:
Чего-то дока не хочет качаться.
И ещё - насколько реально и просто повалить этим истему телефона - чего делать нельзя?

Добавлено спустя 3 минуты, 22 секунды:
А с USB как взаимодействовать?

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64


 

Member
Статус: Не в сети
Регистрация: 02.10.2004
Откуда: Nizhny Novgorod
AzaZeo а стандартный тебя не устраивает?

_________________
Всем глупцам не терпится осмеять кого-нибудь.


 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
RuS.nnovХочется своего. Хоть раз Делфи с ользой применить.

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64


 

Member
Статус: Не в сети
Регистрация: 02.10.2004
Откуда: Nizhny Novgorod
AzaZeo тогда дерзай :)

_________________
Всем глупцам не терпится осмеять кого-нибудь.


 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
Почитал код. Появился вопрос - для всех мобил принцип один и тот же и надо смотреть лишь только спецификации комманд? И как записать txt-файл, картинку, мелодию?

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64


 

Member
Статус: Не в сети
Регистрация: 15.08.2003
Откуда: МО, Химки мкр.С
тут тебе врятли помогут
ступай на http://www.siemens-club.ru/ там много людей занисаются програмированием под телефон! Так что там тебе всё раскажут и покажу

_________________
Вот что значит быть взрослым: иметь на спидометре 210, но не привышать 60. (с) "Влюбись в меня, если осмелишся"


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 8 
-

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan