|
저렇게 버튼 이벤트로 넣어서 해보면.. 정확히 12바이트 올라오네요..
OnRxChar 이벤트와는 다른 개념이라는것을 알겠습니다.
그런데요.. 이런식으로 버튼으로 Receive를 받는다는건 Test의 의미밖에 없는것 같습니다.
실시간으로.. Timeout 구조체에 정의해 놓은 조건을 만족시킬때 발생하는 이벤트는 없습니까?
OnRxBuf 라고 이벤트가 있는것 같은데.. 한번 테스트 해보려고 하면..
"Property and method Comxxxxxx are not Compatible" 이라고 나오네요..
암튼.. Timeout 구조체의 조건을 만족시킬때 발생하는 이벤트.. 없다면.. 그 방법을 부탁드리겠습니다.
도움을 주시면 감사하겠습니다...
빈센트 님이 쓰신 글 :
: void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
:
: 이 이벤트는 님께서 쓰시는 그런 용도는 아니구요..
: 위의 이벤트에 있는 코드 삭제하시구요..
: 이렇게 해보세요..
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: AnsiString Str;
: Str = "Test";
: ComPort1->WriteStr(Str);
: }
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: AnsiString Str;
: ComPort1->ReadStr(Str, Count);
: ShowMessage(Str);
: }
:
: kabaliero 님이 쓰신 글 :
: : 데이타 중간에 0x00은 있는데요.. 구조는 이렇게 올라옵니다.
: :
: : 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x57
: :
: : 그런데도..
: :
: : 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 이렇게 한패킷.
: :
: : 0x00, 0x00, 0x03, 0x57 이렇게 한패킷 끊어서 받는다는게 좀 이상하네요..
: :
: : InputCount를 검사해도 처음에는 8 이라고 읽힙니다.
: :
: : 도대체 무슨 문제일런지...부탁드리겠습니다.
: :
: : ComPort 설정은 하나도 건드리지 않았습니다.
: :
: : FlowControl 은 하지 않습니다.
: :
: : 빈센트 님이 쓰신 글 :
: : : 혹시 데이타 중간에 0x00이 있진 않나요?.
: : : 있다면 아래와 같이 변경하셔야 하구요..
: : : ReadStr() == > Read()
: : : WriteStr() == > Write()
: : :
: : : 아니라면 타임 인터벌,하드웨어 문제 일것 같네요..
: : :
: : : 플로우는 하시는 작업에 따라서 달라 질텐데,
: : : 예제와 같다면 한 루틴에서 하드웨어로 데이타를 보내고,
: : : InputCount를 검사해서 버퍼의 내용을 읽어 오는 방식이 되어야 할 것 같은데요..
: : :
: : : 그러니까, 작성하신 테스트 프로그램같은 방식에서는
: : : 같은 루틴에서 주고 받고가 이루어지는게 좋습니다.
: : :
: : :
: : :
: : :
: : : kabaliero 님이 쓰신 글 :
: : : : CPort 컴포넌트를 깔고 예제까지 돌려봤는데요..
: : : :
: : : : 간단하게 프로그램을 짜서 하드웨어와 물려서 테스트를 해봤습니다.
: : : :
: : : : 문제는.. 12바이트가 올라와야하는데.. 8바이트, 4바이트로 잘려서 올라오네요..
: : : :
: : : : 타임 인터벌은.. ReadInterval만 50 줬거든요? 이 수치를 변환시켜봐도 8 + 4 로 올라오는건 변함이 없고요..
: : : :
: : : : 중간에 Event Char때문에 그런가..해서 evRxFlag를 false로도 해봤습니다만.. 여전히 8 + 4로 올라오네요..
: : : :
: : : : 8 bit, 1 stop bit, No Parity로 설정을 했고요.. FlowControl은 건들지 않았습니다.
: : : :
: : : : 무엇을 더 컨트롤해야하는지 궁금합니다. 아래 소스 올릴께요.. 답변 부탁드리겠습니다.
: : : :
: : : : //---------------------------------------------------------------------------
: : : :
: : : : #include <vcl.h>
: : : : #pragma hdrstop
: : : :
: : : : #include "MainForm.h"
: : : : //---------------------------------------------------------------------------
: : : : #pragma package(smart_init)
: : : : #pragma link "CPort"
: : : : #pragma link "CPortCtl"
: : : : #pragma resource "*.dfm"
: : : : TForm1 *Form1;
: : : : //---------------------------------------------------------------------------
: : : : __fastcall TForm1::TForm1(TComponent* Owner)
: : : : : TForm(Owner)
: : : : {
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : : void __fastcall TForm1::Button2Click(TObject *Sender)
: : : : {
: : : : ComPort1->Open();
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : : void __fastcall TForm1::Button3Click(TObject *Sender)
: : : : {
: : : : ComPort1->Close();
: : : : }
: : : : //---------------------------------------------------------------------------
: : : : void __fastcall TForm1::Button4Click(TObject *Sender)
: : : : {
: : : : ComPort1->ShowSetupDialog();
: : : : }
: : : : //---------------------------------------------------------------------------
: : : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : : {
: : : : AnsiString Str;
: : : :
: : : : Str = "Test";
: : : : ComPort1->WriteStr(Str);
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : : void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
: : : : {
: : : : AnsiString Str;
: : : :
: : : : ComPort1->ReadStr(Str, Count);
: : : : ShowMessage(Str);
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
|