亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? RFID模擬TAG跟READER之間通訊的程式 用來模擬防碰撞機制DFS跟QTA兩種演算法 為於研判RFID TAG-COLLISION問題的人應該有些幫助
?? CPP
字號:
//Dev-C++ generate, C++ relative
#include <cstdlib>
#include <iostream>
using namespace std;

//Include necessary C libs
#include<stdio.h>
#include <stdarg.h>
#include<math.h>

//Declare function
int Detect_Tags(struct bit_data *transmit_data, struct bit_data *tag_result);
void Set_Bit_Data(struct bit_data *value, int count, ...);
void Merge_Bit_Data(struct bit_data *dest_value, struct bit_data *value1, struct bit_data value2);
void Print_Bit_Data(struct bit_data *transmit_data);
void QTA_Detect_Tags(struct bit_data *transmit_data);
void Set_Node(struct node *tree_node, struct bit_data node_data);
void Print_Node(struct node *tree_node);
void Initial_Binary_Tree(struct node *node_ptr, int level, struct bit_data node_value);
void DFS_Detect_Tags(struct node *node_ptr, struct bit_data transmit_data);

//Define constant
#define TAG_COUNT   5
#define TAG_BIT     4

//Declare struct
struct bit_data
{
    int bit_count;
    int bit_content[TAG_BIT];
};

struct node
{
    struct bit_data value;
    struct node *left_child;
    struct node *right_child;     
};

//Global variables
int tags[TAG_COUNT][TAG_BIT]={ {0, 0, 0, 1}, {0, 1, 0, 0}, {0, 1, 0, 1}, {1, 0, 0, 0}, {1, 0, 1, 0} };
int search_counter=0;

//Program Start
int main(int argc, char *argv[])
{
    int i, j;
    int method;
    
    printf("=====RFID=====\n\n");
    printf("There are 2 searching method:\n");
    printf("1. QTA\n");
    printf("2. DFS\n\n");
    printf("Please choose searching method: ");
    scanf("%d", &method);
    printf("\n\n");
    
    if(method==1)
    {
        //For QTA
        struct bit_data transmit_data;
        transmit_data.bit_count=0;
        
        //Hint
        printf("=====QTA detect tags=====\n\n");
        printf("#Test Case Information:\n");
        printf("Tag Count: %d\n", TAG_COUNT);
        printf("Tag Bits:  %d Bits\n", TAG_BIT);
        printf("Tag List:\n");
        for(i=0; i<TAG_COUNT; i++)
        {
            for(j=0; j<TAG_BIT; j++)
            {
                printf("%d", tags[i][j]);
            }
            printf("\n");
        }
        printf("\n\n");
        
        //Use QTA to detect tags
        printf("#QTA detect tags...\n\n");
        QTA_Detect_Tags(&transmit_data);
        printf("#QTA finish!!!\n\n");
    }
    else if(method==2)
    {
        //For DFS
        struct node *root_ptr;
        struct bit_data root_value;
         
        Set_Bit_Data(&root_value, 5, 1, 2, 3, 4, 9);         //root data, data count = 0
        printf("\n~~~\n");
        Print_Bit_Data(&root_value);
        printf("%d", root_value.bit_count);
        printf("\n~~~\n");
        Set_Bit_Data(&root_value, 0);         //root data, data count = 0
        printf("\n~~~\n");
        Print_Bit_Data(&root_value);
        printf("%d", root_value.bit_count);
        printf("\n~~~\n");
        
        //Hint
        printf("=====DFS Detect tags=====\n\n");
        
        //Initial Binary Tree
        printf("#Initial binary tree...\n\n");
        printf("%d", root_ptr->value.bit_count);
        Initial_Binary_Tree(root_ptr, 0, root_value);
        printf("#Initial success\n\n");
        
        //Use DFS to detect tags
        printf("#DFS detect tags...\n\n");
    	printf("%d", root_ptr->value.bit_count);
    	printf("%d", root_value.bit_count);
        DFS_Detect_Tags(root_ptr, root_value);
        printf("#DFS finish!!!\n\n");
        
    }
    
    system("PAUSE");
    return 0;
}

//Detect Tags
int Detect_Tags(struct bit_data *transmit_data, struct bit_data *tag_result)
{
    int i, j;
    int fit_flag;
    int fit_count=0;
    int fit_tag_index;
    
    for(i=0; i<TAG_COUNT; i++)
    {
        fit_flag=1;
        for(j=0; j<transmit_data->bit_count; j++)
        {
            if(transmit_data->bit_content[j] != tags[i][j])
            {
                fit_flag=0;
                break;
            }
        }
        
        if(fit_flag==1)
        {
            fit_tag_index=i;
            fit_count++;
        }
    }
    
    if(fit_count == 1)
    {
        tag_result->bit_count=TAG_BIT;
        for(i=0; i<TAG_BIT; i++)
        {
            tag_result->bit_content[i]=tags[fit_tag_index][i];
        }
    }
    
    return fit_count;
}

