Q&A

  • 시리얼 통신에서 수신이 ........
[질문]시리얼 통신에서 수신이 ........
작업환경 : 델파이7

라우터를 Com1으로(serial cable) 연결하고 하이퍼 터미널로 접속을 하였습니다.

세팅은 기본세팅으로 기본값 복원으로 하구요..
(즉 비트/초 : 9600, 데이터 비트 : 8, 패리티: 업음, 정비비트 : 1, 흐름제어: 없음)

접속이 되어 신호가 잘 수신되었습니다.

근데 제가 CComport로 코딩한 것으로는 전혀 받아지지가 않았습니다.
물론 세팅도 같이 했습니다.
(사실 제공된 예제 그대로 임....)

ComPortRxChar 이벤트가 발생하지 않는 겁니다. 글쎄.. 쩝.

제가 사용한 코딩입니다.
--------------------------------------------------------------------
unit ComMainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, CPort, CPortCtl;

type
  TForm1 = class(TForm)
    ComPort: TComPort;
    Button_Open: TButton;
    Button_Settings: TButton;
    Panel1: TPanel;
    Bt_Store: TButton;
    Bt_Load: TButton;
    ComLed1: TComLed;
    ComLed2: TComLed;
    ComLed3: TComLed;
    ComLed4: TComLed;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComLed5: TComLed;
    ComLed6: TComLed;
    Label1: TLabel;
    Label6: TLabel;
    GroupBox1: TGroupBox;
    Memo: TMemo;
    GroupBox2: TGroupBox;
    Edit_Data: TEdit;
    NewLine_CB: TCheckBox;
    Button_Send: TButton;
    Button1: TButton;
    procedure Button_OpenClick(Sender: TObject);
    procedure Button_SettingsClick(Sender: TObject);
    procedure Button_SendClick(Sender: TObject);
    procedure ComPortOpen(Sender: TObject);
    procedure ComPortClose(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button_OpenClick(Sender: TObject);
begin
  if ComPort.Connected then
    ComPort.Close
  else
    ComPort.Open;
end;

procedure TForm1.Button_SettingsClick(Sender: TObject);
begin
  ComPort.ShowSetupDialog;
end;

procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
begin
  Str := Edit_Data.Text;
  if NewLine_CB.Checked then
    Str := Str + #13#10;
  ComPort.WriteStr(Str);
end;

procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort.ReadStr(Str, Count);
  Memo.Text := Memo.Text + Str;
end;

end.
-------------------------------------------------------

왜 그럴까요?

이유를 알수 있는 좋은 방법이 없을까요?

방법만이라도 알려주시면 감사하겠습니다....

그럼 즐프하세용.
2  COMMENTS
  • Profile
    LDS 2003.11.21 00:36
    ComPortRxChar이벤트에 브레이크 포인터를 잡고 제대로 넘어오는지

    보는게 확실 할거 같습니다.

  • Profile
    초초보 2003.11.20 12:24
    FlowControl 부분을 요래조래 해보세요
    어차피 컨넥트 부분만 제대로 접속이 된다면
    값 넘어오지 말라고 협박해도 잘 넘어 옵니다