직렬 포트를 통해 Matlab에 연결된 CyberGlove가 있습니다. 데이터 샘플을 요청한 다음 샘플을 다시 읽는 명령을 작성하려고합니다. 나는 다음 중 하나 진수 또는 ASCII에서 센서 정보를 얻을 수 읽기/쓰기 할 수Matlab에서 직렬 포트 읽기/쓰기 문제
s = serial('/dev/ttyS0')
set(s,'BaudRate',115200)
fopen(s)
:
나는 성공적으로 다음 코드로 장갑을 연결했다. 바이너리에서
내가 뭐하는 거지 : 다음 밖으로
항상fwrite(s,'G')
fread(s)
fread
번과 겉으로는 임의의 길이를 의미 정수를 포함하는 (1-100 +)의 열 벡터를 뱉어.
는 ASCII로, 명령은 다음과 같습니다
는fprintf(s,'g')
fscanf(s)
이는 판독 값으로 빈 문자열을 제공합니다. 글러브가 점점 커지고 있고, 적어도 다소 명령을 처리하고 있다는 것을 알고 있습니다. 왜냐하면 잘못된 명령을 주면 오류 메시지 e?
이 반환되기 때문입니다.
나는 정말로 나를 혼란스럽게하는 부분이 있습니다. 나는 우연히 장갑에서 올바르게 읽을 수있는 방법을 발견했습니다.
(겉으로는 임의의 출력을 제공 밖으로 회)fread(s)
fprintf(s,'g')
는
fscanf(s)
그때 올바른 문자열 출력 'g 1 76 93 113 89 42 20 77 98 106 117 81 62 23 52 60 34 68 57 254 92 26'
을 얻을.
내 질문은 :
가(1) 당사 마지막 부분은 올바른 응답을 생성합니까?
(2) 어떻게하면 바이너리 명령을 읽을 수 있습니까? 이것은 내가 실제로 얻고 싶은 것입니다.
이것은 Matlab 문제가 아닌 기기의 통신 프로토콜에 문제가있는 것처럼 들립니다. –
그럼 아마 다른 테스트를해야 할 것 같습니다. 거기에 사용할 수있는 간단한 명령 줄 방법이 있습니까? – Pterosaur
좋은 질문 ... 이것이 최선의 방법인지는 잘 모르겠지만,'cat/dev/ttyS0'을 읽고 쓰고'printf ...>/dev/ttyS0'를 써서 쓸 수있을 것 같습니다. printf는 bash가 내장되어 있습니다. 하지만 먼저 권하는 것은 장치의 문서를 확인하고 모든 것을 이해하는지 확인하는 것입니다. –