|
시리얼 통신으로 HEX값이 들어있는 배열을 보내야 하거든요.
근데 배열에 대한 이해가 짧아서인지..
자꾸 막히네요..
제 생각에는
보내는 쪽. 받는 쪽.
AnsiString Temp[10]; AnsiString Temp[10];
Temp[0] = 0x10; ComPort1->ReadStr(Temp);
: -->
Temp[9] = 0x19; Edit1->Text = StrToInt(Temp[0]);
: Edit2->Text = StrToInt(Temp[1]);
ComPort1->WriteStr(Temp); :
Edit10->Text = StrToInt(Temp[9]);
뭐 이렇게 할려고 하는데..
WriteStr(Temp)나 ReadStr(Temp); 부분에서
Cannot convert 'AnsiString*' to 'AnsiString'라고 자꾸 나오면서 안되네요..
포인터라서 안된다는 이야기 같은데..
그래서 책에 있던 예제를 변경해서..
보내는 쪽. 받는 쪽.
AnsiString Temp; AnsiString Temp;
Temp = 0x10; ComPort1->ReadStr(Temp);
Temp = Temp + 0x11;
: -->
Temp = Temp + 0x19; Edit1->Text = StrToInt(Temp[0]);
: Edit2->Text = StrToInt(Temp[1]);
ComPort1->WriteStr(Temp); :
Edit10->Text = StrToInt(Temp[9]);
이렇게 했더니..
보내는 쪽에서는 문제가 없는데..
받는 쪽에서 보니깐..
Edit1->Text = Temp라고 확인하면,
171819..이렇게 보낸 데이터가 모두 들어가 있는데.
각각에 맞는지 볼려고.
Edit1-> Text = Temp[0];
Edit2->Text =Temp[1];
이렇게 하면..
Temp[0]엔 아무데이터도 없고요..(아예 코드에 Temp[0]이 들어가면 데이터가 안보이고요..--;)
Temp[0]을 코드에서 지우고..
Temp[1]부터 보면..
Temp[1]엔 1
Temp[2]엔 7
뭐 이렇게 값이 나뉘어서 들어가 있더라구요.
왜 이러죠..?
질문이 장황하기만 한데..
간단하게..
HEX값을 WriteStr();로 보내고..
ReadStr()로 받아서 배열로 보내졌다면..
뭐 if(Temp[1] == 0x11) 이렇게 확인하는 방법이 있을까요?
아니면 WriteStr()나 ReadStr()대신 다른걸 써야하나요?
|