//Set Bit Data
void Set_Bit_Data(struct bit_data *value, int count, ...)
{
    int i;
    
    va_list ap;
    
    value->bit_count=count;
    
    //test
    //printf("!!!IN SetBitData, count=%d\n",value->bit_count);
    
    va_start(ap, count);
    for(i=0; i<count; i++)
    {
        value->bit_content[i]=va_arg(ap, int);
        //test
    	//printf("!!!IN SetBitData, i=%d, content=%d\n", i, value->bit_content[i]);
    }
    va_end(ap);
}

//Merge Bit Data
void Merge_Bit_Data(struct bit_data *dest_value, struct bit_data value1, struct bit_data value2)
{
    int i;
    
    printf("\n***00\n");
    printf("%d", dest_value->bit_count);
    printf("%d", value1.bit_count);
    printf("%d", value2.bit_count);
    Print_Bit_Data(dest_value);
    Print_Bit_Data(&value1);
    Print_Bit_Data(&value2);
    
    
    dest_value->bit_count=value1.bit_count+value2.bit_count;
    
    for(i=0; i<value1.bit_count; i++)
    {
    	dest_value->bit_content[i]=value1.bit_content[i];
    }
    
    for(i=0; i<value2.bit_count; i++)
    {
    	dest_value->bit_content[i+value1.bit_count]=value2.bit_content[i];
    }
    
    printf("\n***01\n");
    printf("%d", dest_value->bit_count);
    printf("%d", value1.bit_count);
    printf("%d", value2.bit_count);
    Print_Bit_Data(&value1);
    Print_Bit_Data(&value2);
    Print_Bit_Data(dest_value);
}

//Print bit_data
void Print_Bit_Data(struct bit_data *transmit_data)
{
    int i;
    for(i=0; i<transmit_data->bit_count; i++)
    {
        printf("%d", transmit_data->bit_content[i]);
    }
}
//QTA(Query Tree Algorithm) detect tags
void QTA_Detect_Tags(struct bit_data *transmit_data)
{
    int level;
    level=transmit_data->bit_count;
    
    printf("#Reader action counter, No. %d\n%s", search_counter++, (level==0)?"\n":"");
    
    if(level > 0)//Not root, reader transmit data
    {
        int i;
        int detect_result;
        struct bit_data tag;
        
        printf("@Reader send ");
        Print_Bit_Data(transmit_data);
        printf("\n");
        
        detect_result=Detect_Tags(transmit_data, &tag);
        
        if(detect_result==0)                //No tag response
        {
            printf("$No tag response\n\n");
            return;
        }
        else if(detect_result==1)           //Only one tag response
        {
            printf("$Only one tag response, the tag ID is ");
            Print_Bit_Data(&tag);
            printf("\n\n");
            return;
        }
        else                                //More than one tag response
        {
            printf("$More than one tag response\n\n");
        }   
    }
    
    //Because more than one tag response, so continue transmit next bit
    
    //Search 0 sub tree
    transmit_data->bit_count=level+1;
    transmit_data->bit_content[level]=0;
    QTA_Detect_Tags(transmit_data);
        
    //Search 1 sub tree
    transmit_data->bit_count=level+1;
    transmit_data->bit_content[level]=1;
    QTA_Detect_Tags(transmit_data);
}

//Set Node
void Set_Node(struct node *tree_node, struct bit_data node_data)
{
    int i;
    
    tree_node->value.bit_count=node_data.bit_count;
    tree_node->left_child=NULL;
    tree_node->right_child=NULL;
    
    for(i=0; i<node_data.bit_count; i++)
    {
        tree_node->value.bit_content[i]=node_data.bit_content[i];
    }
}

//Print Node
void Print_Node(struct node *tree_node)
{
    Print_Bit_Data(&(tree_node->value));
}

