|
이희성 님이 쓰신 글 :
: 보시면 오른쪽 2번재 메모장이 장치에서 들어오는 데이타를 일정시간간격으로 뿌려준겁니다. 근데..
: 데이타가 잘 나오다가 깨지는건....소켓 프로그램의 잘못이 아닌것 같은데..
: 이 데이타의변질의 원인을 짚어주실수 있는지요?
: 참 그림상에서는 안보이지만 일정하게 깨진다는 겁니다......제추측은 장치의 송신용 버퍼를 넘어서 다른 데이타를 읽어오는게 아닌가 싶은데 프로그램을 수정해도 답이 나오지 않네여?
: 참 그리고 이건 저번에도 물어본건데... 메모장으로 데이타 수신시..string 형태로 나와서 그런지..
: 제가 보낸데이타는 16진수인데...안나오네여..
: 제가 tcp 수신시 처리한부분은..
: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
: TCustomWinSocket *Socket)
: {
: AnsiString r_temp;
: int ReceiveSize = 0;
: if(ServerSocket1->Socket->Connected)
: {
: ReceiveSize = Socket->ReceiveLength();
: char *Buf = new char[ReceiveSize];
: Socket->ReceiveBuf(Buf, ReceiveSize);
: Memo2->Lines->Text =Memo2->Lines->Text+Buf;
: }
: }
:
: 스트링값으로 읽으면 안되구 hex값으로 읽어와 메모장에 뿌리는 방법좀 알려주세여...
: 그리고 tchart에서 위에서 받은 헥사값으로 뿌려주는 방법좀 알려주세여?
: tchart는 기본 3D가 아닌 기본 Line입니다.... add()를 쓰는건가요?
: 기본적인 소스라도 있나여?
:
: 참 그리고 첨부그림에 메모장 보면 memo1,2,3 이글씨 지우는 방법좀 알려주세여?
1.
int n=123;
Socket->SendBuf(&n,sizeof(n));
2.
int n=123;
AnsiString str;
str.printf("%X",n);
Socket->SendBuf(str.c_str(),str.Length()); //또는 Socket->SendText(str);
상대쪽에서 HEX 값으로 보냈다는 것이 위의
1과 같은 경우라면, 받을 때는
int n;
Socket->ReceiveBuf(&n,sizeof(n));과 같이 합니다.
이 것을 TMemo의 인스턴스로 보여주려면 먼저
AnsiString str;
str.printf("%X",n);
과 같이 16진수를 나타내는 문자열로 변환하여야 합니다.
2와 같은 경우라면,
16진수를 나타내는 문자열을 보낸 것이므로
AnsiString str;
Socket->ReceiveText(str);
하면 16진수를 나타내는 문자열이 str에 들어가 있게 됩니다.
|