int main(int argc, char *argv[]) { GTree* tree = GTree_Create(); int i = 0; GTree_Insert(tree, (GTreeData*)'A', -1); GTree_Insert(tree, (GTreeData*)'B', 0); GTree_Insert(tree, (GTreeData*)'C', 0); GTree_Insert(tree, (GTreeData*)'D', 0); GTree_Insert(tree, (GTreeData*)'E', 1); GTree_Insert(tree, (GTreeData*)'F', 1); GTree_Insert(tree, (GTreeData*)'H', 3); GTree_Insert(tree, (GTreeData*)'I', 3); GTree_Insert(tree, (GTreeData*)'J', 3); printf("Tree Height: %d\n", GTree_Height(tree)); printf("Tree Degree: %d\n", GTree_Degree(tree)); printf("Full Tree:\n"); GTree_Display(tree, printf_data, 2, ' '); printf("Get Tree Data:\n"); for(i=0; i<GTree_Count(tree); i++) { printf_data(GTree_Get(tree, i)); printf("\n"); } printf("Get Root Data:\n"); printf_data(GTree_Root(tree)); printf("\n"); GTree_Delete(tree, 3); printf("After Deleting D:\n"); GTree_Display(tree, printf_data, 2, '-'); GTree_Clear(tree); printf("After Clearing Tree:\n"); GTree_Display(tree, printf_data, 2, '.'); GTree_Destroy(tree); return 0; }
int main() { uint8_t len = 0; Stack_Init(); Stack_PushData(temp_buf8,8);//0 Stack_PushData(temp_buf9,9);//1 Stack_PushData(temp_buf10,10);//2 Stack_PushData(temp_buf11,11);//3 Stack_PushData(temp_buf12,12);//4 12 Stack_PushData(temp_buf13,13);//5 13 Stack_PushData(temp_buf8,8);//6 64 //在不造成断包的情况下最大限度的拼包 Stack_PushData(temp_buf8,8);//7 56 Stack_PushData(temp_buf8,8);//8 48 Stack_PushData(temp_buf8,8);//9 40 Stack_PushData(temp_buf8,8);//0 32//由于之前的数据还未读取,此时又进行了写入操作,故之前的数据会被覆盖掉 Stack_PushData(temp_buf8,8);//1 24 Stack_PushData(temp_buf8,8);//2 16 Stack_PushData(temp_buf8,8);//3 8 //因为帧的数量超过MAX_STACK_FRAME_NUM,也就是超过最大的栈存储帧数,所以之前的数据会丢失掉,如果希望调大,可以修改这个宏定义的大小 // len += Stack_PopData(dest_buf+len); // len += Stack_PopData(dest_buf+len); // len += Stack_PopData(dest_buf+len); // len += Stack_PopData(dest_buf+len); // len += Stack_PopData(dest_buf+len); // len += Stack_PopData(dest_buf+len); while(Stack_GetFrameCount() >0)//如果栈中的帧未被取完,则一直取,直至取完 { len = SpliceFrame(dest_buf);//将包取出,并且拼包 printf_data(dest_buf,len); } // while(1) // { // } return 0; }
void interrupcao() { if (serial_interrompeu) { serial_interrompeu=0; avisa_interrompeu=1; inputstr[str_pos] = getcUSART(); //ou le_serial - vai buscar a inputstr à porta série caracter a caracter (em cada iterada) str_pos++;//incrementa a posição de escrita na string de destino if(str_pos == 30){str_pos = 0;} //verifica se a string de 80 caracteres //está cheia e caso o esteja faz reset da posição de escrita na string a 0 //comando = le_serial();//apenas um byte switch (inputstr[0]) //teste da comunicacao serial no Terminal { case 'L' : {pisca=0; nivel_alto(pin_b7);putrsUSART ( (const far rom char *) " Ligado\r\n");while (envia_byte());} //Recebe A e Transmite byte B para teste break; case 'D' : {pisca=0; nivel_baixo(pin_b7);putrsUSART ( (const far rom char *) " Desligado");while (envia_byte());} break; case 'P' : {pisca=1; printf_text(Txdata); printf_data(10); } break; } } }