#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //Uno Rx Tx (12 13) = SoftwareSerial
const char* Polling_mode = "K 2\r\n";
const char* Stream_mode = "K 1\r\n";
const char* Standby_mode = "K 0\r\n";
bool tx_ready;
bool rx_ready;
String str;
void setup() {
Serial.begin(9600); //시리얼 통신 초기화
mySerial.begin(9600);
while(!mySerial){} //시리얼 통신 포트가 연결되기 전까지 대기
delay(14); // power on data ready
mySerial.print(Stream_mode); //Polling 모드로 변경
mySerial.print("Z\r\n"); //CO2값 읽기 명령
}
void loop()
{
if(rx_ready == 0) // overflow 처리
{
delay(31); // Measurement data ready
if(mySerial.available()>0) //수신받은 데이터가 0 초과, 즉 데이터가 존재한다면
{ //버퍼에서 읽어드린 char의 데이터를 String 형태로 반환
str = "";
str = mySerial.readStringUntil('\n');
Serial.println(str);
rx_ready = 1;
tx_ready = 1;
}
}
else if(tx_ready == 1)
{
mySerial.print("Z\r\n"); //CO2값 읽기 명령
tx_ready = 0;
rx_ready = 0;
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //Uno Rx Tx (12 13) = SoftwareSerial
const char* Polling_mode = "K 2\r\n";
const char* Stream_mode = "K 1\r\n";
const char* Standby_mode = "K 0\r\n";
String str;
void setup() {
Serial.begin(9600); //시리얼 통신 초기화
mySerial.begin(9600);
while(!mySerial){} //시리얼 통신 포트가 연결되기 전까지 대기
delay(14); // power on data ready
mySerial.print(Polling_mode); //Polling 모드로 변경
}
void loop()
{
if(Serial.read() == 'R')
{
mySerial.print("Z\r\n"); //CO2값 읽기 명령
}
if(mySerial.available()>0) //수신받은 데이터가 0 초과, 즉 데이터가 존재한다면
{ //버퍼에서 읽어드린 char의 데이터를 String 형태로 반환
str = "";
str = mySerial.readStringUntil('\n');
Serial.println(str);
}
}