1
Matlab의 직렬 포트에 점 ('.')이 있는지 확인하고 싶습니다. 이를 위해 나는 루프가 10 회 실행되어 'got'인지 확인합니다. 직렬 포트에 "A dot dot received"라고 표시하고 그렇지 않으면 수신중인 것을 표시합니다. 그러나 '받는다.' 직렬 포트에 "A dot is receibed"가 표시되지 않습니다. 명령 창에서 내 출력이 여기Matlab의 직렬 포트에서 수신 된 값을 확인할 수 없습니다.
s=serial('COM5', 'BaudRate',9600);%, 'DataBits',8, 'Terminator','');
fopen(s);
disp('Port succefully Opened');
count=0;
checkdot = '.';
for x = 1:10
recv= fscanf(s);
z = char(recv);
if (z== '.')
disp('A dot is received');
else
disp(z);
end
end
fclose(s);
그리고 : - - : 여기 내 코드는
>> Serialcomm
Port succefully Opened
.
.
.
.
.
.
.
.
.
.
그래서, 실수가 어디 말해주십시오.
아마도 strcmp를 사용해보십시오 : if strcmp (z, '.'). 캐리지 리턴이나 줄 바꿈 문자와 같이 반드시 볼 수없는 다른 문자가 수신 될 수도 있습니다. – am304
am304 : 시도했지만 작동하지 않습니다. –
캐리지 리턴 (' '\ r'')과 개행 문자 (''\ n'')를 확인해야합니다. 'if strcmp (z, '. \ r \ n')'. 실제로'disp'의 결과물을 보면'if strcmp (z, '. \ r \ n \ n')'와 같은 두 개의 새로운 줄 문자가있는 것 같습니다. 올바른 문자 집합을 찾을 때까지 실험해야합니다. – am304