안녕하세요.
질문 제목처럼
-
유저데이터를 이용해 integer -> 'Data'라는 이름으로 Radio Buttons를 만들었습니다.
0;100cm
1;200cm
2;300cm
-
Xpresso를 만들어, Data를 불러왔습니다.
버튼에 위치에 따라 Data의 Result가 변경되는 것을 확인했습니다.(1번째 버튼을 누르면 0 2번째 버튼 1.....)
-
여기서 Compare말고 C.O.F.F.E.E를 이용하여
input값(버튼선택위치)에 0일경우(100cm 버튼을 누른경우 ) COFFEE에서 나온 output1 의 Result가 1이 되고.(다른버튼선택중엔0)
input값(버튼선택위치)에 1일경우(200cm 버튼을 누른경우 ) COFFEE에서 나온 output2 의 Result가 1가 되고,
input값(버튼선택위치)에 2일경우(300cm 버튼을 누른경우 ) COFFEE에서 나온 output3 의 Result가 1가 되고,
으로 만드려고 하는데
-
라디오 버튼에서 만든 Result는 잘되지만
COFFEE에서 real 로 인풋 아웃풋을 생성하여 아래와 같이 코딩하였는데 작동하지 않습니다.
알려주세용~!
== 연산자는 같나 비교 후에 그 자리에, 두 값이 같으면 True - 1 아니면 False - 0 을 리턴 합니다
그러니 인풋이 0 일때
if 문 안쪽의 Output1 == 1; 은 다음과 똑같습니다.
if( 1 )
{
0; // 아무것도 안하게 됩니다.
}
대입 연산자 ( = ) 를 써야죠.
게다가 이런 분기는 enum 과 switch 를 써주면 더 보기 좋습니다.
{
RADIO_100M = 0,
RADIO_200M,
RADIO_300M
}
main()
{
switch(Input1)
{
case RADIO_100M:
Output1 = 1;
Output2 = 0;
Output3 = 0;
break;
case RADIO_200M:
Output1 = 0;
Output2 = 1;
Output3 = 0;
break;
case RADIO_300M:
Output1 = 0;
Output2 = 0;
Output3 = 1;
break;
}
}
들어오는 값을 한눈에 볼 수 있으니까요.
또한 최종 출력 값인 Cube 오퍼레이터가 문제 인데
이것들은 아무런 제한없이 엑스프레소의 계산 사이클을 받고 있습니다.
아웃풋이 순서대로 1 , 0, 0 일때 이 값들이 전부 들어 간다는 거죠.
그럼 결국 1번일때 주고 싶던 100m 는 0 번일때 다시 0 값이 들어가면서
서로 값을 넣으려고 하니 제대로 된 값을 얻을 수 없습니다.
정리 하자면
아웃풋 1 => 100 m 값을 주려고 함
아웃풋 2 => 0 -> 0m 값을 주려고 함
아웃풋 3 => 0 -> 0m 값을 주려고 함
이 3가지 값들이 논리적으로는 서로 충돌이 되는거죠.
내부에서는 어떤 순서대로 이 3가지를 처리 할테지만 결과는 보장 못합니다.
그러니 이 큐브 오퍼레이터들을 제한 해 줄 필요가 있죠. 어짜피 지금의 아웃풋들은 0 과 1 의 값 입니다.
스윗치 역할을 하니까 각각 큐브 오퍼레이터의 On 에 연결 해주면 됩니다.