Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GSM модем TCommPortDriver [D7, XP]


Student :) ©   (2010-02-01 00:52:00) 

пишу программу для работы с gsm модемом , с помощью компонента TCommPortDriver , Возникла проблема при приёме ответа модема(вместо текста приходит что то не понятное)
вот мой код

procedure TForm1.Button1Click(Sender: TObject);
begin

with CommPortDriver1 do begin
ComPort:= TComPortNumber(pnCOM01);
Disconnect;
if not Connect then begin
ShowMessage('ERROR');
exit;
end;
CommPortDriver1.SendString('AT' + #13#10);
end;
end;


через снифер com порта приходит что ок
а программа выдаёт (.Â…jÕRÿ)

вот приём

procedure TForm1.CommPortDriver1ReceiveData(Sender: TObject;
 DataPtr: Pointer; DataSize: Integer);

var
s : string;
begin

s:= StringOfChar(' ', DataSize);
Move(DataPtr^, PChar(s)^, DataSize);
MEMO1.Lines.Add(s);
end;



как переделать чтоб в Memo был результат OK


Дмитрий Белькевич   (2010-02-04 18:49:00) [1]

Да ладно, бред. Коннект - вполне нормальный, только непонятно вот это приведение:


ComPort:= TComPortNumber(pnCOM01);


Что такое pnCOM01?

И вот здесь:

CommPortDriver1.SendString('AT' + #13#10);


CommPortDriver1 лишний.


> [9]


И что получилось?


12   (2010-02-02 08:25:00) [2]

н-да?
опять с прямым углом перепутал :)


Вариант   (2010-02-02 05:26:00) [3]


> 12 ©   (01.02.10 18:50) [10]


> Вопрос. Кому? Ты ж сам отключился только что..


> if not Connect then


Вообще-то TCommPortDriver.Connect -это метод(функция)....


12   (2010-02-01 18:50:00) [4]

тебе 3 раза сказали - бред.

with CommPortDriver1 do
begin
 ComPort:= TComPortNumber(pnCOM01);
назначил порт

 Disconnect;
отключился

if not Connect then
begin
ShowMessage('ERROR');
exit;
end;
проверил, не отключен ли

CommPortDriver1.SendString('AT' + #13#10);
послал команду.

Вопрос. Кому? Ты ж сам отключился только что..


Student :)   (2010-02-01 15:58:00) [5]

я немного переделал на так


procedure TForm1.CommPortDriver1ReceiveData(Sender: TObject;
 DataPtr: Pointer; DataSize: Integer);

var
s:ansistring;

begin
SetString(s,PChar(DataPtr),DataSize);
MEMO1.Lines.Add(s);
end;


Student :)   (2010-02-01 15:50:00) [6]

Спасибо буду пробывать


Slym   (2010-02-01 08:12:00) [7]

Student :) ©   (01.02.10 0:52)
s:= StringOfChar(' ', DataSize);
Move(DataPtr^, PChar(s)^, DataSize);
MEMO1.Lines.Add(s);


var
 s:ansistring;
begin
 SetString(s,DataPtr,DataSize);
 MEMO1.Lines.Add(s);
end;


KilkennyCat   (2010-02-01 01:33:00) [8]

читабельность - это очень относительное и субъективное.

Изучай спецификацию.
Не имея данных ни о модеме, ни о каком-то там компоненте ничего однозначного сказать нельзя.


Student :)   (2010-02-01 01:26:00) [9]

мне главное ответ чтоб пришёл в читабельном виде


Anatoly Podgoretsky   (2010-02-01 01:18:00) [10]

> Student :)  (01.02.2010 01:09:02)  [2]

Не переделать, а переписать все нах.


Германн   (2010-02-01 01:14:00) [11]


> Student :) ©   (01.02.10 01:09) [2]
>
> спасибо за прямоту!! но как переделать может подскажите?
> ?

Бред переделать нельзя по определению!
Ну вот как реагировать на такие действия:

> Disconnect;
> if not Connect then begin
> ShowMessage('ERROR');
> exit;
>
?
А это не единственный бредовый код.

К тому же я не знаю зверя по имени TCommPortDriver


Student :)   (2010-02-01 01:09:00) [12]

спасибо за прямоту!! но как переделать может подскажите??


Германн   (2010-02-01 01:07:00) [13]


> Student :) ©   (01.02.10 00:52)
>
> пишу программу для работы с gsm модемом , с помощью компонента
> TCommPortDriver

Такого бредового кода я уже давно не видел!


Наверх

Титульная страница Поиск, карта сайта Написать письмо