@@ -1,7 +1,7 @@
/*
* eth_drive.c
*
* Created on: 2023<32> <33> 1<EFBFBD> <31> 5<EFBFBD> <35>
* Created on: 2023<32> <33> 1<EFBFBD> <31> 5<EFBFBD> <35>
* 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<43>
//__attribute__((aligned(4))) uint8_t dma_buffer[2048]; // GCC<43>
//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 ) & & //<2F> <> <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 ) & & //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( imu_buffer1 . dma_buffer [ imu_buffer1 . active_buf ] [ 1 ] = = IMU_IIM46234_HEADER2 ) )
{
imu_buffer1 . type = IIM46234 ;
@@ -105,7 +105,7 @@ void UART8_IRQHandler(void)
{
uint8_t UART_temp = 0 ;
UART_temp = USART_ReceiveData ( UART8 ) ;
// printf("USART8:%d\n", UART_temp); // <20> <> <EFBFBD> <EFBFBD>
// printf("USART8:%d\n", UART_temp); // <20> <> <EFBFBD> <EFBFBD>
}
exit_critical_section ( 0 ) ;
}
@@ -131,7 +131,7 @@ void UART7_IRQHandler(void)
DMA_Cmd ( UM982_RX_CH , DISABLE ) ;
uint16_t received_len = DMA_BUF_SIZE - DMA_GetCurrDataCounter ( UM982_RX_CH ) ;
// 3. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݿ<EFBFBD> <DDBF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> <EFBFBD> <EFBFBD> <EFBFBD>
// 3. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݿ<EFBFBD> <DDBF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> <EFBFBD> <EFBFBD> <EFBFBD>
for ( uint16_t i = 0 ; i < received_len ; i + + )
{
uint16_t next_head = ( nmea_rx_buf . head + 1 ) % RING_BUF_SIZE ;
@@ -166,7 +166,7 @@ void DMA1_Channel3_IRQHandler(void)
enter_critical_section ( ) ;
imu_buffer1 . buf_len = RX_BUFFER_LEN ;
DMA_ClearITPendingBit ( DMA1_IT_TC3 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
DMA_ClearITPendingBit ( DMA1_IT_TC3 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
exit_critical_section ( 0 ) ;
}
@@ -184,7 +184,7 @@ void DMA2_Channel3_IRQHandler(void)
enter_critical_section ( ) ;
RTCM_Buffer1 . buf_len = RX_BUFFER_LEN ;
DMA_ClearITPendingBit ( DMA2_IT_TC3 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
DMA_ClearITPendingBit ( DMA2_IT_TC3 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
exit_critical_section ( 0 ) ;
}
@@ -198,7 +198,7 @@ void DMA2_Channel3_IRQHandler(void)
void DMA2_Channel9_IRQHandler ( void )
{
enter_critical_section ( ) ;
DMA_ClearITPendingBit ( DMA2_IT_TC9 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
DMA_ClearITPendingBit ( DMA2_IT_TC9 ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD>
exit_critical_section ( 0 ) ;
}
@@ -242,7 +242,7 @@ void dmaInit(void)
DMA_Cmd ( RTCM_RX_CH , ENABLE ) ;
USART_DMACmd ( RTCM_UART , USART_DMAReq_Rx , ENABLE ) ;
//IMU DMA<4D> <41> <EFBFBD> <EFBFBD>
//IMU DMA<4D> <41> <EFBFBD> <EFBFBD>
DMA_DeInit ( IMU_RX_CH ) ;
DMA_InitStructure . DMA_PeripheralInc = DMA_PeripheralInc_Disable ;
DMA_InitStructure . DMA_MemoryInc = DMA_MemoryInc_Enable ;
@@ -270,7 +270,7 @@ void dmaInit(void)
USART_DMACmd ( IMU_UART , USART_DMAReq_Rx , ENABLE ) ;
//982 DMA<4D> <41> <EFBFBD> <EFBFBD>
//982 DMA<4D> <41> <EFBFBD> <EFBFBD>
DMA_DeInit ( UM982_RX_CH ) ;
DMA_InitStructure . DMA_PeripheralInc = DMA_PeripheralInc_Disable ;
DMA_InitStructure . DMA_MemoryInc = DMA_MemoryInc_Enable ;
@@ -363,7 +363,7 @@ void initUart(void)
NVIC_Init ( & NVIC_InitStructure ) ;
USART_Cmd ( UART4 , ENABLE ) ;
/* UART6 TX-->C.0 RX-->C.1 */ //<2F> ӵ<EFBFBD> 982<38> <32> com1
/* UART6 TX-->C.0 RX-->C.1 */ //<2F> ӵ<EFBFBD> 982<38> <32> 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 +389,7 @@ void initUart(void)
NVIC_Init ( & NVIC_InitStructure ) ;
USART_Cmd ( UART6 , ENABLE ) ;
/* UART7 TX-->C.2 RX-->C.3 */ //<2F> ӵ<EFBFBD> 982<38> <32> com2
/* UART7 TX-->C.2 RX-->C.3 */ //<2F> ӵ<EFBFBD> 982<38> <32> 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 +443,7 @@ void initUart(void)
void uartSendto ( USART_TypeDef * USARTx , uint8_t * ucData , uint16_t len ) //<2F> <> <EFBFBD> <EFBFBD> 2<EFBFBD> <32> <EFBFBD> ͺ <EFBFBD> <CDBA> <EFBFBD>
void uartSendto ( USART_TypeDef * USARTx , uint8_t * ucData , uint16_t len ) //<2F> <> <EFBFBD> <EFBFBD> 2<EFBFBD> <32> <EFBFBD> ͺ <EFBFBD> <CDBA> <EFBFBD>
{
for ( uint16_t i = 0 ; i < len ; i + + )
{
@@ -457,9 +457,9 @@ void uartSendto(USART_TypeDef *USARTx, uint8_t * ucData, uint16_t len)//
void rtcmProcess ( void * signal_id )
{
( void ) signal_id ; // <20> <> <EFBFBD> DZ<EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> ʹ <EFBFBD> ã<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( void ) signal_id ; // <20> <> DZ<EFBFBD> <C7B1> <EFBFBD> Ϊ<EFBFBD> <CEAA> ʹ <EFBFBD> ã<EFBFBD> <C3A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <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 ) ; //ֱ<> ӷ<EFBFBD> <D3B7> ͷǼ<CDB7> <C7BC> <EFBFBD> <EFBFBD> ڴ<EFBFBD>
uartSendto ( UART6 , ( uint8_t * ) & ( RTCM_Buffer1 . dma_buffer [ RTCM_Buffer1 . active_buf ^ 1 ] [ 0 ] ) , RTCM_Buffer1 . buf_len ) ; //ֱ<> ӷ<EFBFBD> <D3B7> ͷǼ<CDB7> <C7BC> <EFBFBD> <EFBFBD> ڴ<EFBFBD>
printf ( " rtcm forwarding \n " ) ;
}
@@ -468,25 +468,25 @@ void rtcmProcess(void *signal_id)
void setDataProcess ( void * signal_id )
{
( void ) signal_id ; // <20> <> <EFBFBD> DZ<EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> ʹ <EFBFBD> ã<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( void ) signal_id ; // <20> <> DZ<EFBFBD> <C7B1> <EFBFBD> Ϊ<EFBFBD> <CEAA> ʹ <EFBFBD> ã<EFBFBD> <C3A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
uartSendto ( USART3 , set_output_data , 20 ) ;
}
void setRateProcess ( void * signal_id )
{
( void ) signal_id ; // <20> <> <EFBFBD> DZ<EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> ʹ <EFBFBD> ã<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( void ) signal_id ; // <20> <> DZ<EFBFBD> <C7B1> <EFBFBD> Ϊ<EFBFBD> <CEAA> ʹ <EFBFBD> ã<EFBFBD> <C3A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
uartSendto ( USART3 , set_rate , 20 ) ;
}
void setSaveProcess ( void * signal_id )
{
( void ) signal_id ; // <20> <> <EFBFBD> DZ<EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> ʹ <EFBFBD> ã<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( void ) signal_id ; // <20> <> DZ<EFBFBD> <C7B1> <EFBFBD> Ϊ<EFBFBD> <CEAA> ʹ <EFBFBD> ã<EFBFBD> <C3A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
uartSendto ( USART3 , save_cmd , 20 ) ;
}
void setSteamProcess ( void * signal_id )
{
( void ) signal_id ; // <20> <> <EFBFBD> DZ<EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> ʹ <EFBFBD> ã<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
( void ) signal_id ; // <20> <> DZ<EFBFBD> <C7B1> <EFBFBD> Ϊ<EFBFBD> <CEAA> ʹ <EFBFBD> ã<EFBFBD> <C3A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
uartSendto ( USART3 , stream_cmd , 20 ) ;
}
@@ -494,18 +494,18 @@ void setSteamProcess(void *signal_id)
/* /?**?
* @brief <20> <> <EFBFBD> <EFBFBD> NMEA<45> <41> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> <EFBFBD> ͣ<EFBFBD> XOR<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> 飩
* @param nmea_str <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NMEA<45> <41> <EFBFBD> 䣨<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> $<24> <> *<2A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> β<EFBFBD> <CEB2> CRLF<4C> <46>
* @return <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 8λУ <EFBFBD> <EFBFBD> <EFBFBD> ͣ<EFBFBD> 0x00~0xFF<46> <46>
* @brief <20> <> <EFBFBD> <EFBFBD> NMEA<45> <41> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> ͣ<EFBFBD> XOR<EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> 飩
* @param nmea_str <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NMEA<45> <41> 䣨<EFBFBD> <E4A3A8> <EFBFBD> <EFBFBD> $<24> <> *<2A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> β<EFBFBD> <CEB2> CRLF<4C> <46>
* @return <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 8λУ <CEBB> <D0A3> ͣ<EFBFBD> 0x00~0xFF<46> <46>
*/
uint8_t nmea_checksum ( const char * nmea_str )
{
uint8_t checksum = 0 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <CABC> '$'<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ<EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <CABC> '$'<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ<EFBFBD>
if ( * nmea_str = = ' $ ' ) nmea_str + + ;
// <20> <> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֱ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> '*'<27> <> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> ֱ<EFBFBD> <D6B1> <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 +514,24 @@ uint8_t nmea_checksum(const char *nmea_str)
/*
* @brief <20> <> ֤NMEA<45> <41> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @param nmea_str <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NMEA<45> <41> <EFBFBD> 䣨<EFBFBD> <EFBFBD> "$GPGGA,...*2A\r\n"<22> <>
* @return У <> <D0A3> <EFBFBD> ɹ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1<EFBFBD> <EFBFBD> ʧ<EFBFBD> ܷ<EFBFBD> <EFBFBD> <EFBFBD> 0
* @brief <20> <> ֤NMEA<45> <41> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> <EFBFBD>
* @param nmea_str <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NMEA<45> <41> 䣨<EFBFBD> <E4A3A8> "$GPGGA,...*2A\r\n"<22> <>
* @return У <> <D0A3> ɹ<EFBFBD> <C9B9> <EFBFBD> <EFBFBD> <EFBFBD> 1<EFBFBD> <31> ʧ<EFBFBD> ܷ<EFBFBD> <DCB7> <EFBFBD> 0
*/
bool nmea_validate_checksum ( const char * nmea_str )
{
const char * p = nmea_str ;
uint8_t computed_cs , received_cs ;
// <20> <> <EFBFBD> <EFBFBD> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ λ<EFBFBD> <EFBFBD> '*'
// <20> <> <EFBFBD> <EFBFBD> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> ʼ λ<CABC> <CEBB> '*'
while ( * p & & * p ! = ' * ' ) p + + ;
if ( * p ! = ' * ' ) return 0 ; // <20> <> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD>
if ( * p ! = ' * ' ) return 0 ; // <20> <> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> ֶ<EFBFBD>
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> յ<EFBFBD> <D5B5> <EFBFBD> У <EFBFBD> <D0A3> <EFBFBD> ͣ<EFBFBD> 2λʮ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƣ<EFBFBD>
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> յ<EFBFBD> <D5B5> <EFBFBD> У <EFBFBD> <D0A3> ͣ<EFBFBD> 2λʮ<CEBB> <CAAE> <EFBFBD> <EFBFBD> <EFBFBD> ƣ<EFBFBD>
if ( ! isxdigit ( p [ 1 ] ) | | ! isxdigit ( p [ 2 ] ) ) return 0 ;
received_cs = ( uint8_t ) strtol ( p + 1 , NULL , 16 ) ;
// <20> <> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5> У <EFBFBD> <D0A3> <EFBFBD>
computed_cs = nmea_checksum ( nmea_str ) ;
return ( computed_cs = = received_cs ) ;
@@ -544,81 +544,81 @@ void ProcessNMEAFrames(void *signal_id)
bool frame_complete = false ;
static uint8_t debug1s_cnt = 0 ;
debug1s_cnt + + ;
if ( debug1s_cnt > = 20 )
{
debug1s_cnt = 0 ;
printf( " nmea_buf tail:%d head:%d\n " ,
nmea_rx_buf. tail , nmea_rx_buf . head ) ;
}
// debug1s_cnt ++;
// if( debug1s_cnt >= 20)
// {
// debug1s_cnt = 0;
// printf(" nmea_buf tail:%d head:%d\n",
// nmea_rx_buf.tail, nmea_rx_buf.head);
// }
while ( nmea_rx_buf . tail ! = nmea_rx_buf . head & & ! frame_complete )
{ // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ<EFBFBD> <C7BF> <EFBFBD> δ<EFBFBD> <CEB4> <EFBFBD> <EFBFBD> һ ֡<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{ // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ<EFBFBD> <C7BF> <EFBFBD> δ<EFBFBD> <CEB4> <EFBFBD> һ ֡<D2BB> <D6A1> <EFBFBD> <EFBFBD>
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. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ־
// 3. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ־
nmea_rx_buf . overflow = 0 ;
// 4. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̣<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ط<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// 4. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> ̣<EFBFBD> <CCA3> <EFBFBD> <EFBFBD> ط<EFBFBD> <D8B7> <EFBFBD> <EFBFBD> <EFBFBD>
printf ( " Overflow recovery \n " ) ;
}
// ֡ͷ<D6A1> <CDB7> <EFBFBD> <EFBFBD>
// ֡ͷ<D6A1> <CDB7> <EFBFBD>
if ( ch = = ' $ ' ) {
if ( parse_idx > 0 & & parsing_buf [ parse_idx - 1 ] = = ' \n ' )
{
if ( nmea_validate_checksum ( ( char * ) parsing_buf ) ) //У <> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
if ( nmea_validate_checksum ( ( char * ) parsing_buf ) ) //У <> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD>
{
memcpy ( & nema_output1 . buffer [ 0 ] , parsing_buf , parse_idx ) ;
publishMessage ( & nema_output1 , 1 ) ;
frame_complete = true ; // <20> <> <EFBFBD> <EFBFBD> ֡<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
frame_complete = true ; // <20> <> <EFBFBD> ֡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
else
{
printf ( " nmea crc error " ) ;
frame_complete = true ; // <20> <> <EFBFBD> <EFBFBD> ֡<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
frame_complete = true ; // <20> <> <EFBFBD> ֡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
parse_idx = 0 ;
}
// <20> 洢<EFBFBD> <E6B4A2> <EFBFBD> <EFBFBD>
// <20> 洢<EFBFBD> <E6B4A2> <EFBFBD> <EFBFBD>
if ( parse_idx < RING_BUF_SIZE - 1 & & ! frame_complete )
{
parsing_buf [ parse_idx + + ] = ch ;
// ֡β<D6A1> <CEB2> <EFBFBD> <EFBFBD>
// ֡β<D6A1> <CEB2> <EFBFBD>
if ( parse_idx > = 2 & &
parsing_buf [ parse_idx - 2 ] = = ' \r ' & &
parsing_buf [ parse_idx - 1 ] = = ' \n ' )
{
if ( nmea_validate_checksum ( ( char * ) parsing_buf ) ) //У <> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
if ( nmea_validate_checksum ( ( char * ) parsing_buf ) ) //У <> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD>
{
memcpy ( & nema_output1 . buffer [ 0 ] , parsing_buf , parse_idx ) ;
publishMessage ( & nema_output1 , 1 ) ;
frame_complete = true ; // <20> <> <EFBFBD> <EFBFBD> ֡<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
frame_complete = true ; // <20> <> <EFBFBD> ֡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
else
{
printf ( " nmea buf error " ) ;
frame_complete = true ; // <20> <> <EFBFBD> <EFBFBD> ֡<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
frame_complete = true ; // <20> <> <EFBFBD> ֡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
parse_idx = 0 ;
}
}
else if ( ! frame_complete )
{
parse_idx = 0 ; // <20> <> ֹ<EFBFBD> <D6B9> <EFBFBD> <EFBFBD>
parse_idx = 0 ; // <20> <> ֹ<EFBFBD> <D6B9> <EFBFBD>
}
}
timerStart ( & nmea_timer , 5 0, 1 ) ; // 100ms<6D> <73> <EFBFBD> ٴδ<D9B4> <CEB4> <EFBFBD>
timerStart ( & nmea_timer , 1 0, 1 ) ; // 100ms<6D> <73> <EFBFBD> ٴδ<D9B4> <CEB4> <EFBFBD>
}
void navigationRs232Process ( void * signal_id )
@@ -630,7 +630,7 @@ void navigationRs232Process(void *signal_id)
// APPģ<50> <C4A3> <EFBFBD> ij<EFBFBD> ʼ <EFBFBD> <EFBFBD>
// APPģ<50> <C4A3> ij<EFBFBD> ʼ <EFBFBD> <CABC>
void interfaceUartInit ( void )
{
subscribe ( & set_output_data , setDataProcess ) ;
@@ -641,7 +641,7 @@ void interfaceUartInit(void)
subscribe ( & nmea_timer , ProcessNMEAFrames ) ;
subscribe ( & navigation_rs232_output , navigationRs232Process ) ;
timerStart ( & nmea_timer , 5 0, 1 ) ; //50ms
timerStart ( & nmea_timer , 1 0, 1 ) ; //50ms
printf ( " interface uart: initial OK %d \n " , getCurrentTime ( ) ) ;
}