드래그 앤 드롭으로 즐겨찾기 아이콘 위치 수정이 가능합니다.
혹시 패킷 프로그래밍에 대해서 질문 드려도 될까요?
게시물ID : it_1248 짧은주소 복사하기
작성자 : 유한요소법
추천 : 0
조회수 : 483회
댓글수 : 1개
등록시간 : 2014/05/18 23:48:46
void uart1_packet_recv(u8 data) { static unsigned char index =0; static u8 packet_size =0,checksum=0;; // recv data all buffer save if((index==0)&&(data == 'F')) { DEBUG_RX_buf[index]= data; index=1; checksum=0; } else if((index==1)&&(data =='C')) { DEBUG_RX_buf[index]= data; index=2; checksum=0; } else if(index == 2) { DEBUG_RX_buf[index]= data; index =3; checksum^=data; switch (data) { case FLIGHT_INFO : break; case OSD_INFO: break; case GPS_CONTROL_INFO : break; case VERSION_INFO: break; case REQUEST: break; case WAYPOINT: break; case PC_CONTROL: packet_size = sizeof(PC_control)+2; Uart1_putchar(packet_size); break; default : index = 0; packet_size =0; } } else if(index <packet_size) { DEBUG_RX_buf[index]= data; index++; checksum^=data; } else if(index==packet_size) { DEBUG_RX_buf[index]= data; checksum^=data; Uart1_putchar(checksum); if(checksum==0) { switch(DEBUG_RX_buf[2]) { case FLIGHT_INFO : break; case GPS_CONTROL_INFO: break; case OSD_INFO: break; case OPTION1_INFO : break; case VERSION_INFO : break; case REQUEST: asm("nop"); break; case WAYPOINT: break; case PC_CONTROL : Uart1_putchar('o'); Uart1_putchar('k'); memcpy((uint8_t *)(&PC_control.label), (uint8_t *)&DEBUG_RX_buf[2],sizeof(PC_control)); Uart_CTRL_timer = 5000; RX_ail = PC_control.roll; RX_ele = PC_control.pitch; RX_thr = PC_control.thr; RX_rud = PC_control.yaw; break; default : break; } } packet_size=0; index =0; memset((uint8_t *)&DEBUG_RX_buf,0,sizeof(DEBUG_RX_buf)); } } 해당 코드는 FLYCAM에서 제작한 멀티위 기반 Black32의 서브 MCU용 펌웨어 안에 있는 패킷 수신수 입니다. 이 함수에 맞춰서 패킷을 보내고 싶은데, 어떻게 보내야할 지 모르겠네요. ;ㅂ; 혹시 알려주실 수 있는 분 계실련지요 ㅠㅠ
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.
새로운 댓글이 없습니다.