Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Протокол модема в текстовый файл   Найти похожие ветки 

 
Veles   (2005-03-03 13:51) [0]

Подскажите пожалуйста как сохранить ответы модема в текстовый файл (в ходе выполнения программы)
Даю команду модему: АТххх и ответ выводить в допустим Memo...


 
Anatoly Podgoretsky ©   (2005-03-03 13:57) [1]

Нужен виртуальный порт модема, закажи разработку. Или с помощью двух компьютеров, перехватывая поток байт. Тут требуется кабель и небольшая программа записи в файл всех захваченных байт.


 
Cosinus ©   (2005-03-03 13:58) [2]

Memo1.lines.append(MomedAnswer);


 
WondeRu ©   (2005-03-03 15:01) [3]

Anatoly Podgoretsky ©   (03.03.05 13:57) [1]
Нужен виртуальный порт модема


а одного компа не хватит??? с двумя COM-портами

Anatoly Podgoretsky ©   (03.03.05 13:57) [1]
закажи разработку


например, мне ;)


 
Anatoly Podgoretsky ©   (2005-03-03 15:03) [4]

WondeRu ©   (03.03.05 15:01) [3]
Нет один порт нужен для связи с первым компьютером, а ко второму подключается модем. Вот на первом компьютере достаточно одного порта.
Существуют также шпионы для ком-портов.


 
WondeRu ©   (2005-03-03 15:19) [5]

Anatoly Podgoretsky ©   (03.03.05 15:03) [4]
Существуют также шпионы для ком-портов.

ага... например я пользую
Portmon http://www.sysinternals.com


 
Cosinus ©   (2005-03-03 15:20) [6]


> Veles   (03.03.05 13:51)  
Прошу прощения за глупый ответ, но я просто вопроса не понял.
К > Anatoly Podgoretsky ©   (03.03.05 15:03) [4]
Существуют также шпионы для ком-портов
LGComSpy, PortMon и тд


 
WondeRu ©   (2005-03-03 15:22) [7]

Veles   (03.03.05 13:51)

может вот это поможет... эт я ерундой страдал, когда в модем в СониЭриксоне T230 разгонял)

function SendToModem(AMessage: String): String;
var
 NumberWritten, NumberReaded: cardinal;
 a: array[0..511] of Byte;
 PhoneCommand: string;
begin
 Result := "";

 PhoneCommand := AMessage +  #13 + #10;

 NumberWritten := 0;
 if WriteFile(hCommFile,
   PChar(PhoneCommand)^,
   Length(PhoneCommand),
   NumberWritten,
   nil) = false then
 begin
   ShowMessage("Unable to write to CommPort");
 end;

 ReadFile(hCommFile, a, 512, NumberReaded, nil);

 if NumberReaded > 0 then
   begin
     SetLength(Result, NumberReaded);
     CopyMemory(@Result[1], @a, NumberReaded);
   end;
end;

procedure SetSpeed(ASpeed: Cardinal);
var
 FDCB: TDCB;
begin
 GetCommState(hCommFile, FDCB);
 FDCB.BaudRate := ASpeed;
 SetCommState(hCommFile, FDCB);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 CommPort: string;
begin
 CommPort := "COM3";

 //-------------------Открыть порт как файл}

 hCommFile := CreateFile(PChar(CommPort),
   GENERIC_WRITE or GENERIC_READ ,
   0,
   nil,
   OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL,
   0);
 if hCommFile = INVALID_HANDLE_VALUE then
 begin
   ShowMessage("Unable to open " + CommPort);
   exit;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 memo1.Lines.Add(SendToModem("at"));
 memo1.Lines.Add(SendToModem("at+ipr=19200"));
 SetSpeed(CBR_19200);

 memo1.Lines.Add(SendToModem("at"));
 memo1.Lines.Add(SendToModem("at&w"));
 memo1.Lines.Add(SendToModem("at+ipr=38400"));
 SetSpeed(CBR_38400);

 memo1.Lines.Add(SendToModem("at"));
 memo1.Lines.Add(SendToModem("at&w"));
 memo1.Lines.Add(SendToModem("at+ipr=57600"));
 SetSpeed(CBR_57600);

 memo1.Lines.Add(SendToModem("at"));
 memo1.Lines.Add(SendToModem("at&w"));
 memo1.Lines.Add(SendToModem("at+ipr=115200"));
 SetSpeed(CBR_115200);
end;


 
Cosinus ©   (2005-03-03 15:24) [8]

Сорри за OFFTOP

> WondeRu ©   (03.03.05 15:19) [5]

Насколько реально написать монитор портов на таком уровне, чтобы система не воспринимала порт, как занятый, но не особо углубляясь в железо? Т.е. на уровень ниже, чем виндовое. Т.е. банальным перехватом каким-нибудь?


 
WondeRu ©   (2005-03-03 15:28) [9]

Cosinus ©   (03.03.05 15:24) [8]
банальным перехватом каким-нибудь?

перехват API функции ReadFile, думаю самый простой способ...


 
Cosinus ©   (2005-03-03 15:43) [10]


> WondeRu ©   (03.03.05 15:28) [9]
Насколько я понимаю, перехват ReadFile будет работать, только если этот самый ReadFile, кто-нибудь инициирует. То есть если не запущено ни одно приложение, работающее с портом, а на него (порт) данные сыпятся, то перехват ничего не даст. Или не так?


 
WondeRu ©   (2005-03-03 15:50) [11]

Cosinus ©   (03.03.05 15:43) [10]
так... но если порт никем не открыт... сам открывай его) из своей проги!)



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
3-1108478008
denis24
2005-02-15 17:33
2005.03.20
FibDataset+parameters?


6-1105643974
Бульдозер
2005-01-13 22:19
2005.03.20
Сетевая программа на чистом WinSock


14-1109578928
AlexG
2005-02-28 11:22
2005.03.20
Обреченность вида - Человек


8-1100501665
maxistent
2004-11-15 09:54
2005.03.20
прозрачная текстура


4-1107349916
GMan
2005-02-02 16:11
2005.03.20
Список потоков (Threads) для процесса