//Initial Binary Tree, create by DFS method, for function of DFS_Detect_Tags() useing
void Initial_Binary_Tree(struct node *node_ptr, int level, struct bit_data node_value)
{
    node_ptr=(struct node *)malloc(sizeof(struct node));
    
    //test
    printf("\nIn initial\n");
    if(node_ptr==NULL)
        printf("malloc fail ");
    else
        printf("malloc success ");
     
    Set_Node(node_ptr, node_value);
    
    
    printf("node_ptr->value.bit_count=%d\n\n", node_ptr->value.bit_count);
    //Print_Bit_Data(&node_value);
    //Print_Node(node_ptr);

    if(level<=TAG_BIT)
    {
        //Set left subtree
        Set_Bit_Data(&node_value, 1, 0);         //left node value is 0
        Initial_Binary_Tree(node_ptr->left_child, level+1, node_value);
        
        //Set right subtree
        Set_Bit_Data(&node_value, 1, 1);         //right node value is 1
        Initial_Binary_Tree(node_ptr->right_child, level+1, node_value);
    }
}

//DFS(Depth First Seraching) detect tags
void DFS_Detect_Tags(struct node *node_ptr, struct bit_data transmit_data)
{
    printf("\nDFS 001\n");
    printf("node_ptr->value.bit_count=%d\n", node_ptr->value.bit_count);
    printf("transmit_data.bit_count=%d\n", transmit_data.bit_count);
	
    printf("#Reader action counter, No. %d\n", search_counter++);
    printf("@Reader walk tree, now in ");
    if(transmit_data.bit_count==0)	//root
    {
    	printf("root! ");
    }
    else if(transmit_data.bit_count>0)	//not root
    {
    	//Print_Bit_Data(&transmit_data);
    	printf(", ");
    	Merge_Bit_Data(&transmit_data, transmit_data, node_ptr->value);
    }
	
    printf("\n@@@\n");
    printf("count=%d\n", transmit_data.bit_count);
    
    if(transmit_data.bit_count<TAG_BIT)		//Not leaf, continue walk tree
    {
        printf("not leaf, continue wlak tree...\n\n");
        DFS_Detect_Tags(node_ptr->left_child, transmit_data);
        DFS_Detect_Tags(node_ptr->right_child, transmit_data);
    }
    else if(transmit_data.bit_count==TAG_BIT)	//Is leaf, detect tags
    {
        int detect_result;
        struct bit_data tag;
        
        printf("is leaf, detect tags...\n");
        
        detect_result=Detect_Tags(&transmit_data, &tag);
        
        if(detect_result==1)			//Find tag
        {
        	printf("@Tag response, So ");
        	Print_Bit_Data(&transmit_data);
        	printf(" is one of tags\n\n");
        }
        else
        {
        	printf("@No Tag response!!!\n\n");
        }
    }
    
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产夫妻精品视频| 日韩在线一区二区| 成人蜜臀av电影| 亚洲视频一区在线观看| 色香色香欲天天天影视综合网| 中文字幕中文字幕在线一区 | 九九热在线视频观看这里只有精品| 欧美日本不卡视频| 麻豆91在线看| 久久久国产精品麻豆| 成人免费高清视频| 洋洋av久久久久久久一区| 欧美一区中文字幕| 国产精品一区二区x88av| 中文字幕视频一区二区三区久| 在线观看欧美日本| 人妖欧美一区二区| 中文字幕第一区| 欧美三级资源在线| 精品夜夜嗨av一区二区三区| 国产日韩高清在线| 在线观看三级视频欧美| 国产尤物一区二区在线| |精品福利一区二区三区| 日韩一二在线观看| 色综合色狠狠天天综合色| 日韩精品成人一区二区三区| 国产午夜一区二区三区| 欧美亚洲一区二区三区四区| 九九热在线视频观看这里只有精品| 中文字幕一区二区日韩精品绯色| 欧美亚洲国产一区二区三区va| 久久99日本精品| 亚洲免费在线看| 精品国产在天天线2019| 91成人在线免费观看| 国产精品亚洲综合一区在线观看| 一区二区三区在线观看国产| 国产亚洲欧美在线| 在线成人小视频| 99re在线视频这里只有精品| 久久国产精品第一页| 一区二区三区毛片| 中文字幕精品综合| 日韩久久久精品| 欧美视频完全免费看| 国产成都精品91一区二区三| 日韩成人一区二区三区在线观看| 国产精品乱人伦中文| 欧美一二三在线| 在线观看网站黄不卡| 成人av网站大全| 国产成人激情av| 另类小说综合欧美亚洲| 亚洲成人tv网| 一区二区国产视频| 国产精品不卡在线观看| 欧美激情综合在线| 精品剧情在线观看| 欧美一区二区精品| 69堂亚洲精品首页| 欧美精品久久一区二区三区| 91黄色免费网站| 成av人片一区二区| 成人理论电影网| 国产高清视频一区| 国产传媒日韩欧美成人| 韩国三级中文字幕hd久久精品| 日韩成人伦理电影在线观看| 亚洲福利视频三区| 亚洲线精品一区二区三区| 成人免费在线视频| 亚洲欧美乱综合| 亚洲三级电影网站| 亚洲色图清纯唯美| 亚洲免费三区一区二区| 亚洲欧美激情插| 樱花影视一区二区| 亚洲国产日韩在线一区模特| 亚洲一二三四区| 亚洲午夜激情网页| 日韩中文字幕一区二区三区| 日韩精品高清不卡| 国产在线麻豆精品观看| 国产成人日日夜夜| 波多野结衣中文一区| 99久久久精品免费观看国产蜜| 99久久婷婷国产| 欧美性受极品xxxx喷水| 欧美日韩国产系列| 91精品国产欧美一区二区成人| 日韩欧美中文一区二区| 久久午夜免费电影| 国产精品丝袜久久久久久app| 国产精品不卡一区二区三区| 亚洲精品视频免费看| 亚洲成a人片在线不卡一二三区| 午夜精品久久久久久久久久 | 亚洲国产一二三| 日本视频在线一区| 国产成人免费视频精品含羞草妖精 | 成人自拍视频在线观看| 91亚洲大成网污www| 欧美日韩一二区| 亚洲精品一区在线观看| 国产三级欧美三级日产三级99| 国产精品护士白丝一区av| 亚洲欧美一区二区久久| 美女一区二区三区在线观看| 国产麻豆精品视频| 91极品美女在线| 久久综合丝袜日本网| 国产精品久久久久久久裸模| 亚洲激情在线播放| 黄色成人免费在线| 成人高清伦理免费影院在线观看| 欧美日韩在线播| 国产女主播在线一区二区| 亚洲成人高清在线| 岛国精品在线观看| 欧美久久一区二区| 国产精品久久久久9999吃药| 丝袜国产日韩另类美女| 国产成人综合在线| 欧美区一区二区三区| 欧美经典三级视频一区二区三区| 性感美女极品91精品| 国产老肥熟一区二区三区| 日本电影亚洲天堂一区| 欧美精品一区二区三区一线天视频 | 国产91综合一区在线观看| 欧美日韩1234| 亚洲色图视频网| 国产精品911| 91精品国产一区二区三区蜜臀 | 欧美日韩一区高清| 国产精品久久午夜| 国产在线国偷精品产拍免费yy| 在线观看免费一区| 国产精品狼人久久影院观看方式| 美女脱光内衣内裤视频久久网站 | 精品少妇一区二区三区在线播放| 亚洲一区视频在线| av午夜精品一区二区三区| 亚洲精品一区二区三区99| 日韩av二区在线播放| 欧美性xxxxx极品少妇| 国产精品国产精品国产专区不蜜| 精品一区二区免费| 51精品久久久久久久蜜臀| 亚洲精品视频一区| 91视频.com| 亚洲日本一区二区三区| 丰满放荡岳乱妇91ww| 国产午夜精品美女毛片视频| 麻豆成人免费电影| 欧美videos中文字幕| 日本亚洲一区二区| 91麻豆精品国产91久久久资源速度 | 久久久777精品电影网影网| 日韩精品一级中文字幕精品视频免费观看 | 亚洲永久免费av| av欧美精品.com| 国产精品嫩草99a| 成人综合婷婷国产精品久久| 亚洲国产精品黑人久久久| 国模套图日韩精品一区二区| 精品国产乱码久久久久久图片 | 成人av在线播放网站| 中文一区一区三区高中清不卡| 国产精品一色哟哟哟| 国产丝袜在线精品| 懂色av噜噜一区二区三区av| 国产婷婷精品av在线| 成人免费观看视频| 亚洲人成精品久久久久久| 色婷婷久久一区二区三区麻豆| 亚洲天堂成人在线观看| 色综合一个色综合| 亚洲一区在线视频| 宅男噜噜噜66一区二区66| 伦理电影国产精品| 亚洲国产精品成人综合色在线婷婷| 风间由美中文字幕在线看视频国产欧美| 国产精品免费免费| 色哟哟国产精品免费观看| 日韩精品三区四区| xnxx国产精品| 99re视频这里只有精品| 亚洲mv在线观看| 精品国产人成亚洲区| 成人黄色综合网站| 亚洲一区av在线| 欧美成人三级电影在线| 国产精品主播直播| 亚洲另类春色国产| 日韩视频在线永久播放| 成人听书哪个软件好| 亚洲国产一区二区三区| 亚洲精品在线一区二区|