|
RS232 용 ActiveX 컴포넌트 측에서 외부로 제공되는 외부 제공용 인터페이스에서 Event로 제공했는지 궁금합니다.
인터페이스에서 외부로 Event를 제공 하지 않으면 OnDataReceive는 정상 동작되지 않을 것입니다.
Blu-ray™ 님이 쓰신 글 :
: 저는 볼랜드 C 빌더는 완전 초짜입니다.
:
: 지금 기존 프로그램에 RS-232 통신 하는 Active-X를 추가하고 있습니다.
: 다른 걸 Visual C++로 짤 때는 참 쉽게 만들었었는데...
:
: 결론적으로 Send는 잘 됩니다만...
: Receive Event가 발생되지 않는데, 이유를 잘 모르겠습니다.
:
: 같은 형식으로 VC++로 만들었을 때는 잘 되었습니다.
:
: // Send Function
: void __fastcall TmainForm::CommSend(short MAdr, short Adr, short Data1, short Data2)
: {
: WD[0] = MAdr;
: WD[1] = Adr;
: WD[2] = Data1;
: WD[3] = Data2;
:
: char str[24];
: sprintf(str, "Send : %02X, %02X, %02X, %02X", WD[0], WD[1], WD[2], WD[3]);
: Application->MessageBoxA(str, MB_OK);
:
: // Read Data Initialize...
: RD[0] = RD[1] = RD[2] = RD[3] = -1;
:
: m_Comm->SendData(WD[0], WD[1], WD[2], WD[3]);
: }
:
:
: // 이 함수는 첨부 그림과 같이 Events Tab에서 추가하였습니다.
: // RS-232 Data Receive Event Function...
: void __fastcall TmainForm::OnDataReceive(TObject *Sender, short MAdr,
: short Adr, short DataL, short DataH)
: {
: RD[0] = MAdr;
: RD[1] = Adr;
: RD[2] = DataL;
: RD[3] = DataH;
:
: char str[24];
: sprintf(str, "Receive : %02X, %02X, %02X, %02X", RD[0], RD[1], RD[2], RD[3]);
: Application->MessageBoxA(str, MB_OK);
:
: //// Timer over Error....
: if(MAdr == -1){
: Edit1->Text = "TimeOver!";
: }
: }
:
:
: 뭔가 다른 설정이 필요할 까요???
|