티스토리 뷰

프로젝트/GPS

GPS - CFG:MSG

Just4Fun 2023. 1. 28. 19:22

이전의 두개의 글에서 현재 시간을 가지고 오거나 현재 위치 정보를 가지고 오기 위해서는 매번 필요한 키를 입력해 주었다. GPS 모듈에 처음 전원이 들어왔을때 NMEA 메시지를 주기적으로 보내주는 것처럼 UBX 메시지도 주기적으로 보내주면 좋을것 같다.
이를 위해서 CFG-MSG 패킷을 이용하면 된다.
CFG-MSG 패킷에 원하는 메시지에 해당하는 class ID와 message ID를 넣어주면 된다.

void loop()
{
    uint8_t ch;

    if (uart0.getchar(ch))
    {
        if (ch == 'p')
            gps.cfg_prt();

        if (ch == 'm')
            gps.cfg_msg();

        if (ch == 'u')
            gps.nav_utc();

        if (ch == 'l')
            gps.nav_loc();
    }

    if (uart1.getchar(ch))
    {
        uart0.puthex(ch);
    }
}

void Gps::cfg_msg()
{
    struct cfg_msg_msg*  msg = (struct cfg_msg_msg*)&gps_data[6];
    uint32_t pkt_size = sizeof(struct cfg_msg_msg);

    make_header(CLASS_CFG, CFG_MSG, pkt_size);

    msg->cls_id = CLASS_NAV;
    msg->msg_id = NAV_TIMEUTC;
    msg->rate = 1;

    chksum(pkt_size);

    uart1.send_data(gps_data, pkt_size + 8);
}

'm' 키를 누르면 CFG-MSG 패킷을 내 보내도록 되어 있다. 이번 예제에서는 현재 시간을 주기적으로 받을수 있도록 NAV-TIMEUTC 메시지를 선택하도록 되어 있다.

위에 초록색으로 표시되어 있는 부분이 NAV-TIMEUTC 패킷이다. 동일한 구조의 메시지가 매초마다 한 번씩 들어오는 것을 볼수 있다. 만약 다른 메시지도 주기적으로 받기를 원하면 원하는 message ID를 알려주면 된다.

gps.zip
0.00MB

'프로젝트 > GPS' 카테고리의 다른 글

GPS - 응용  (0) 2023.02.03
GPS - NAV:POSLLH  (0) 2023.01.28
GPS - NAV:TIMEUTC  (0) 2023.01.28
GPS - CFG:PRT  (0) 2023.01.28
GPS - UBX  (0) 2023.01.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함