답변을 쓰는 입장이 되어보질 못해서.. 제 입장에서만 질문을 드렸네요.
번거롭게 해드려 죄송합니다. 아직 초보라...
귀엽게 봐주세요...^.^
어제 저녁내내 다시 올리려고 애썼는데, 시스템 에러 메시지만 뜨고, 계속 안올려져서..
메시지를 보니까, 출력 부분의 16진수 자료형 때문인 것 같더라구요.
오늘 아침에도 또 그래서...
경호님의 글을 보고, 다시 생각해보니
제가 많은 부분을 생각지 않았다는 걸 알았습니다.
예제에 의존하는 처지라...
아래 부분은 시스템베이스(
http://www.sysbas.co.kr/)의 자료실에 있는
WinCom 컴포넌트(시리얼통신)를 사용한 예제에 있는 함수인데,
포트로 입력된 데이터를 Receive Data Box에 출력하는 기능을 합니다.
void TForm1::PrintMsg(Byte*ch, long len)
{
int i;
char tmp[1000], tmp2[10];
AnsiString PrivMsg;
PrivMsg = edtReceived->Text;
tmp[0] = 0;
for(i=0; i<len; i++) {
if(ch[i]<0x10 || ch[i]>0x7f) {
sprintf(tmp2, "퍼센트 엑스", ch[i]); // <- 이 부분 때문에 안 올려지는 것 같아
strcat(tmp, tmp2); // '퍼센트 엑스'이라고 썼습니다.
}
else {
sprintf(tmp2, "퍼센트 씨", ch[i]); // <- 이 부분도 마찬가지...
strcat(tmp, tmp2);
}
//----------------------------------------------- 여기부터 ~
for(int y=1; y<17; y++)
for(int x=1; x<4; x++)
StringGrid1->Cells[x][y]=IntToStr(ch[i]);
//------------------------------------ 여기까지가 제가 넣은 부분이에요.
}
if(PrivMsg.Length() + strlen(tmp) > 400)
PrivMsg = PrivMsg.SubString(PrivMsg.Length() -
(400 - strlen(tmp)), 400 - strlen(tmp));
PrivMsg = PrivMsg + AnsiString(tmp);
edtReceived->Text = PrivMsg;
}
송신측에서는..
송신창에 입력한 데이터들이 OnTimer를 통해 계속적으로 포트를 통해 전송되고,
수신측에는 포트를 통해 수신된 데이터가 수신창에 그대로 나타납니다.
수신창에 나타난 내용들이 표에 제대로 나타나는지 볼 수 있도록 같은 폼에
[3][16]인 스트링그리드를 추가하고, 코드를 약간 추가했습니다.
위에 제가 추가한 부분이 있는데, 실행해보니..
'1'을 계속 전송하면, 모든 셀에 똑같이'49'가 나타나고,
'2'를 계속 전송하면, 50이 나타나더라구요. '3'을 전송하면, 51...
수신된 데이터를 구조체에 넣을 생각은 못했구요..
읽으면서 바로 바로 일정 길이로 잘라서 셀에 차례대로 넣으려고 했습니다.
나중에 스트링그리드에 있는 내용을 엑셀 파일로 저장할구요..
그리고 위 함수 내용 중에서
제가 추가한 부분 아래에 있는 내용에 대해서도 설명해 주시면 감사하겠습니다.
이해가 잘 안돼서요...
참고로.. 지금은 포트1과 포트2를 연결해서 연습하고 있는데, 실제 해야할 것은
멀티미터로부터 데이터(전압)를 읽어와서 표에 나타내는 겁니다.
답변해주시는데 도움이 좀 될까 해서요.
질문을 제대로 한건지 모르겠네요.
이 부분이 제대로 안돼서 진행을 못하고 있는데...
답변해 주시면 정말정말 감사하겠습니다.