사용자가 그림 (플롯)에서 선택하라는 메시지를 표시하려고합니다. 아래 코드를 실행하면 그림을 클릭 할 때까지 프롬프트가 표시되지 않습니다. 그 후에 프롬프트가 표시되고 코드가 계속됩니다. 사실, 그림을 선택할 때까지 ginput 호출 전에 호출되는 printf (또는 disp)에 대한 호출이 표시되지 않습니다.ginput 다음에 옥타브 printf가 출력되지 않습니다.
printf("Select part\n"); % (disp also doesnt work properly)
[xinput,yinput] = ginput(1);
프롬프트의 목적은 사용자에게 그림으로 이동하라는 경고이므로 그림을 선택하기 전에 자연스럽게 표시해야합니다.
둘 사이에 추가 중복 입력 호출을 추가하여 콘솔에 printf를 표시하도록 할 수 있습니다. 예 : 입력 ("Enter를 누르십시오"). 그러나 이것은 불편한 해결책입니다.
이상하게도 위의 코드 만 실행하면 정상적으로 작동합니다. 그러나 나머지 프로그램에서 실행하면 문제가 표시됩니다. 따라서 디버그하기가 어려울 수 있습니다. 또한 디버거를 사용하여 전체 코드에서 한 번에 한 줄씩 실행하면 그림이 선택되기 전에 프롬프트가 표시되므로 제대로 작동합니다.
그냥 혼란에 빠지기 만하면됩니다. 루프에서 프로그램의이 부분을 실행할 때 첫 번째 인스턴스는 프롬프트를 올바르게 표시하지 않지만 다른 모든 인스턴스는 제대로 작동합니다.
감사
편집 : 다음 코드는 안정적으로 (나를 위해) 내 전체 프로그램이 실패 같은 방법으로 실패; (단순화를 위해 다시 편집 됨)
figure(1);
input_test = input("press 1: ");
switch input_test
case 1
while true
clc;
printf("Left click to get coords or right click to finish\n");
[xinput,yinput,mouse_button] = ginput(1)
if mouse_button == 3
break
endif
endwhile
endswitch
그것은 행과 관련이있는 것으로 보입니다. 내가
input_test = 1;
와 이것을 대체 할 경우
input_test = input("press 1: ");
는 제대로 작동합니다. 이유가 무엇인지 알 수 없으며이 위치에서 입력 요청을 제거 할 수 없습니다.
'printf' 줄 다음에'pause (0.01)'를 시도하십시오. –
실제로 동작을 보여주는 최소한의 예제를 만들어보십시오. 그렇게하면 도움을 얻을 수있는 기회가 늘어납니다. 또한 종종 문제를 직접 찾아서 해결할 수 있습니다. –
Sardar에게 감사드립니다. 일시 중지는 내가 시도한 첫 번째 작업 이었지만 작동하지 않았다. – Dominic