⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SD卡源程序 SD卡源程序 SD卡源程序 SD卡源程序 SD卡源程序
💻 C
字号:
#include "gprs_dll.h"
#include "signal.h"
#include "string.h"
#include <time.h>

#define NULL 0
int i_packamount;


//如果使用了多线程编程
//注意对下列变量的保护
//可通过设置互斥责信号量来处理
int user_count;
user_info user[200];
//end

//u can start a timer to refresh user list
void poll_user_table()
{
    int urcount,i,listcount;
    char mess[256];
    time_t tt,t_update;

    user_info ui;
	//lock this variable
	user_count = 0;
	urcount=get_max_user_amount();
    for (i=0;i<urcount;i++)
	{
		get_user_at(i,&ui);
		if (ui.m_status==1)
		{
			    //根据实际需要,决定是否维护DTU列表
				tt = time(NULL);
				t_update=(time_t )ui.m_update_time;
				if ((tt-t_update)>=60)//60s
				{
					do_close_one_user((unsigned char*)(ui.m_userid),mess);
					continue;
				} 
		        memcpy(&user[user_count],&ui,sizeof(user_info));
				user_count++;
		}
	}
}  
void data_process(data_record *pdr,char *mess)
{
	int i,ret;
    int urcount;
    user_info ui;
    switch (pdr->m_data_type)
    {
    case 0x01:
        printf("DTU login -- %s\n",pdr->m_userid);
		//poll_user_table();
		break;
    case 0x02:
        printf("DTU logout -- %s\n",pdr->m_userid);
		//poll_user_table();
        break;
    case 0x09:
        i_packamount++;
        printf("[ %d ]  %s - %d - %s",i_packamount,pdr->m_userid,pdr->m_data_len,asctime(localtime(&pdr->m_recv_date)));
        printf("Recieve From DTU:%s\n",pdr->m_data_buf);
		/*将接收到的数据发送给其他在线DTU*/
		for (i=0;i<user_count;i++)
		{
			if(strcmp(user[i].m_userid,pdr->m_userid))
			{
				printf("发送信息到[%s]\n",user[i].m_userid);
				ret=do_send_user_data(user[i].m_userid,pdr->m_data_buf,pdr->m_data_len,mess);
				if(ret<0)
				{
						printf("mess:[%s]\n",mess);
				}
				else
					printf("发送数据成功!\n");
			}
		}
        break;
    default:
        NULL;
    }
    //printf("hello\r\n");
    //sleep(2);
}

main()
{
    char mess[512];
    data_record dr;
	int i,ret;
    int urcount;
    user_info ui;

	memset(user,0,12);
    i_packamount=0;

    printf("-------------begin\n");
    start_gprs_server(data_process,5002,mess,0,0);
    //start_gprs_server(NULL,5002,mess,00,00);

    printf("%s\n",mess);
    //pause();

    for (;;)
    {
        printf("..............\r\n");
		poll_user_table();

		for (i=0;i<user_count;i++)
		{
				printf("发送信息到[%s]\n",user[i].m_userid);
				ret=do_send_user_data(user[i].m_userid,"hello\r\n",7,mess);
					if(ret<0)
					{
						printf("mess:[%s]\n",mess);
					}
					else
						printf("发送数据成功!\n");
		}
        sleep(2);
    }
    printf("==========programe terminated\n==========");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -