GPS奇偶校验程序:提升导航数据精准性

版权申诉
0 下载量 116 浏览量 更新于2024-10-14 收藏 792B RAR 举报
资源摘要信息: "本压缩包包含了关于GPS定位系统导航数据奇偶校验的程序及相关文档。奇偶校验是一种基本的错误检测技术,广泛应用于数据通信和存储系统中,以确保数据在传输或存储过程中没有发生错误。GPS定位系统需要依赖精确的导航数据来进行精确的定位,因此,奇偶校验在此类系统的数据传输和存储中扮演着重要的角色。" 知识点详细说明: 1. GPS定位系统: 全球定位系统(GPS, Global Positioning System)是一种用于全球范围内进行定位、导航的卫星系统。它由24颗卫星组成(其中包括备用卫星),能够提供精确的时间和位置信息。GPS被广泛应用于移动电话、汽车导航系统、船舶、飞机、无人机等领域。 2. 奇偶校验: 奇偶校验是计算机科学中用于错误检测的一种简单机制。它通过在数据中添加一个额外的比特(bit)来检测数据传输或存储过程中是否出现错误。奇偶校验分为两种类型:奇校验和偶校验。 - 奇校验(Odd Parity):使得数据中1的总数为奇数,如果数据本身1的个数为偶数,则添加一个1;如果为奇数,则添加一个0。 - 偶校验(Even Parity):与奇校验相反,它的目的是使得数据中1的总数为偶数。如果数据中1的个数为奇数,则添加一个0;如果为偶数,则添加一个1。 3. 导航校验: 在GPS定位系统中,导航校验是指对GPS设备接收的导航数据进行一致性检查的过程。这种检查可以确保导航数据的准确性和完整性,从而保证定位结果的准确性。奇偶校验是一种常见的导航数据校验方式,用于检测接收的数据是否有错误。 4. 导航数据: 导航数据是指GPS系统中的卫星向接收器发送的数据,包含了卫星的精确位置、时间戳以及其它与定位有关的重要信息。这些数据对于计算接收器的确切位置至关重要。如果导航数据在传输过程中出现错误,可能会导致定位不准确,因此需要通过奇偶校验等技术来进行校验。 5. 奇偶校验的应用: 奇偶校验常用于早期的计算机和数据通信协议中,如ASCII码和早期的计算机网络协议。它的优点是实现简单,但是其错误检测能力有限,只能检测单个位错误,对于多位错误的检测能力非常有限。在现代应用中,为了提高错误检测的准确性,经常采用更复杂的校验算法,如循环冗余校验(CRC)和海明码等。 6. 程序与文档文件: - 奇偶校验.txt:该文件可能是关于奇偶校验算法的详细说明文档,或者是GPS定位系统中奇偶校验程序的使用说明,提供给开发者或者系统管理员进行参考。 ***.txt:文件名暗示该文件可能来源于PUDN(中国最大的开源代码分享平台),它可能是包含在压缩包中用于程序开发或调试的参考代码,或者是与导航数据校验相关的其他编程资源链接。 综上所述,通过压缩包中的文件,我们可以获取到关于GPS定位系统导航数据奇偶校验的相关程序和文档资源,这有助于我们了解和实施奇偶校验算法,以保证GPS系统中的导航数据传输和存储过程的准确性。

def __next_step(self, x, y): if not self.judge_colory: self.__history += 0 else: self.__history += 1 self.color = 1 if self.__history % 2 == 0 else 2 if self.start_ai_game: if self.ai_color == self.color: row,col = self.ai_stage(self.ai_game()[0],self.ai_game()[1]) else: col = round((x-self.__margin*2)/self.__cell_width) row = round((y-self.__margin*2)/self.__cell_width) stage_row = (y-self.__margin)-(self.__cell_width*row+self.__margin) stage_col = (x-self.__margin)-(self.__cell_width*col+self.__margin) if stage_col < stage_row: self.direct= 1 else: self.direct= 0 else: col = round((x - self.__margin * 2) / self.__cell_width) row = round((y - self.__margin * 2) / self.__cell_width) stage_row = (y - self.__margin) - (self.__cell_width * row + self.__margin) stage_col = (x - self.__margin) - (self.__cell_width * col + self.__margin) if stage_col < stage_row: self.direct = 1 else: self.direct= 0 if self.valide(row, col, self.direct): if self.__history % 4 == 0 or (self.__history + 2) % 4 == 0: self.__game_board.drew_turn(2) else: self.__game_board.drew_turn(1) self.add_logic(row, col, self.color) self.__game_board.draw_chess(row, col, self.color, self.direct) if self.judge_owner(row, col, self.color, self.direct): self.__game_board.drew_turn(self.judge_next(self.color)) for i in self.judge_owner(row, col, self.color, self.direct): x,y=self.draw_owner(i) self.__game_board.drew_owner(self.color, y, x) else: self.__game_board.drew_turn(self.color) self.judge_color(row, col, self.color, self.direct) print(self.logic_board_state) if 0 not in self.logic_board_owner: self.__game_board.pop_win(self.judge_winner())

2023-07-14 上传
2023-07-24 上传

GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 初始化GPIO口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);// 初始化串口RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);USART_Cmd(USART1, ENABLE);ADC_InitTypeDef ADC_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;// 初始化ADC模块RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);ADC_Cmd(ADC1, ENABLE);// 初始化定时器RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);TIM_TimeBaseStructure.TIM_Period = 72000000 / 1000 - 1; // 计数器自动重装值TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 分频系数TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 计数器向上计数TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);// 配置定时器触发ADC采样TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);ADC_ExternalTrigConvCmd(ADC1, ENABLE);// 初始化定时器中断TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);void TIM3_IRQHandler(void) { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); uint16_t adcValue = ADC_GetConversionValue(ADC1); USART_SendData(USART1, adcValue >> 8); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); USART_SendData(USART1, adcValue & 0xff); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); }}

2023-06-07 上传

void uart_init(u32 bound){ //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟 //USART1_TX GPIOA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.2 //USART1_RX GPIOA.10初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10 //Usart1 NVIC 配置 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器 //USART 初始化设置 USART_InitStructure.USART_BaudRate = bound;//串口波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式 USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位 USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式 USART_Init(USART1, &USART_InitStructure); //初始化串口1 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断 USART_Cmd(USART1, ENABLE); //使能串口1 } 这串代码中规定了哪个引脚是usart的rx与tx

2023-07-24 上传