많은 질문과 답변을 읽었지만 해결책을 찾지 못했습니다. 내 질문이 맞을 수도 있지만 약간의 지침이 필요합니다. 내 Arduino 장치에서 데이터를 읽는 Linux에서 직렬 포트를 사용하고 있습니다. Arduino에서 Linux로 데이터를 보내려고 할 때마다, 먼저 Arduino에서 오는 전체 바이트를 나타내는 2 바이트를 보냅니다. 이 두 바이트를 정수 값으로 변환하고 직렬 포트에서 데이터 읽기를 시작합니다. 난 그냥 처음 {1, 44}를 쓸 것입니다, 나는 리눅스에 Ardiuno에서 300 바이트를 보내려면, 말과 다음 공식에 의해 INT로이 1, 44 바이트를 변환 :직렬 포트에서 NULL 문자 읽기 Linux C
char data[] = {1, 44};
int to_read = data[0]
to_read = to_read << 8;
to_read = to_read | data[1];
return to_read;
이 나에게 300을 줄 것이다 int 값, charm처럼 작동합니다. 하지만 255 이하의 데이터를 읽어야 할 때 문제가 발생합니다. 100 바이트를 읽으려는 경우 처음 두 바이트는 {0, 100}이됩니다. 0은 null 문자이고 직렬 포트는 처리하지 않습니다 (직렬 포트에 0을 직접 썼습니다. 항상 0 바이트를 썼습니다). 그리고 모든 순서가 잘못되었습니다. 그래서 내 질문에 직렬 포트 또는 누군가가 내게 더 나은 솔루션을 제공하십시오. null 문자를 읽을 수 있습니다 ..
미리 감사.
이유 # 18 문자에 대해 이야기 할 때 사람들이 "널 (null)"를 말할 때 내가 그것을 싫어. "널"은 기본적으로 "값 없음"을 의미합니다. 즉, 허용되는 값의 범위를 벗어나고 "null 문자"는 코드 0의 문자입니다. IE : 다소 홀수 인 경우 허용되는 값입니다. 대신 NUL을 사용하십시오. 이것이 ASCII 테이블에있는 것입니다. : P – cHao
포인트가 0 인 문자는 여전히 일반 문자입니다. 끝이없는 바이트 문자열 *로 작업 할 때 C에 특별한 의미가 생기는 경우도 있습니다. 반면에 직렬 포트는 덜 신경 쓸 수 없었습니다. – cHao
양면에 직렬 장치를 설치하는 방법과 이러한 장치를 통해 데이터를 보내고받는 방법을 코드로 표시하고자 할 수 있습니다. – alk