增加以太网传入RTCM数据
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_drive.c
|
||||
*
|
||||
* Created on: 2023<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>
|
||||
* Created on: 2023??1??5??
|
||||
* Author: Administrator
|
||||
*/
|
||||
|
||||
@@ -18,7 +18,7 @@ static RingBuffer nmea_rx_buf;
|
||||
#define DMA_BUF_SIZE 1400
|
||||
uint8_t dma_rx_buffer[DMA_BUF_SIZE] __attribute__((aligned(4)));
|
||||
|
||||
//__attribute__((aligned(4))) uint8_t dma_buffer[2048]; // GCC<EFBFBD>
|
||||
//__attribute__((aligned(4))) uint8_t dma_buffer[2048]; // GCC??
|
||||
|
||||
|
||||
//void USART2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
@@ -48,7 +48,7 @@ void USART3_IRQHandler(void)
|
||||
{
|
||||
imu_buffer1.buf_len = IMU_LEN - DMA_GetCurrDataCounter(IMU_RX_CH);
|
||||
|
||||
if( (imu_buffer1.dma_buffer[imu_buffer1.active_buf][0] == IMU_IIM46234_HEADER1) && //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if( (imu_buffer1.dma_buffer[imu_buffer1.active_buf][0] == IMU_IIM46234_HEADER1) && //??????????????
|
||||
(imu_buffer1.dma_buffer[imu_buffer1.active_buf][1] == IMU_IIM46234_HEADER2) )
|
||||
{
|
||||
imu_buffer1.type = IIM46234;
|
||||
@@ -80,19 +80,24 @@ void UART4_IRQHandler(void)
|
||||
enter_critical_section();
|
||||
if(USART_GetITStatus(UART4, USART_IT_IDLE) != RESET)
|
||||
{
|
||||
RTCM_Buffer1.buf_len = RX_BUFFER_LEN - DMA_GetCurrDataCounter(RTCM_RX_CH);
|
||||
RTCM_Buffer1.active_buf ^= 1;
|
||||
if(ethernet != RTCM_Buffer1.type)//ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>״̬
|
||||
{
|
||||
RTCM_Buffer1.type = uart;//<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ģʽ
|
||||
RTCM_Buffer1.buf_len = RX_BUFFER_LEN - DMA_GetCurrDataCounter(RTCM_RX_CH);
|
||||
RTCM_Buffer1.active_buf ^= 1;
|
||||
|
||||
DMA_Cmd(RTCM_RX_CH, DISABLE);
|
||||
DMA_SetCurrDataCounter(RTCM_RX_CH, RX_BUFFER_LEN);
|
||||
// Switch buffer
|
||||
RTCM_RX_CH->MADDR = (uint32_t)(uintptr_t)&(RTCM_Buffer1.dma_buffer[RTCM_Buffer1.active_buf][0]);
|
||||
DMA_Cmd(RTCM_RX_CH, ENABLE);
|
||||
printf("rtcm receive\n");
|
||||
DMA_Cmd(RTCM_RX_CH, DISABLE);
|
||||
DMA_SetCurrDataCounter(RTCM_RX_CH, RX_BUFFER_LEN);
|
||||
// Switch buffer
|
||||
RTCM_RX_CH->MADDR = (uint32_t)(uintptr_t)&(RTCM_Buffer1.dma_buffer[RTCM_Buffer1.active_buf][0]);
|
||||
DMA_Cmd(RTCM_RX_CH, ENABLE);
|
||||
printf("rtcm receive\n");
|
||||
|
||||
USART_ReceiveData(UART4); // clear IDLE flag
|
||||
publishMessage(&RTCM_Buffer1, 1);
|
||||
}
|
||||
|
||||
USART_ReceiveData(UART4); // clear IDLE flag
|
||||
|
||||
publishMessage(&RTCM_Buffer1, 1);
|
||||
}
|
||||
exit_critical_section(0);
|
||||
}
|
||||
@@ -103,9 +108,8 @@ void UART8_IRQHandler(void)
|
||||
enter_critical_section();
|
||||
if(USART_GetITStatus(UART8, USART_IT_RXNE) != RESET)
|
||||
{
|
||||
uint8_t UART_temp = 0;
|
||||
UART_temp = USART_ReceiveData(UART8);
|
||||
// printf("USART8:%d\n", UART_temp); // <20><><EFBFBD><EFBFBD>
|
||||
USART_ReceiveData(UART8);
|
||||
// printf("USART8:%d\n", UART_temp); // ????
|
||||
}
|
||||
exit_critical_section(0);
|
||||
}
|
||||
@@ -118,7 +122,7 @@ void UART6_IRQHandler(void)
|
||||
enter_critical_section();
|
||||
if(USART_GetITStatus(UART6, USART_IT_RXNE) != RESET)
|
||||
{
|
||||
char ch = USART_ReceiveData(UART6);
|
||||
USART_ReceiveData(UART6);
|
||||
}
|
||||
exit_critical_section(0);
|
||||
}
|
||||
@@ -131,7 +135,7 @@ void UART7_IRQHandler(void)
|
||||
DMA_Cmd(UM982_RX_CH, DISABLE);
|
||||
uint16_t received_len = DMA_BUF_SIZE - DMA_GetCurrDataCounter(UM982_RX_CH);
|
||||
|
||||
// 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 3. ??????????????<3F><>?????
|
||||
for(uint16_t i = 0; i < received_len; i++)
|
||||
{
|
||||
uint16_t next_head = (nmea_rx_buf.head + 1) % RING_BUF_SIZE;
|
||||
@@ -166,7 +170,7 @@ void DMA1_Channel3_IRQHandler(void)
|
||||
enter_critical_section();
|
||||
imu_buffer1.buf_len = RX_BUFFER_LEN;
|
||||
|
||||
DMA_ClearITPendingBit(DMA1_IT_TC3);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
DMA_ClearITPendingBit(DMA1_IT_TC3);//?????<3F><>?
|
||||
exit_critical_section(0);
|
||||
}
|
||||
|
||||
@@ -184,7 +188,7 @@ void DMA2_Channel3_IRQHandler(void)
|
||||
enter_critical_section();
|
||||
RTCM_Buffer1.buf_len = RX_BUFFER_LEN;
|
||||
|
||||
DMA_ClearITPendingBit(DMA2_IT_TC3);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
DMA_ClearITPendingBit(DMA2_IT_TC3);//?????<3F><>?
|
||||
exit_critical_section(0);
|
||||
}
|
||||
|
||||
@@ -198,7 +202,7 @@ void DMA2_Channel3_IRQHandler(void)
|
||||
void DMA2_Channel9_IRQHandler(void)
|
||||
{
|
||||
enter_critical_section();
|
||||
DMA_ClearITPendingBit(DMA2_IT_TC9);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
DMA_ClearITPendingBit(DMA2_IT_TC9);//?????<3F><>?
|
||||
exit_critical_section(0);
|
||||
}
|
||||
|
||||
@@ -242,7 +246,7 @@ void dmaInit(void)
|
||||
DMA_Cmd(RTCM_RX_CH, ENABLE);
|
||||
USART_DMACmd(RTCM_UART, USART_DMAReq_Rx, ENABLE);
|
||||
|
||||
//IMU DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//IMU DMA????
|
||||
DMA_DeInit(IMU_RX_CH);
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
||||
@@ -270,7 +274,7 @@ void dmaInit(void)
|
||||
USART_DMACmd(IMU_UART, USART_DMAReq_Rx, ENABLE);
|
||||
|
||||
|
||||
//982 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//982 DMA????
|
||||
DMA_DeInit(UM982_RX_CH);
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
||||
@@ -363,7 +367,7 @@ void initUart(void)
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
USART_Cmd(UART4, ENABLE);
|
||||
|
||||
/* UART6 TX-->C.0 RX-->C.1 */ //<EFBFBD>ӵ<EFBFBD>982<EFBFBD><EFBFBD>com1
|
||||
/* UART6 TX-->C.0 RX-->C.1 */ //???982??com1
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
@@ -389,7 +393,7 @@ void initUart(void)
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
USART_Cmd(UART6, ENABLE);
|
||||
|
||||
/* UART7 TX-->C.2 RX-->C.3 *///<EFBFBD>ӵ<EFBFBD>982<EFBFBD><EFBFBD>com2
|
||||
/* UART7 TX-->C.2 RX-->C.3 *///???982??com2
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
@@ -443,7 +447,7 @@ void initUart(void)
|
||||
|
||||
|
||||
|
||||
void uartSendto(USART_TypeDef *USARTx, uint8_t * ucData, uint16_t len)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
void uartSendto(USART_TypeDef *USARTx, uint8_t * ucData, uint16_t len)//????2???????
|
||||
{
|
||||
for(uint16_t i = 0; i<len; i++)
|
||||
{
|
||||
@@ -457,9 +461,9 @@ void uartSendto(USART_TypeDef *USARTx, uint8_t * ucData, uint16_t len)//<2F><>
|
||||
|
||||
void rtcmProcess(void *signal_id)
|
||||
{
|
||||
(void)signal_id; // <EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(void)signal_id; // ??????????????????????????
|
||||
|
||||
uartSendto(UART6, (uint8_t *)&(RTCM_Buffer1.dma_buffer[RTCM_Buffer1.active_buf^1][0]), RTCM_Buffer1.buf_len);//ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD>ͷǼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
uartSendto(UART6, (uint8_t *)&(RTCM_Buffer1.dma_buffer[RTCM_Buffer1.active_buf^1][0]), RTCM_Buffer1.buf_len);//?????????????
|
||||
printf("rtcm forwarding\n");
|
||||
}
|
||||
|
||||
@@ -468,25 +472,25 @@ void rtcmProcess(void *signal_id)
|
||||
|
||||
void setDataProcess(void *signal_id)
|
||||
{
|
||||
(void)signal_id; // <EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(void)signal_id; // ??????????????????????????
|
||||
uartSendto(USART3, set_output_data, 20);
|
||||
}
|
||||
|
||||
void setRateProcess(void *signal_id)
|
||||
{
|
||||
(void)signal_id; // <EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(void)signal_id; // ??????????????????????????
|
||||
uartSendto(USART3, set_rate, 20);
|
||||
}
|
||||
|
||||
void setSaveProcess(void *signal_id)
|
||||
{
|
||||
(void)signal_id; // <EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(void)signal_id; // ??????????????????????????
|
||||
uartSendto(USART3, save_cmd, 20);
|
||||
}
|
||||
|
||||
void setSteamProcess(void *signal_id)
|
||||
{
|
||||
(void)signal_id; // <EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(void)signal_id; // ??????????????????????????
|
||||
uartSendto(USART3, stream_cmd, 20);
|
||||
}
|
||||
|
||||
@@ -494,18 +498,18 @@ void setSteamProcess(void *signal_id)
|
||||
|
||||
|
||||
/* /?**?
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>NMEA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ͣ<EFBFBD>XOR<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>飩
|
||||
* @param nmea_str <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NMEA<EFBFBD><EFBFBD>䣨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>$<24><>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>CRLF<EFBFBD><EFBFBD>
|
||||
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λУ<EFBFBD><EFBFBD>ͣ<EFBFBD>0x00~0xFF<EFBFBD><EFBFBD>
|
||||
* @brief ????NMEA????<3F><>????XOR???<3F><>?<3F><>
|
||||
* @param nmea_str ??????NMEA???????$??*??????????<3F><>??CRLF??
|
||||
* @return ???????8<>˧<EFBFBD>????0x00~0xFF??
|
||||
*/
|
||||
uint8_t nmea_checksum(const char *nmea_str)
|
||||
{
|
||||
uint8_t checksum = 0;
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>'$'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
// ?????????'$'??????????
|
||||
if (*nmea_str == '$') nmea_str++;
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'*'<27><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ???????????????'*'???????????
|
||||
while (*nmea_str && *nmea_str != '*') {
|
||||
checksum ^= (uint8_t)*nmea_str++;
|
||||
}
|
||||
@@ -514,24 +518,24 @@ uint8_t nmea_checksum(const char *nmea_str)
|
||||
|
||||
|
||||
/*
|
||||
* @brief <EFBFBD><EFBFBD>֤NMEA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param nmea_str <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NMEA<EFBFBD><EFBFBD>䣨<EFBFBD><EFBFBD>"$GPGGA,...*2A\r\n"<EFBFBD><EFBFBD>
|
||||
* @return У<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>0
|
||||
* @brief ???NMEA????<3F><>???
|
||||
* @param nmea_str ??????NMEA?????"$GPGGA,...*2A\r\n"??
|
||||
* @return <EFBFBD><EFBFBD>????????1????????0
|
||||
*/
|
||||
bool nmea_validate_checksum(const char *nmea_str)
|
||||
{
|
||||
const char *p = nmea_str;
|
||||
uint8_t computed_cs, received_cs;
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>'*'
|
||||
// ????<3F><>??????<3F><>??'*'
|
||||
while (*p && *p != '*') p++;
|
||||
if (*p != '*') return 0; // <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||||
if (*p != '*') return 0; // ??<3F><>??????
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ͣ<EFBFBD>2λʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
||||
// ??????????<3F><>????2<><32>????????
|
||||
if (!isxdigit(p[1]) || !isxdigit(p[2])) return 0;
|
||||
received_cs = (uint8_t)strtol(p+1, NULL, 16);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>
|
||||
// ???????<3F><>???
|
||||
computed_cs = nmea_checksum(nmea_str);
|
||||
|
||||
return (computed_cs == received_cs);
|
||||
@@ -542,7 +546,6 @@ void ProcessNMEAFrames(void *signal_id)
|
||||
static uint8_t parsing_buf[1024];
|
||||
static uint16_t parse_idx = 0;
|
||||
bool frame_complete = false;
|
||||
static uint8_t debug1s_cnt = 0;
|
||||
|
||||
// debug1s_cnt ++;
|
||||
// if(debug1s_cnt >= 20)
|
||||
@@ -555,82 +558,86 @@ void ProcessNMEAFrames(void *signal_id)
|
||||
|
||||
|
||||
while(nmea_rx_buf.tail != nmea_rx_buf.head && !frame_complete)
|
||||
{ // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{ // ???????????<3F><>?????????
|
||||
uint8_t ch = nmea_rx_buf.buffer[nmea_rx_buf.tail];
|
||||
nmea_rx_buf.tail = (nmea_rx_buf.tail + 1) % RING_BUF_SIZE;
|
||||
|
||||
if(nmea_rx_buf.overflow) {
|
||||
nmea_rx_buf.tail = nmea_rx_buf.head;
|
||||
// 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
// 3. ??????????
|
||||
nmea_rx_buf.overflow = 0;
|
||||
// 4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 4. ????????????????????????
|
||||
printf("Overflow recovery\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ֡ͷ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// ?????
|
||||
if(ch == '$') {
|
||||
if(parse_idx > 0 && parsing_buf[parse_idx-1] == '\n')
|
||||
{
|
||||
if (nmea_validate_checksum((char *)parsing_buf)) //У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (nmea_validate_checksum((char *)parsing_buf)) //<2F><>?????
|
||||
{
|
||||
memcpy(&nema_output1.buffer[0],parsing_buf,parse_idx);
|
||||
publishMessage(&nema_output1, 1);
|
||||
frame_complete = true; // <EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
frame_complete = true; // ???????????
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nmea crc error");
|
||||
frame_complete = true; // <EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
frame_complete = true; // ???????????
|
||||
}
|
||||
}
|
||||
parse_idx = 0;
|
||||
}
|
||||
|
||||
// <EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ?<3F><>????
|
||||
if(parse_idx < RING_BUF_SIZE-1 && !frame_complete)
|
||||
{
|
||||
parsing_buf[parse_idx++] = ch;
|
||||
|
||||
// ֡β<EFBFBD><EFBFBD><EFBFBD>
|
||||
// ?<3F><>???
|
||||
if(parse_idx >= 2 &&
|
||||
parsing_buf[parse_idx-2] == '\r' &&
|
||||
parsing_buf[parse_idx-1] == '\n')
|
||||
{
|
||||
if (nmea_validate_checksum((char *)parsing_buf)) //У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (nmea_validate_checksum((char *)parsing_buf)) //<2F><>?????
|
||||
{
|
||||
memcpy(&nema_output1.buffer[0],parsing_buf,parse_idx);
|
||||
publishMessage(&nema_output1, 1);
|
||||
frame_complete = true; // <EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
frame_complete = true; // ???????????
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nmea buf error");
|
||||
frame_complete = true; // <EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
frame_complete = true; // ???????????
|
||||
}
|
||||
parse_idx = 0;
|
||||
}
|
||||
}
|
||||
else if(!frame_complete)
|
||||
{
|
||||
parse_idx = 0; // <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
parse_idx = 0; // ??????
|
||||
}
|
||||
}
|
||||
|
||||
timerStart(&nmea_timer, 10, 1); // 100ms<EFBFBD><EFBFBD><EFBFBD>ٴδ<EFBFBD><EFBFBD><EFBFBD>
|
||||
timerStart(&nmea_timer, 10, 1); // 100ms????<3F><>???
|
||||
}
|
||||
|
||||
void navigationRs232Process(void *signal_id)
|
||||
{
|
||||
uartSendto(UART8, (uint8_t *)&navigation_rs232_output, sizeof(navigation_rs232_output));
|
||||
|
||||
// uint32_t debubg_len = sizeof(navigation_rs232_output);
|
||||
// uint8_t debug_ip[4] = {192,168,17,8};
|
||||
// UdpSendToData(SocketId2, (uint8_t *)&navigation_rs232_output, &debubg_len,debug_ip,8011);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// APPģ<EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
// APP????????
|
||||
void interfaceUartInit(void)
|
||||
{
|
||||
subscribe(&set_output_data, setDataProcess);
|
||||
|
||||
Reference in New Issue
Block a user