Serial.write와 Serial.print의 차이점은 무엇입니까? 그리고 언제 사용됩니까?

Serial.write와 Serial.print의 차이점은 무엇입니까? 그리고 언제 사용됩니까?
둘 다 직렬 모니터에 인쇄하는 데 사용되었습니다. 실제 차이점은 무엇입니까?

답변

Serial.write는 좀 더 지구에 가깝고 간단하고 빠르며 한 번에 한 바이트 씩 바이너리를 말하도록 만들어졌습니다. 예 :

Serial.write(0x45); // will write 0100 0101 to the cable 

Serial.print는 더 다양하며 ASCII에서 바이너리로의 변환을 수행하며 BIN /으로 변환 할 수도 있습니다. HEX / OCT / DEC하지만 두 번째 인수를 지정해야합니다.

Serial.print(76, BIN) gives "0100 1100" Serial.print(76, OCT) gives "114" Serial.print("L", DEC) gives "76" Serial.print(76, HEX) gives "4C" 

시리얼 출력이있는 추가 예제 :

코드 :

 Serial.write(0x48); // H Serial.write(0x45); // E Serial.write(0x4C); // L Serial.write(0x4C); // L Serial.write(0x4F); // O 

SERIAL OUTPUT : 여기에 이미지 설명 입력

코드 :

 Serial.print("HELLO"); 

직렬 출력 : 여기에 이미지 설명 입력

Serial.println ()은 프레임에서 볼 수 있듯이 2 바이트 0x0D 및 0x0A 행의 끝을 추가합니다.

코드 :

 Serial.println("HELLO"); 

직렬 출력 :

여기에 이미지 설명 입력

Answer

Serial.write 및 Serial.print :

Serial.write ()

이진 데이터를 직렬 포트에 씁니다. 이 데이터는 바이트 또는 일련의 바이트로 전송됩니다. 숫자의 자릿수를 나타내는 문자를 보내려면 대신 print () 함수를 사용하세요.

직렬 .print ()

데이터를 사람이 읽을 수있는 ASCII 텍스트로 직렬 포트에 인쇄합니다.

응답

Serial.write 전송 Serial.print는 사람들이 쉽게 읽을 수 있도록 ASCII 문자를 전송하는 동안 직렬 포트에 바이트를 전송합니다.

일부 장치는 바이트를 사용하여 구성을 설정하고 일반적으로 데이터 패킷을 사용합니다. 그들과 통신하기 위해 쓰기 기능을 사용해야합니다. 결국 직렬 인터페이스를 통해 바이트를 전송 한 다음 각 바이트로 이동하여 해석 할 수 있습니다.

Answer

위의 모든 예 정확하지만 더 명확하게 … 직렬 포트를 통해 전송되는 모든 데이터는 1 “s 및 0″s로 전송됩니다. (분명한 …. 희망) … 두 명령의 차이점은 전송되는 내용이 실제로이 1 “및 0″간에 변환 / 해석되는 방식입니다. 가장 명확한 예는 번호 전송과 관련이 있습니다.

숫자 217을 전송해야한다고 가정 해 보겠습니다.이 숫자의 바이너리 (1 “s 및 0″s) 표현은 11011001입니다. Serial.write(217)는 말 그대로 11011001을 라인을 통해 전송합니다. 같은 숫자의 Hex 표현은 0xD9이고 명령 Serial.write(0xD9)는 동일한 것을 전송합니다 … 11011001.

흥미로운 부분이 여기 있습니다 … Serial.write("217") 명령을 사용하면 대신 00110010 00110001 00110111 … WHAT?!?!?
문자열이 인수로 전달되면 개별 문자로 분할되고 ASCII로 변환 된 다음 각 문자에 대한 바이트로 전송됩니다. 다음을 사용하면 정확히 동일한 출력을 얻을 수 있습니다.

Serial.write(50); Serial.write(51); Serial.write(55); 

(00110010 00110001 00110111)

이제 Serial.print()를 살펴 보겠습니다. Serial.print(217) 또는 Serial.print("217") 명령은 모두 00110010 00110001 00110111이라는 동일한 내용을 인쇄합니다. 이는 인쇄 명령이 먼저 임의의 숫자를 문자열 표현을 한 다음 Serial.write() 명령을 사용하여 각 문자를 개별 ASCII 비트로 보냅니다.

이것은 완전한 설명은 아니지만 도움이 되었으면합니다. 올바른 방향으로 생각 …

Answer

이에 대한 또 다른 방법은 Serial.write가 단일 Serial.print가 문자열을 허용하는 문자. 약간의 차이가있을 수 있지만 이것이 주요 내용입니다.

댓글

  • Serial.write(stringData.c_str());는 어떻습니까? stringData가 String으로 정의 된 경우
  • stringData가 String으로 정의되는 방법을 보여주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다