Example #1
0
void set_time(GtkWidget *widget,gpointer data)
{
    struct tm ti;
    time_t t;
    int i,tmp[6];
    TIME *day=(TIME *)data;

    for(i=0; i<6; i++)
        tmp[i]=change_data(gtk_entry_get_text(GTK_ENTRY(day->data[i])));

    if(tmp[0]<=1900)
    {
        error_message(widget,"输入的年份有误,请重新输入!");
        return;
    }
    if(tmp[1]<1 || tmp[1]>12)
    {
        error_message(widget,"输入的月份有误,请重新输入!");
        return;
    }
    if(tmp[2]<=0 || tmp[2]>31)
    {
        error_message(widget,"输入的日期有误,请重新输入!");
        return;
    }
    if(tmp[3]<=0 || tmp[3]>24)
    {
        error_message(widget,"输入的小时有误,请重新输入!");
        return;
    }
    if(tmp[4]<0 || tmp[4]>59)
    {
        error_message(widget,"输入的分钟数有误,请重新输入!");
        return;
    }
    if(tmp[5]<0 || tmp[5]>59)
    {
        error_message(widget,"输入的秒数有误,请重新输入!");
        return;
    }

    tmp[0]-=1900;
    ti.tm_year=tmp[0];
    ti.tm_mon=tmp[1];
    ti.tm_mday=tmp[2];
    ti.tm_hour=tmp[3];
    ti.tm_min=tmp[4];
    ti.tm_sec=tmp[5];

    t=mktime(&ti);
    stime(&t);
    error_message(widget,"设置成功!");
}
Example #2
0
/***接收ad转换数据 读取传感器数值 测量硬币种类***/
__task void get_adc_value(void)
{
	u8 bf=0,read_flash[2],dia_b=0,n;
	u16 adc_data=0,clear_config=0;
	u32 adc_buff=0;
	
	os_sem_init(adcsem,0);
	memset(view_detial,0,530);
	memset(view_send,0,10);
	memset(read_flash,0,4);
	ReadFlashNByte(0,read_flash,2);
	limitup=read_flash[0]+read_flash[1]*256;
	if(limitup==0||limitup==0xffff)
		limitup=7500;
	while(1)
	{
// 		os_sem_wait(adcsem,0xffff);
		while(1)
		{
			adc_value1=spi_readwrite_byte(SPI1,adc_data);
			adc_value=change_data(adc_value1);
			if((1000<adc_value&&adc_value<7500))
				break;
			clear_config++;
			if(clear_config==50000)
			{
				clear_config=0;
				memset(&refresh,0,8);
				i=0;								//5秒种没有硬币就将计数清零
			}
			os_dly_wait(1);
		}
		GPIO_ResetBits(GPIOC,GPIO_Pin_5);
		os_sem_send(iosem);
		TIM_Cmd(TIM4,ENABLE);
		value_count=0;
// 		while(add_count<25)
// 		{
			while(adc_value<7500)
	// 		while(1)
			{
				adc_buff=adc_buff+adc_value;
				add_count++;													//采样次数   0.2ms一次
				view_detial[view_i][add_count]=adc_value;
				os_dly_wait(1);
				adc_value=spi_readwrite_byte(SPI1,adc_data);
				adc_value=change_data(adc_value);
	// 			if(count==50)
	// 				break;
				if(add_count==49)
					break;
			}
// 		}
// 		view_detial[view_i][add_count+2]=count;		//view_detial数据位后面第二位是金属传感器检测的时间
// 		count=0;
		GPIO_SetBits(GPIOC,GPIO_Pin_5);
		adc_buff=adc_buff/add_count;
		if(add_count>20)
		{
			dia_b=(add_count/2)-2;
			adc_buff=0;
			for(n=0;n<5;n++)
				adc_buff=view_detial[view_i][dia_b+n]+adc_buff;
			adc_buff=adc_buff/5;
		}
		else
			adc_buff=8888;
//调试看数据
		view_detial[view_i][0]=add_count;			//对金属传感器采样的详细数据个数
		view_detial[view_i][add_count+1]=adc_buff;		//view_detial数据位后面第一位是对金属传感器采样得到数据的平均值
//*** 		
 		coin_kind[bf]=deal_value(adc_buff);					//比较金属传感器的电压值,得出币种
// 		if(view_detial[view_i][10]>6000)
// 			coin_kind[bf]=0;
		view_i++;
		if(view_i==5)
			view_i=0;
		bf++;
		if(bf==5)
			bf=0;
		adc_buff=0;
		add_count=0;
		clear_config=0;
		
// 		os_sem_send(iosem);
// 		os_sem_send(resultsem);
	}
}