|
답변 너무 고맙습니다.
제가 잘모르니. 나름 답답하고 급하고 막 그러네요 ㅠ.ㅠ
밑에 소스만. 델파이 소스로 변환 안될까요???
찐짜 이것땜쉬 ㅠ.ㅠ
C++빌더소스중
"DO 보내기" 버튼 클릭했을때.
void __fastcall TForm1::DOSendbtnClick(TObject *Sender)
{
BYTE bSendBuf[30];
char cTermID[5];
String strTmp;
int ret;
memset(cTermID, 0x00, sizeof(cTermID));
strTmp = m_term_id_edit->Text;
if(strTmp.IsEmpty()){
return;
}
sprintf(cTermID, "%03d", strTmp.ToInt());
memset(bSendBuf, 0x00, sizeof(bSendBuf));
bSendBuf[0] = STX;
memcpy(&bSendBuf[1], "DO", 2); // Function Code
memcpy(&bSendBuf[3], cTermID, 3); // Terminal ID
memcpy(&bSendBuf[6], "00", 2); // Length
make_BCC(&bSendBuf[1], 7);
bSendBuf[9] = ETX;
if (OK != CommSendData(bSendBuf, 10)) {
MessageBox(0, "통신 포트로 자료를 보내지 못했습니다.", "Epic Comm Test", MB_ICONERROR|MB_OK);
}
return;
}
//----------- XOR 첵크하는 것같고요?
void make_BCC(BYTE *dat, int sz)
{
int i;
BYTE tmp_bcc = 0;
for(i=0;i<sz;i++) tmp_bcc ^= dat[i];
if (tmp_bcc <= 0x20) tmp_bcc = tmp_bcc + 0x20;
dat[i] = tmp_bcc;
}
//-----------
//---------- 소켓전송하는 부분인것같음??
int __fastcall TForm1::CommSendData(BYTE *bSendData, int Cnt)
{
BOOL ret;
//int i;
int j;
DWORD dwdTelayTime = 0;
String strTmp = "";
strTmp = m_send_delay_time_edit->Text;
dwdTelayTime = strTmp.ToInt();
Sleep(10);
//if(CSocket->Connected == false) return 0;
if(ClientSocket1->Socket->Connected == false) return 0;
for(j=0;j<Cnt;j++) {
//ret = CSocket->SendBuf(&bSendData[j], 1);
ret = ClientSocket1->Socket->SendBuf(&bSendData[j], 1);
Sleep(1);
}
Sleep(10);
return 1;
}
//----------
정말 부탁드립니다.
kissblade@lycos.co.kr 약간에 답례라도 하고싶습니다.
|