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

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

Как соединить два компа при помощи модемов? [D7]


PanModem ©   (2006-09-25 18:42:00) 

Как соединить два компа при помощи модемов? Как это делает Hyper Terminal?


PanModem   (2006-09-26 00:29:00) [1]

Сенькью


Reindeer Moss Eater   (2006-09-26 00:23:00) [2]

Спасибо, а какая команда записывает буфер в модем?
Нет никакого модема. Есть только открытый порт и writefile.

И каков должен быть размер буфера
Любой. Какой больше нравится.


PanModem   (2006-09-25 23:40:00) [3]

И каков должен быть размер буфера


PanModem   (2006-09-25 23:37:00) [4]

Спасибо, а какая команда записывает буфер в модем?


Reindeer Moss Eater   (2006-09-25 20:04:00) [5]

Позвонить : записать в открытый порт 'atd' + номер телефона + CR
Передать файл : открыть файл, прочитать в буфер, записать буфер в порт. Повторить пока файл не будет передан целиком.


PanModem   (2006-09-25 18:53:00) [6]

А как звонить и передавать файлы? Другого соединения нет.


PanModem   (2006-09-25 18:50:00) [7]

function Tmainform.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;


Вот так я подключаюсь к момеду

procedure Tmainform.Connect;
begin
 ComString := 'COM4';
 ComSpeed := 9200;

 if OpenCOMPort = true then //Открываем порт…
 begin
   mainform.Canvas.Draw(Image2.Left,Image2.Top,f1);
   if SetupCOMPort = true then //…и конфигурируем его
   begin
     mainform.Canvas.Draw(Image2.Left,Image2.Top,f2);
     Terminal.Lines.Add('Подключено к '+ComString+' на '+INtTostr(ComSpeed)+'Б\С');
   end;
 end;
 Sleep(1500); //засыпаем на полторы секунды чтобы дать время на соединение
end;
function Tmainform.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;


Наверх

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