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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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;
     }

                            }
}