|
Edit1->Text 가 원하시는 내용인데요
1Byte씩 짤라서 보내겠다는 말씀이죠?
1. 한번에 ...
Edit1->Text.c_str() ==> 이것이 원하시는 string의 char * 입니다.
길이는 Edit1->Text.Length() 하시면 되구요
WriteBuffer( Edit1->Text.c_str() , Edit1->Text.Length() ) ; //==> 뭐 이런식으로 하면 한번에 가겠네요
rs232통신 컴포넌트를 쓰신하면 컴포넌트에 string을 한번에 내보내는 함수가 있는경우가 많습니다.
예) WriteString () , PutString ...등
2. 한번에 한 char씩
2-1 AnsiString 형의 Text에서 c_str()해서 pointer를 ++ 하면서 1Byte씩 내보내도 되구요
2-2 AnsiString은 배열로 접근하는 방법이 있는데.. .
Edit1->Text[1] 하면 첫번째 char 입니다.
주의 - Text[0]은 없습니다. , Text[1] 부터 있음을 명심하십시요
for (int i=1 ; i <= Edit1->Text.Length() ; i++)
{
WriteChar ( Edit1->Text[i]);
}
2-3
Edit1->Text[] 접근이 헷길리시면
그냥 Buffer선언해서 string을 copy하십시요
char * cBuf[256];
strcpy(cBuf,Edit1->Text.c_str());
-----------------------------
이렇게 한다음
한Byte씩 보내든 한번에 전부다 보내든 알아서 하시면 되겠죠~!
추신
1. WriteBuffer , WriteChar 는 제가 임의로 명명한 함수입니다.
2. Edit1->Text에 "123" 이있었으면
그값을 그대로 write할경우 hex로 보면 0x31, 0x32 , 0x33 이 나가게 되죠
(ASCII 테이블을 보고 확인 하실수있습니다.)
빌리 님이 쓰신 글 :
: 제가 Edit1에 쓰여진 123이라는 숫자를 하나씩 짤라서 RS232통신으로 각각 데이터를 날리려고 하는데요 잘 모르겠네요...
:
: Edit1에서 첫번째 자리에 1을 받아서 데이터 날리고,
:
: Edit1에서 두번째 자리에 2를 받아서 데이터 날리고,
:
: Edit1에서 세번째 자리에 3을 받아서 데이터를 날리려고 합니다.
:
: 알려주세요...
|