BASIC4MCU | 질문게시판 | 블루투스 간 송신받은 문자열 저장 및 출력
페이지 정보
작성자 kdkd 작성일2019-06-13 19:42 조회10,296회 댓글2건본문
블루투스에서 블루투스로 받은 DISI 에서 받은 문자열을 저장하거나 출력하려 합니다.
하나의 HM-10 블루투스 모듈에서 다른 HM-10 블루투스 모듈을 서로 master/slave로 연결하여
AT 커맨드
AT+DISI?
로 문자열을 받아왔습니다. 그럼 마지막에 RSSI값이 뜨는데 이 값을 어떻게 변수에 저장하고 출력할 수 있는지 모르겠어서 조언 부탁 드립니다.
#include
int blueTx=3;
int blueRx=2;
char list1[80];
char text;
int index=0;
int cnt=0;
SoftwareSerial bluetooth_main(blueTx, blueRx); // RX, TXvoid setup()
{
Serial.begin(9600);
bluetooth_main.begin(9600);
bluetooth_main.println("AT+DISI?"); // master/slave가 미리 설정된 블루투스에 AT COMMAND를 넣어줍니다.
}void loop() {
if (bluetooth_main.available()){
Serial.write(bluetooth_main.read());
index++;text=bluetooth_main.read();
if(index>9 && index<90 == true){
list1[cnt]= text; //OK~~:-0** *은 숫자 문자열의 시작 OK 부터 마지막 RSSI 값까지 한글자씩 char 배열에 저장합니다.
cnt++; //앞의 OK+DISIS 를 무시하기 위해 index는 10부터 합니다.
delay(1);if(index==89){
Serial.write("one sentence"); // 한 줄이 형성되면 one sentence를 출력합니다.for(int i=87;i<90;i++){
Serial.print(list1[i]);
}
cnt=0 ;
index=9;
}
}}
if (Serial.available()){
bluetooth_main.write(Serial.read());
}
}
이렇게 코딩하여 실행시키면
시리얼 모니터에 이렇게 뜹니다.
의도상 one sentence 뒤에 첫줄의 경우 080 값이 떴어야 하는 건데 왜 이러는 것인지 모르겠습니다. ㅠㅠ 조언 부탁드립니다.
참고로 사전에 블루투스에 입력해둔 AT COMMAND는
여기서 가져왔습니다.
댓글 2
조회수 10,296master님의 댓글
master 작성일
수신에 문제가 있습니다.
void loop(){
if(bluetooth_main.available()){
Serial.write(bluetooth_main.read()); // <------ 여기서 1번 받았고 (정상적인 값)
index++;
text=bluetooth_main.read(); // <------ 여기서 또 한번 받으려고 시도하지만 비정상적인 값을 받습니다.
master님의 댓글
master 작성일
void loop(){
if(bluetooth_main.available()){
text=bluetooth_main.read(); // <------ 1회만 변수에 수신하며
Serial.write(text); // <--- 저장한 변수값을 이용하면 됩니다.
index++;