Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1109782453
Knight
2005-03-02 19:54
2005.03.20
TShellTreeView.Root...


14-1109853708
1008
2005-03-03 15:41
2005.03.20
Ищу поклонников Microsoft, найду - убью!


1-1110087607
TeNY
2005-03-06 08:40
2005.03.20
Dokymeнтация на WEBbrouser,Где можно найти?


14-1109348648
Frozzen
2005-02-25 19:24
2005.03.20
VBA макрос для word


3-1108277116
martin_
2005-02-13 09:45
2005.03.20
сервер InterBase и файловые системы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский