void uart1_packet_recv(u8 data)<br />{<br /> static unsigned char index =0;<br /> static u8 packet_size =0,checksum=0;;<br /> // recv data all buffer save<br /> if((index==0)&&(data == 'F'))<br /> {<br /> DEBUG_RX_buf[index]= data;<br /> index=1;<br /><br /> checksum=0;<br /> }<br /> else if((index==1)&&(data =='C'))<br /> {<br /> DEBUG_RX_buf[index]= data;<br /> index=2;<br /><br /> checksum=0;<br /> }<br /> else if(index == 2)<br /> {<br /> DEBUG_RX_buf[index]= data;<br /> index =3;<br /><br /> checksum^=data;<br /> switch (data)<br /> {<br /> case FLIGHT_INFO :<br /> break;<br /> case OSD_INFO:<br /> break;<br /> case GPS_CONTROL_INFO :<br /> break;<br /> case VERSION_INFO:<br /> break;<br /> case REQUEST:<br /> break;<br /> case WAYPOINT:<br /> break;<br /> case PC_CONTROL:<br /> packet_size = sizeof(PC_control)+2;<br /> Uart1_putchar(packet_size);<br /> break;<br /><br /> default : index = 0; packet_size =0;<br /> }<br /> }<br /> else if(index <packet_size)<br /> {<br /> DEBUG_RX_buf[index]= data;<br /> index++;<br /><br /> checksum^=data;<br /> }<br /> else if(index==packet_size)<br /> {<br /> DEBUG_RX_buf[index]= data;<br /><br /> checksum^=data;<br /><br /> Uart1_putchar(checksum);<br /> if(checksum==0)<br /> {<br /> switch(DEBUG_RX_buf[2])<br /> {<br /><br /> case FLIGHT_INFO :<br /> break;<br /><br /> case GPS_CONTROL_INFO:<br /> break;<br /><br /> case OSD_INFO:<br /><br /> break;<br /><br /> case OPTION1_INFO :<br /> break;<br /><br /> case VERSION_INFO :<br /> break;<br /><br /> case REQUEST:<br /> asm("nop");<br /> break;<br /><br /> case WAYPOINT:<br /> break;<br /><br /> case PC_CONTROL :<br /> Uart1_putchar('o');<br /> Uart1_putchar('k');<br /> memcpy((uint8_t *)(&PC_control.label), (uint8_t *)&DEBUG_RX_buf[2],sizeof(PC_control));<br /> Uart_CTRL_timer = 5000;<br /> RX_ail = PC_control.roll;<br /> RX_ele = PC_control.pitch;<br /> RX_thr = PC_control.thr;<br /> RX_rud = PC_control.yaw;<br /> break;<br /> default : break;<br /> }<br /> }<br /> packet_size=0;<br /> index =0;<br /> memset((uint8_t *)&DEBUG_RX_buf,0,sizeof(DEBUG_RX_buf));<br /> }<br />}<br /><br />해당 코드는 FLYCAM에서 제작한 멀티위 기반 Black32의 서브 MCU용 펌웨어 안에 있는<br />패킷 수신수 입니다.<br />이 함수에 맞춰서 패킷을 보내고 싶은데,<br />어떻게 보내야할 지 모르겠네요. ;ㅂ;<br />혹시 알려주실 수 있는 분 계실련지요 ㅠㅠ<br />
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.