|
안녕하세요!
안녕하세요.. 패킷을 만들어서 데이터를 날려야 하거든요..(RS485통신을 합니다.)
RS485통신을 하는데 있어서 시스템에서 단말기로 전송을 시작하기전에 Token연결(서로통신할 수 있는 ok 할수 있는...)하는 패킷을 먼저 날려보내면 단말기 쪽에서 시스템에서 보낸 메세지를 동일하게 보내면 token할수 있는 것이고 그렇지않으면 에러가 나는 프로그램을 작성하려고 합니다. 좀 도와주세요!!
void __fastcall TfrmDoorDownload::labdownloadClick(TObject *Sender)
{
BYTE bSendBuf[256], bBuf[512];
int iSendLen;
memset(bSendBuf, ' ', 256);
MakeDL_START_pkt(0xA1, 1, 1, bSendBuf, &iSendLen);
cpComport5->Write( bSendBuf , iSendLen );
BinToHexASCii ( bBuf, bSendBuf, iSendLen);
meotrandata->Lines->Add( "COM5 Send --> " + AnsiString ((char *) bBuf) );
}
// 단말기 패킷부분
// 아래는 단말기로 보내기위한 token를 보내는 패킷의 정의부분입니다.
//FC 0xA0 -> Token패킷 (비고)'0'/'1' : Line Off / Line On
void MakeDL_START_Pkt(BYTE func, BYTE* Buf, int iLen, int* iPktLen)
{
BYTE LRC = 0;
BYTE pkt[256];
pkt[0] = STX; // Strat of Text
pkt[1] = (iLen+1)>>8; // Packet Length - 2bytes Integer value (LEN1)
pkt[2] = iLen+1; // Packet Length - 2bytes Integer value (LEN2)
pkt[3] = func; // Function Code
memcpy(pkt+4, Buf, iLen); // Packet n번째 DATA
pkt[4+iLen] = ETX; // End of Text
for (int i =1;i<=4+iLen;i++) // LEN1에서부터 ETX까지 EX-OR한 값
LRC ^= pkt[i];
pkt[4+iLen+1] = LRC;
memcpy (outpkt, pkt, iLen+5 );
*iPktLen = iLen+5;
}
위의에는 token패킷을 보내기위한 부분과 패킷을 정의한 부분으로 되어있습니다.
제가 하고자하는것은 위의 token패킷을 보내고자하는 부분이 맞았는가 하는것이고 그리고 token패킷을 보내고 응답패킷을 받야하 하는데 이것을 Data Receive라는 함수를 만들어야 한다고 하는데 어떻게 작성하는 되는지요... 좀 알려주셔요..
질문이 두서없었더라면.. 다시 질문해주셔요...
꼭 답변좀 부탁드립니다.
수고하셔요!!!
|