2014-12-30 2 views
0

직렬 포트에서 문자를 받고 Matlab의 명령 창에 인쇄하려고합니다.Matlab의 직렬 포트에서받은 문자 값을 인쇄 할 수 없습니다.

serialOne=serial('COM6', 'BaudRate', 19200); 
fopen(serialOne); 
while 1>0 
recv = fread(serialOne, 1 ,'uint8'); 
recv 
end 
fclose(serialOne); 

실제로 teraterm에서 일부 데이터를 전송하고 MATLAB에서 제대로받을하려고이 응용 프로그램을 테스트하려면 : -이를 위해 나는이 코드를 작성합니다.

그리고 내 출력은 이것이다 : - 내가 matlab에에 문자를 '1'을 받아야한다 Teraterm에서 문자를 '1'전송에

하지만 - Teraterm에서 문자를 '2'전송에

recv = 

    49 

내가 matlab에에서 숯불 '2'를받을 만합니다 - 내가 터미널에서 보내고 모든 문자에 대해 내가 (십진수) ASCII를 수신하고 관찰

recv = 

    50 

. 그래서 내 질문에 어떻게 10 진수 ASCII 값 대신 문자 직접 가져올합니까?

답변

0

fread 함수는 문자를 숫자, 즉 ASCII 코드로 반환합니다. char 유형으로 변환하려면 문자를받은 후 recv = char(recv)을 사용할 수 있습니다.

recv = fscanf(serialOne,'%c',1)을 사용하면 char 유형의 문자를 직접 반환 할 수 있습니다.

+0

uint8을 char로 바꾸면 아무런 차이가 없지만 ans가 있습니다. 이 함수는 char로 변환해야합니다 : - char (recv) –

+0

좋아요, 주석 주셔서 감사합니다. 나는 그것이 작동 할 것이라고 생각했지만 그것을 테스트 할 수 없었다. 그에 따라 내 대답을 바꿀 것입니다. – hbaderts

관련 문제