?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 소스문법 질문드립니다

페이지 정보

작성자 아로나 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-10-04 15:11 조회858회 댓글1건

본문

gpsmodule은 gps모듈, commodule은 통신모듈

 

소프트시리얼 2개를 사용하는데 통신을 기본으로 하다가 명령시 gps모듈을 사용해서 값 전송을 하려 합니다

 

gpsmodule.listen() 로 gps가 연결된 소프트시리얼을 사용하고 다시 통신쪽으로 돌아가려면

 

commodule.listen()을 마지막에 선언해야 하나요 아니면 종료를 의미하는 함수가 따로있나요?

부분적 소스 첨부합니다

 

 switch(select){

 

    case 1: 

            Serial.println("드론의 현재위치 GPS 값");

            gpsmodule.listen();

             

             gpsvalue(gps); //gps파싱이 담긴 함수입니다

 

             commoudule.listen();

             

             

             Serial.println("===========================================================================");

             

            break;

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

아두이노의 통신/출력 클래스는 하드웨어 Serial 통신 함수와 같은 API를 제공하도록 가이드가 되어 있습니다. Serial 클래스에 보면 end() 함수가 있는데 이 함수는 SoftwareSerial 에도 적용이 되어 있습니다. 따라서 end() 함수로 시리얼 통신을 종료하면 됩니다. 재새용할때는 begin() 을 이용해서 다시 사용하구요.

그런데 예전에는 SoftwareSerial 함수가 end()를 지원하지 않았습니다. 그래서 SoftwareSerial을 2개 만들어서 listen()을 이용해 스위칭하는 방법을 사용했습니다. SoftwareSerial은 하나의 포트에만 listen을 하기 때문에 약간 우회적인 방법으로 스위칭을 한겁니다.
http://arduino.stackexchange.com/questions/4530/how-can-i-stop-softwareserial-from-receiving-data-and-re-enable-it-at-some-other