Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[4758] [질문] AsyncPro로 에뮬레이터를 만들어 보신분 제발...
찌께다시 [ ] 1116 읽음    1998-09-30 17:53
안녕하세요            어린 프로그래머 찌께다시입니다.
현재 지금 저는 AsyncPro를 이용해서 텔넷과 모뎀 통신을 지원하는
16bit 에뮬레이터를 만들고 있는 중입니다.



그런데 연결을 수행 하고 나서 ModemBusy에러가 자꾸나는데 어디서 잘못된 것인지
잘 판단이 안서네요...


혹시 AsyncPro를 이용해서 에뮬레이터를 만들어 보신분은

꼭 연락이나 답변좀 부탁합니다.... 급하거든요....
저의 일부 소스코드를 올립니다.
여러 델파이 도사님들의 관심 부탁드립니다.



{ ApplyDoc ------------------------------------------------------------------- }
procedure TTPowerEMU.ApplyDoc;
var
  Sess: Integer;
  PhoneNumber: String;
begin
  MainTerm.Active := False;
  MainTerm.Font           := ConnItem.DeskTop.FontName;
  MainTerm.DisplayRows    := ConnItem.DeskTop.DisplayRows;
  MainTerm.DisplayColumns := ConnItem.DeskTop.DisplayCols;
  MainTerm.Color          := ConnItem.DeskTop.BackColor;
  Emulator1.EmulatorType := ConnItem.Emulator;
  MainTerm.Active := True;
  MainTerm.Scrollback := ConnItem.DeskTop.ShowScroll;
  SizeToFont;
  Sess := ConnItem.Session;
  Caption := ConnItem.HostName +  SessName[Sess];
  Tag := Sess;
  LinkType := ConnItem.LinkType;
  ComPort1.Open := False;
  TelnetPort1.Open := False;
  NullPort1.Open := False;
  if ConnItem.LinkType = ltTelnet then begin  {현재 접속 아이탬이 텔넷일때}
    MainTerm.ComPort := TelnetPort1;
    TelnetPort1.DeviceLayer := dlWinsock;
    TelnetPort1.wsAddress := ConnItem.IpName;
    TelnetPort1.ComNumber := 0;
    TelnetPort1.Open := True;
    DefHost := ConnItem.HostName;
  end
  else if ConnItem.LinkType = ltModem then begin  {현재 접속 아이탬이 모뎀일때}
  if ComPort1.Open = True then
  begin
    MainTerm.BPlusTriggers := False;
    MainTerm.Active := False;
    Modem.Started := False;
    ComPort1.Open := False;
    if (AutoTrig <> 0) then
      ComPort1.RemoveTrigger(AutoTrig);
  end;
    MainTerm.ComPort := ComPort1;
    ComPort1.ComNumber := ConnItem.Modem.ComNum;
    ComPort1.Baud := ConnItem.Modem.Baud;
    {IFNDEF Win32}
    ComPort1.DeviceLayer := dlComm;  {16bit Setting}
    {ELSE
    ComPort1.DeviceLayer := dlWin32;} {32bit Settiong}
    {ENDIF}
    ComPort1.Open := True;
    ComPort1.TapiMode  := tmOff; {32bit부터 지원을 하기때문이다. 고려}
    {pConnSet.Caption := 'COM' + IntToStr(ComPort1.ComNumber) + ' ' + ConnItem.Modem.Baud;}
    ZmodemAutoSt := True;
    EnableZmodemAutoStart;    {사용자가 원한 다면 자동적으로 Z모뎀을  가동한다.}
    PhoneNumber := ConnItem.IpName;
    {Modem.Initialize;}
    {initialize the modem}
    if (ComPort1.TapiMode = tmOff) then
      if ComPort1.DCD then
      begin
        if (MessageDlg('Carrier detected.  Send modem initialization?',
                      mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
        begin
          Initializing := True;
          Modem.Initialize;
          Modem.Started := True;
        end;
      end
      else
      begin
        Initializing := True;
        Modem.Initialize;
      end;
    ConnectPhone(PhoneNumber);     {에러 발생지점}

    DefHost := ConnItem.HostName;
  end
  else if ConnItem.LinkType = ltRS232 then begin
    MainTerm.ComPort := NullPort1;
    NullPort1.ComNumber := ConnItem.Modem.ComNum;
    NullPort1.Baud := ConnItem.Modem.Baud;
   {$IFNDEF Win32}
    NullPort1.DeviceLayer := dlComm;
   {$ELSE}
    NullPort1.DeviceLayer := dlWin32;
   {$ENDIF}
    NullPort1.Open := True;
   {pConnSet.Caption := 'COM' + IntToStr(ComPort1.ComNumber) + ' ' + ConnItem.Modem.Baud;}
    DefHost := ConnItem.HostName;
  end;
  bConnect := True;  
end;



procedure TTPowerEMU.ConnectPhone(PhoneNumber: String);
begin
  if ComPort1.TapiMode = tmOff then begin
      DialerDialog.PhoneNumber := PhoneNumber;
      DialerDialog.Execute;
  end
  else begin

  end;

end;

{연결 버튼을 누를때}
procedure TTPowerEMU.btnDialUpClick(Sender: TObject);
begin
if DefHost = '' then begin
    with TfrmConnList.Create(Self) do begin
      ShowModal;
      DefHost := SelectHost;
      Free;
      MakeConnect(DefHost);
    end;
  end
  else begin
    MakeConnect(DefHost);
  end;
end;

procedure TTPowerEMU.MakeConnect(HostName: String);
var
  {bModem : TLinkType;}
  ExeName: array[0..255] of Char;
  Index: Integer;
begin
  if bConnect then begin
    StrPCopy(ExeName,Application.ExeName + ' ' + HostName);
    WinExec(ExeName, SW_SHOW);
  end
  else
  begin                                {여기서 ConnItem은 각종 연결설정정보를 저장하는
    {if DefHost = '' then              {클래스입니다.}
    begin                               
      Index := FindLinkIndex(HostName);  {현재 HostName와 같은 이름을 가지고 있는 아이탬의}]
                                         {인덱스를 찾아 현재 ConnItem클래스에 Assign한다.}
      ConnItem.Assign(Doc.ConnLinkItems.Items[Index]);
      ApplyDoc;
    {end;}
  end;
end;


+ -

관련 글 리스트
4758 [질문] AsyncPro로 에뮬레이터를 만들어 보신분 제발... 찌께다시 1116 1998/09/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.