직렬로 수신된 데이터 바이트를 16진수 텍스트로 변환

직렬로 수신된 데이터 바이트를 16진수 텍스트로 변환

안녕하세요. 이제 바이트 데이터를 작성합니다(예:\x00\x11\x22) 내 PC에서 ttyS1 포트에서 unix를 실행하는 장치로 전송됩니다. 다음 중 하나를 사용하여 데이터를 인쇄할 수 있습니다.

cat /dev/ttyS1
od -x < /dev/ttyS1

둘 다 작동하지만 cat을 사용하면 "files"가 인쇄됩니다. od를 사용하면 일부 데이터 바이트가 표시됩니다.

0000000     00fe
0000001

제가 보낸 내용이 아닙니다(001122Hex).

올바른 16진수 표시를 얻는 방법은 무엇입니까?

편집하다:tty 권한 설정:

stty -F /dev/ttyS1 speed 115200 cs8 -cstopb -parenb -echo time 3 min 0

편집 2: 뭔가 이상한 일이 일어나고 있는데 이유를 모르겠습니다. 나는 다른 데이터를 보내려고 했습니다: "1049" 그리고 내 프로그램은 그것을 "\x10\x49"로 보냈습니다. od 반환:

0000000    4910
0000002

바이트를 반전시키는 것 같습니다. 하지만 지금 이해가 되지 않는 것은 "\x11\x49"와 같은 중복된 숫자가 있으면 일단 데이터가 손상된다는 것입니다. x11, x00, x22 등 반복되는 값이 모두 무슨 이유에서인지 잘못 변환되고 있는 것 같습니다. 또한 8보다 큰 값은 잘못 번역됩니다. 이유를 아시나요? hexdump 또는 od를 사용하면 동일한 결과가 나타납니다.

답변1

od는 여기서 방금 254 Decimal을 받았음을 나타내며 왼쪽의 par는 "줄 번호"입니다.

여기서 문제는 데이터를 보내는 방법이나 /dev/ttyS1 권한이라고 생각합니다. 이 부분에 대해 더 개발할 수 있습니까?

xxd -r을 사용하면 무엇을 볼 수 있나요?

관련 정보