CPort는 써보지 않아서 도움은 못 드립니다만, 다른 컴포넌트를 사용해보시면 어떨까 싶어서 글 남깁니다.
TurboPower Async Professional 컴포넌트입니다.
http://sourceforge.net/projects/tpapro
받는 건 Event Handler만 작성하셔서 하시면 될 듯 하고.
보내는 것도 쉽게 처리했던 기억이 있습니다.
제 경우에 다운받고 1시간 정도만에 원하는 정도의 모듈은 작성해낼 수 있었던 듯 합니다.
잘 안 풀리신다면 한 번 사용해보시면 어떨까 생각됩니다.
허접 님이 쓰신 글 :
: 현재 rs232 통신으로 데이터를 받아오고 있습니다.
: 아래는 데이터를 받아와서 화면에 보여주는 부분입니다.
: 리스트 박스에 수신된 데이터를 보여주죠.
:
: void __fastcall TFormMain::ShowRcvData(int iLen, char *bData)
: {
: BYTE TempBuff[8];
:
: AnsiString RcvData1;
: int RcvData2;
: int RcvData3;
:
: POINT pt;
:
: GetCursorPos (&pt);
: SetCursorPos (bData[2]+pt.x, bData[1]+pt.y);
:
: CaptureImage->Canvas->MoveTo(pt.x-Left-3, pt.y-Top-45);
: CaptureImage->Canvas->LineTo(bData[2]+pt.x-Left-3, bData[1]+pt.y-Top-45);
:
: for(int i=0; i<iLen; i++)
: {
: RcvData2 = bData[1];
: RcvData3 = bData[2];
: }
: ListBox2->Items->Add(RcvData2);
: ListBox3->Items->Add(RcvData3);
: }
:
: 문제는 버튼을 누르면 0x01을 송신해야 하는건데, 어찌해야 될지를 모르겠네요.
: 아래는 볼랜드포럼에서 찾은 소스 내용입니다. 이 부분에서 처리를 해줘야 하는건지, 해야 한다면 어떻게 해야하는지 모르겠어요.
: 고수님들 도와주세요~ ㅠ.ㅜ
:
: void __fastcall TFormMain::btnSendClick(TObject *Sender)
: {
: if(!RS232C->IsOpened())
: {
: ShowMessage("Open Failed!");
: return;
: }
: RS232C->ClearTxBuffer();
:
: MakeSendData();
:
: if(!RS232C->WriteData(3, (BYTE *)&TxBuff))
: {
: ShowMessage("Header Send Error");
: }
: if(!RS232C->WriteData(TxBuff.Len, TxBuff.Data))
: {
: ShowMessage("Body Send Error");
: }
:
: }