AsciiMassage를 사용하면 메시지를 보내고 받을 수 있습니다. 보다 정확하게는 모든 유형의 스트림(직렬, UDP 등)에 대한 ASCII 형식에 대한 마이크로컨트롤러 마사지 패커 및 파서입니다. 메시지 메시지는 항상 주소 문자열로 시작하고 그 뒤에는 사용자가 정의한 요소 수(바이트, 정수, 롱, 부동 소수점 또는 문자열)가 옵니다. 주소 문자열은 메시지를 라우팅하는 데 사용됩니다.
이것은 Massage API의 ASCII 구현입니다.
https://github.com/SofaPirate/AsciiMassage
전체 수업 문서는 "docs" 폴더나 온라인 여기에서 찾을 수 있습니다.
코드 상단에 라이브러리를 추가하고 "inbound"라는 AsciiMassageParser를 인스턴스화합니다.
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
내부 루프()는 직렬 스트림을 구문 분석()으로 구문 분석합니다. 구문 분석()이 true를 반환하면 마사지가 완료되고 준비된 것입니다.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
이 예는 주소 "value"로 시작하고 하나의 long과 하나의 int를 포함하는 마사지 요소를 구문 분석합니다.
// Does the massage's address match "value"?
if ( inbound.fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
전체 코드 블록은 다음과 같습니다.
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
// [...]
void loop () {
if ( inbound. parseStream ( &Serial ) ) {
// parse completed massage elements here.
// Does the massage's address match "value"?
if ( inbound. fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
}
// [...]
}
코드 상단에 라이브러리를 추가하고 "inbound"라는 AsciiMassageParser를 인스턴스화합니다.
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
메시지가 수신될 때 호출될 함수를 loop() 앞에 추가합니다.
void readMessage () {
// parse completed massage elements here.
}
내부 루프()는 직렬 스트림을 구문 분석()으로 구문 분석하고 메시지가 수신되면 "readMessage"를 실행합니다.
inbound.parseStream( &Serial , readMessage );
전체 코드 블록은 다음과 같습니다.
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
// [...]
void readMessage () {
// parse completed massage elements here.
// Does the massage's address match "value"?
if ( inbound. fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
}
void loop () {
inbound. parseStream ( &Serial , readMessage );
// [...]
}
코드 상단에 라이브러리를 추가하고 "outbound"라는 AsciiMassagePacker를 인스턴스화합니다.
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
마사지를 포장한 다음 Serial을 통해 스팀을 가합니다.
outbound.beginPacket( " value " ); // Start a packet with the address called "value".
outbound.addLong( millis() ); // Add the milliseconds.
outbound.addInt( analogRead( 0 ) ); // Add a reading of analog 0.
outbound.streamPacket(&Serial); // End the packet and stream it.