コード例 #1
0
ファイル: parsers.c プロジェクト: kewtree1408/Concordance
void str_output(FILE *fp, int end) {
	int state = 1;
	int cpoint = 0;
	int ch;
	while ((ch=fgetc(fp)) != EOF) {
		if ((state == 1) && (isspace(ch) || ispoint(ch))) {
			continue;
		}
		if (ch == '\n') {
			state = 0;
			continue; 
		}
		if (ispoint(ch)) {
			state = 1;
			printf ("%c\n",ch);
			cpoint++;
			if (cpoint == end) { break; }
		}
		else {
			state = 0;
			printf("%c",ch);
		}
	}
}
コード例 #2
0
ファイル: copy.c プロジェクト: lloistborn/basic_c
char* copy_filename(char *file, size_t lenfile, char *str) {
	int i, j;
	int flagPoint = 0;
	char VAL[] = "_copy";

	for(i = 0; i < lenfile; i++) {
		if(flagPoint == 0) {
			if(ispoint(file[i]) == 1) { 
				strcat(str, VAL);
				str[i+SHIFT] = file[i];
				flagPoint += 1; 
			}
			else { 
				str[i] = file[i];
			}
		}
		else {
			str[i+SHIFT] = file[i];
		}
	}
	str[i+SHIFT] = '\0';

	return str;
}
コード例 #3
0
LRESULT BacnetController::Fresh_Controller_Item(WPARAM wParam,LPARAM lParam)
{
	int cmp_ret ;//compare if match it will 0;
	int Changed_Item = (int)wParam;
	int Changed_SubItem = (int)lParam;


	CString temp_task_info;
	CString New_CString =  m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
	CString cstemp_value;

	//先保存 原来的值,等结束的时候来比对,看是否有改变,有改变就进行写动作;
	memcpy_s(&m_temp_controller_data[Changed_Item],sizeof(Str_controller_point),&m_controller_data.at(Changed_Item),sizeof(Str_controller_point));


	if(Changed_SubItem == CONTROLLER_INPUT)
	{
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		if(cs_temp.IsEmpty() == false)
		{
			cs_temp.MakeUpper();

			char cTemp1[255];
			char temp_input[250];
			char * tempcs=NULL;
			memset(cTemp1,0,255);
			WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL );
			//Search the input label from the list.

			int temp_number=-1;
			byte temp_value_type = -1;
			byte temp_point_type=-1;
			int temp_panel = -1;
			int temp_net = -1;
			int k=0;
			//int temp1;
			tempcs = ispoint(cTemp1,&temp_number,&temp_value_type,&temp_point_type,&temp_panel,&temp_net,0,Station_NUM,&k);
			if(tempcs!=NULL)
			{
				strcpy(temp_input,tempcs);
				CString temp_des2;
				temp_des2.Empty();

				MultiByteToWideChar( CP_ACP, 0, temp_input, (int)strlen(temp_input)+1, 
					temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
				temp_des2.ReleaseBuffer();		

				m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUT,temp_des2);

				if(temp_panel != Station_NUM)
				{
					MessageBox(_T("Don't support other panel currently!"),_T("Warning"),MB_OK | MB_ICONINFORMATION);
					m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
					return 0;
				}
				if(temp_number > 0);	//因为Input2  的number 是1;
					temp_number = temp_number - 1;
				temp_point_type = temp_point_type + 1;
				if(2 == temp_point_type)
				{
					m_controller_data.at(Changed_Item).input.number = temp_number;
					m_controller_data.at(Changed_Item).input.panel = temp_panel;//bac_gloab_panel;
					m_controller_data.at(Changed_Item).input.point_type = temp_point_type;//1 means input point

					CString temp_des3;
					if(temp_number < BAC_INPUT_ITEM_COUNT)
					{
						//temp_des3.Format(_T("%d"),m_Input_data.at(temp_number - 1).value);

						CString cstemp_value;
						float temp_float_value;
						temp_float_value = ((float)m_Input_data.at(temp_number).value) / 1000;
						temp_des3.Format(_T("%.1f"),temp_float_value);


						m_controller_data.at(Changed_Item).input_value = m_Input_data.at(temp_number).value;	

						m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUTVALUE,temp_des3);
					}
				}
				else if(3 == temp_point_type)
				{
					m_controller_data.at(Changed_Item).input.number = temp_number;
					m_controller_data.at(Changed_Item).input.panel = temp_panel;//bac_gloab_panel;
					m_controller_data.at(Changed_Item).input.point_type = temp_point_type;//1 means input point

					CString temp_des3;
					if(temp_number < BAC_VARIABLE_ITEM_COUNT)
					{
						//temp_des3.Format(_T("%d"),m_Input_data.at(temp_number - 1).value);

						CString cstemp_value;
						float temp_float_value;
						temp_float_value = ((float)m_Variable_data.at(temp_number).value) / 1000;
						temp_des3.Format(_T("%.1f"),temp_float_value);


						m_controller_data.at(Changed_Item).input_value = m_Variable_data.at(temp_number).value;	

						m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUTVALUE,temp_des3);
					}
				}
				else
				{
					m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
					return 0;
				}


			}
			else
			{
				CString temp_message;
				temp_message.Format(_T("%s character not allowed in labels!"),cs_temp.GetString());
				
				MessageBox(temp_message,_T("Information"),MB_OK |MB_ICONINFORMATION);
				m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
				return 0;
			}
		}


	}

	if(Changed_SubItem == CONTROLLER_INPUTVALUE)
	{
		//int temp_value = _wtoi(New_CString);
		int temp_value = (int)(_wtof(New_CString) * 1000);

		if(m_controller_data.at(Changed_Item).input.number == 0 )
			return 0;
		if((m_controller_data.at(Changed_Item).input.number -1 )< BAC_INPUT_ITEM_COUNT)
			m_Input_data.at(m_controller_data.at(Changed_Item).input.number - 1).value = temp_value;
		
		temp_task_info.Format(_T("Write Controllers List Item%d .Changed the input value to \"%s\" "),Changed_Item + 1,New_CString);
		Post_Write_Message(g_bac_instance,WRITEINPUT_T3000,Changed_Item,Changed_Item,sizeof(Str_in_point),BacNet_hwd ,temp_task_info);
		return 0;
	}




	if(Changed_SubItem == CONTROLLER_SETVALUE)
	{
	//	int temp_value = _wtoi(New_CString);
		int temp_value = (int)(_wtof(New_CString) * 1000);
		if(m_controller_data.at(Changed_Item).setpoint.number == 0 )
			return 0;
		if((m_controller_data.at(Changed_Item).setpoint.number -1 )< BAC_VARIABLE_ITEM_COUNT)
			m_Variable_data.at(m_controller_data.at(Changed_Item).setpoint.number - 1).value = temp_value;

		temp_task_info.Format(_T("Write Controllers List Item%d .Changed the variable value to \"%s\" "),Changed_Item + 1,New_CString);
		Post_Write_Message(g_bac_instance,WRITEVARIABLE_T3000,Changed_Item,Changed_Item,sizeof(Str_in_point),BacNet_hwd ,temp_task_info);
		return 0;
	}

	if(Changed_SubItem == CONTROLLER_AUTO_MANUAL)
	{
		CString temp_cs = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		if(temp_cs.CompareNoCase(_T("Auto"))==0)
		{
			m_controller_list.SetCellEnabled(Changed_Item,CONTROLLER_OUTPUT,0);
			m_controller_data.at(Changed_Item).auto_manual = BAC_AUTO ;
		}
		else
		{
			m_controller_list.SetCellEnabled(Changed_Item,CONTROLLER_OUTPUT,1);
			m_controller_data.at(Changed_Item).auto_manual = BAC_MANUAL ;
		}
	}

	if(Changed_SubItem == CONTROLLER_OUTPUT)
	{
		CString temp_cs = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);

		int temp_int = (int)(_wtof(temp_cs) * 1000);
		m_controller_data.at(Changed_Item).value = temp_int;
	}

	if(Changed_SubItem == CONTROLLER_SETPOINT)
	{
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		char cTemp1[255];
		char temp_setpoint[250];
		char * tempcs=NULL;
		memset(cTemp1,0,255);
		memset(temp_setpoint,0,250);
		WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL );

		int temp_number=-1;
		byte temp_value_type = -1;
		byte temp_point_type=-1;
		int temp_panel = -1;
		int temp_net = -1;
		int k=0;
		//int temp1;
		//Change the lable.ex: Change the
		tempcs = ispoint(cTemp1,&temp_number,&temp_value_type,&temp_point_type,&temp_panel,&temp_net,0,bac_gloab_panel,&k);
		if(tempcs!=NULL)
		{
			memcpy_s(temp_setpoint,250,tempcs,9);
			//strcpy_s(temp_setpoint,tempcs);
			//strcpy(temp_setpoint,tempcs);
			CString temp_des2;
			temp_des2.Empty();

			MultiByteToWideChar( CP_ACP, 0, temp_setpoint, STR_VARIABLE_LABEL+1, 
				temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
			temp_des2.ReleaseBuffer();		
			
			m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINT,temp_des2);


			if(temp_panel != bac_gloab_panel)
			{
				MessageBox(_T("Don't support other panel currently!"),_T("Warning"),MB_OK | MB_ICONINFORMATION);
				m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
				return 0;
			}
			if(temp_number > 0)	//Setpoint 也是这样;从0 开始的;
				temp_number = temp_number - 1;
			temp_point_type = temp_point_type + 1; //OUTPUT=1, INPUT, VARIABLE 要错位;
			m_controller_data.at(Changed_Item).setpoint.number = temp_number;
			m_controller_data.at(Changed_Item).setpoint.panel = temp_panel;//bac_gloab_panel;
			m_controller_data.at(Changed_Item).setpoint.point_type = temp_point_type;//1 means input point

			CString temp_des3;
			if(temp_number < BAC_VARIABLE_ITEM_COUNT)
			{
				if(m_Variable_data.at(temp_number).range < VARIABLE_ANALOG_UNITE_COUNT)
					temp_des3 = Variable_Analog_Units_Array[m_Variable_data.at(temp_number).range];
				m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINTUNITS,temp_des3);
			}
			char tempAAAA[250];
			memset(tempAAAA,0,250);
			temp_des3.Empty();
			if(m_Variable_data.at(temp_number).range  == 20 )
			{
				if((m_controller_data.at(Changed_Item).setpoint_value>=0)&&(m_controller_data.at(Changed_Item).setpoint_value<86400))
					intervaltotext( tempAAAA, m_controller_data.at(Changed_Item).setpoint_value ,0 , 0);

				MultiByteToWideChar( CP_ACP, 0, tempAAAA, strlen(tempAAAA) + 1, 
					temp_des3.GetBuffer(MAX_PATH), MAX_PATH );
				temp_des3.ReleaseBuffer();	
			}
			else
			{
				CString cstemp_value;
				float temp_float_value;
				temp_float_value = ((float)m_Variable_data.at(m_controller_data.at(Changed_Item).setpoint.number).value) / 1000;
				temp_des3.Format(_T("%.1f"),temp_float_value);

			}
	
			m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETVALUE,temp_des3);

		}
		else
		{
			CString temp_show_ret;
			temp_show_ret = _T("\"") + cs_temp + _T("\"") + _T(" is a invalid label or keyword .");
			SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_show_ret);
			m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINT,_T(""));
		}
	}

	if(Changed_SubItem == CONTROLLER_PROPORTIONAL)
	{
		int temp_proportional=0;
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>255) )
		{
			MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION);
			m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
		}
		else
		{
			m_controller_data.at(Changed_Item).proportional = _wtoi(cs_temp);
		}
	}
	if(Changed_SubItem == CONTROLLER_RESET)
	{
		int temp_reset=0;
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>255) )
		{
			MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION);
			m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
		}
		else
		{
			m_controller_data.at(Changed_Item).reset = _wtoi(cs_temp);
		}
	}

	if(Changed_SubItem == CONTROLLER_RATE)
	{
		int temp_rate=0;
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);

		int i_value =  (int)(_wtof(cs_temp) * 100) ;

		if((i_value > 200) || (i_value < 0))
		//if((cs_temp.GetLength()>1) || (_wtoi(cs_temp)>2) )
		{
			MessageBox(_T("Please input a effective value  0.00 - 2.00"),_T("Information"),MB_OK |MB_ICONINFORMATION);
			m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
		}
		else
		{
			m_controller_data.at(Changed_Item).rate = i_value;
		}
	}

	if(Changed_SubItem == CONTROLLER_BIAS)
	{
		int temp_bias=0;
		CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem);
		if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>100) )
		{
			MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION);
			m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T(""));
		}
		else
		{
			m_controller_data.at(Changed_Item).bias = _wtoi(cs_temp);
		}
	}



	cmp_ret = memcmp(&m_temp_controller_data[Changed_Item],&m_controller_data.at(Changed_Item),sizeof(Str_controller_point));
	if(cmp_ret!=0)
	{
		m_controller_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR);
		temp_task_info.Format(_T("Write Controllers List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString);
		Post_Write_Message(g_bac_instance,WRITEPID_T3000,Changed_Item,Changed_Item,sizeof(Str_controller_point),m_controller_dlg_hwnd ,temp_task_info,Changed_Item,Changed_SubItem);

	}


	
	return 0;
}
コード例 #4
0
LRESULT BacnetController::Fresh_Controller_List(WPARAM wParam,LPARAM lParam)
{
	CString temp_des2;
	CString temp_des3;
	CString temp_in_unit;
	CString temp_set_unit;
	int Fresh_Item;
	int isFreshOne = (int)lParam;
	if(isFreshOne == REFRESH_ON_ITEM)
	{
		Fresh_Item = (int)wParam;
	}
	else
	{
#if 1
		if(m_controller_list.IsDataNewer((char *)&m_controller_data.at(0),sizeof(Str_controller_point) * BAC_PID_COUNT))
		{
			//避免list 刷新时闪烁;在没有数据变动的情况下不刷新List;
			m_controller_list.SetListData((char *)&m_controller_data.at(0),sizeof(Str_controller_point) * BAC_PID_COUNT);
		}
		else
		{
			//return 0;
		}
#endif
	}
	


	for (int i=0;i<(int)m_controller_data.size();i++)
	{
		if(i>=controller_item_limit_count)
			break;

		if(isFreshOne)
		{
			i = Fresh_Item;
		}

		temp_des2.Empty();

		if(2 == m_controller_data.at(i).input.point_type)
		{
			if(m_controller_data.at(i).input.number< BAC_INPUT_ITEM_COUNT)
			{	
					MultiByteToWideChar( CP_ACP, 0, (char *)m_Input_data.at(m_controller_data.at(i).input.number ).label, 
						(int)strlen((char *)m_Input_data.at(m_controller_data.at(i).input.number ).label)+1, 
						temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
					temp_des2.ReleaseBuffer();	


					if(temp_des2.GetLength()>9)
						temp_des2.Format(_T("%d-IN%d"),m_controller_data.at(i).input.panel,m_controller_data.at(i).input.number);
					if(temp_des2.IsEmpty())
						temp_des2.Format(_T("%d-IN%d"),m_controller_data.at(i).input.panel,m_controller_data.at(i).input.number);

					//temp_des3.Format(_T("%d"),m_Input_data.at(m_controller_data.at(i).input.number - 1).value);	
					CString cstemp_value;
					float temp_float_value;
					temp_float_value = ((float)m_controller_data.at(i).input_value) / 1000;

					cstemp_value.Format(_T("%.1f"),temp_float_value);
					m_controller_list.SetItemText(i,CONTROLLER_INPUTVALUE,cstemp_value);


					//********************************************************************************************************
					// bind the the input units.
					int x = m_controller_data.at(i).input.number;
					if(m_Input_data.at(x).digital_analog == BAC_UNITS_ANALOG)
					{
						m_controller_list.SetItemText(i,CONTROLLER_INPUTUNITS,Input_List_Analog_Units[m_Input_data.at(x).range]);
					}
			
			}
		}
		else if(3 == m_controller_data.at(i).input.point_type)
		{
			if(m_controller_data.at(i).input.number< BAC_VARIABLE_ITEM_COUNT)
			{	
					MultiByteToWideChar( CP_ACP, 0, (char *)m_Variable_data.at(m_controller_data.at(i).input.number ).label, 
						(int)strlen((char *)m_Variable_data.at(m_controller_data.at(i).input.number ).label)+1, 
						temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
					temp_des2.ReleaseBuffer();	



					if(temp_des2.GetLength()>9)
						temp_des2.Format(_T("%d-VAR%d"),m_controller_data.at(i).input.panel,m_controller_data.at(i).input.number);
					if(temp_des2.IsEmpty())
						temp_des2.Format(_T("%d-VAR%d"),m_controller_data.at(i).input.panel,m_controller_data.at(i).input.number);

					//temp_des3.Format(_T("%d"),m_Input_data.at(m_controller_data.at(i).input.number - 1).value);	
					CString cstemp_value;
					float temp_float_value;
					temp_float_value = ((float)m_controller_data.at(i).input_value) / 1000;

					cstemp_value.Format(_T("%.1f"),temp_float_value);
					m_controller_list.SetItemText(i,CONTROLLER_INPUTVALUE,cstemp_value);


					//********************************************************************************************************
					// bind the the input units.
					int x = m_controller_data.at(i).input.number;
					if(m_Variable_data.at(x).digital_analog == BAC_UNITS_ANALOG)
					{
						if(m_Variable_data.at(x).range <= sizeof(Variable_Analog_Units_Array)/sizeof(Variable_Analog_Units_Array[0]))
							m_controller_list.SetItemText(i,CONTROLLER_INPUTUNITS,Variable_Analog_Units_Array[m_Variable_data.at(x).range]);
					}
			
			}
		}
		else
		{
			m_controller_list.SetItemText(i,CONTROLLER_INPUTVALUE,_T(""));
			m_controller_list.SetItemText(i,CONTROLLER_INPUTUNITS,_T(""));
		}
		
		m_controller_list.SetItemText(i,CONTROLLER_INPUT,temp_des2);

		float persend_data;
		persend_data = ((float)m_controller_data.at(i).value)/ 1000;
		CString temp_output_value;
		temp_output_value.Format(_T("%.1f%%"),persend_data);
		m_controller_list.SetItemText(i,CONTROLLER_OUTPUT,temp_output_value);

		//CString temp_sample_time;
		//temp_sample_time.Format(_T("%u"),m_controller_data.at(i).sample_time);
		//m_controller_list.SetItemText(i,CONTROLLER_SAMPLE_TIME,temp_sample_time);
		//temp_des2.Format(_T("%d"),m_controller_data.at(i).input_value);
		//m_controller_list.SetItemText(i,CONTROLLER_INPUTVALUE,temp_des2);

		//if(m_controller_data.at(i).input.number < BAC_INPUT_ITEM_COUNT)
		//{
		//	if(m_Input_data.at(m_controller_data.at(i).input.number).range < INPUT_ANOLAG_UNITE_COUNT)
		//		m_controller_list.SetItemText(i,CONTROLLER_INPUTUNITS,Input_List_Analog_Units[m_Input_data.at(m_controller_data.at(i).input.number).range]);
		//	else
		//		m_controller_list.SetItemText(i,CONTROLLER_INPUTUNITS,_T(""));
		//}
		
			
		temp_des2.Empty();
		temp_des3.Empty();
		temp_set_unit.Empty();
		if(m_controller_data.at(i).setpoint.point_type == 1) 
		{
			if(m_controller_data.at(i).setpoint.number< BAC_OUTPUT_ITEM_COUNT)
			{

			}
		}
		else if(m_controller_data.at(i).setpoint.point_type == 2) 
		{
			if(m_controller_data.at(i).setpoint.number< BAC_INPUT_ITEM_COUNT)
			{
					int num_point,num_panel,num_net,k;
					Point_T3000 point;
					point.number = m_controller_data.at(i).setpoint.number;
					point.number = point.number + 1;	//input setpoint 是从 0 开始计数的 ,但是要去找point label 要从1开始;
					point.panel = m_controller_data.at(i).setpoint.panel;
					point.point_type = m_controller_data.at(i).setpoint.point_type - 1;	//调用 ispoint的时候要减一;
					byte point_type,var_type;

					int temp_network = 0;
					char buf[255];
					char q[17];
					pointtotext_for_controller(q, &point);

					char * temp1 = ispoint(q,&num_point,&var_type, &point_type, &num_panel, &num_net, temp_network, point.panel, &k);
					if(temp1!=NULL)
					{
						if(strlen(temp1) < 255)
						{
							strcpy(buf,temp1);

							MultiByteToWideChar( CP_ACP, 0, (char *)buf,(int)strlen((char *)buf)+1, 
								temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
							temp_des2.ReleaseBuffer();	

							float temp_float_value;
							temp_float_value = ((float)m_controller_data.at(i).setpoint_value) / 1000;
							temp_des3.Format(_T("%.1f"),temp_float_value);



							int x = m_controller_data.at(i).setpoint.number;
							if(m_Input_data.at(x).digital_analog == BAC_UNITS_ANALOG)
							{

								if(m_Input_data.at(x).range <  (sizeof(Input_List_Analog_Units)/sizeof(Input_List_Analog_Units[0])))
									temp_set_unit = Input_List_Analog_Units[m_Input_data.at(x).range];
									
							}
						}
					}
				
			}
		}
		else if(m_controller_data.at(i).setpoint.point_type == 3)	//Variable
		{
			if(m_controller_data.at(i).setpoint.number< BAC_VARIABLE_ITEM_COUNT)
			{
				int num_point,num_panel,num_net,k;
				Point_T3000 point;
				point.number = m_controller_data.at(i).setpoint.number;
				point.number = point.number + 1;	//input setpoint 是从 0 开始计数的 ,但是要去找point label 要从1开始;
				point.panel = m_controller_data.at(i).setpoint.panel;
				point.point_type = m_controller_data.at(i).setpoint.point_type - 1;	//调用 ispoint的时候要减一;
				byte point_type,var_type;

				int temp_network = 0;
				char buf[255];
				char q[17];
				pointtotext_for_controller(q, &point);

				char * temp1 = ispoint(q,&num_point,&var_type, &point_type, &num_panel, &num_net, temp_network, point.panel, &k);
				if(temp1!=NULL)
				{
					if(strlen(temp1) < 255)
					{
						strcpy(buf,temp1);

						MultiByteToWideChar( CP_ACP, 0, (char *)buf,(int)strlen((char *)buf)+1, 
							temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
						temp_des2.ReleaseBuffer();	

						float temp_float_value;
						temp_float_value = ((float)m_controller_data.at(i).setpoint_value) / 1000;
						temp_des3.Format(_T("%.1f"),temp_float_value);



						int x = m_controller_data.at(i).setpoint.number;
						if(m_Variable_data.at(x).digital_analog == BAC_UNITS_DIGITAL)
						{


							if(m_Variable_data.at(x).range>30)
							{
								temp_set_unit = _T("");
							}
							else
							{
								CString temp1;
								CStringArray temparray;

								if((m_Variable_data.at(x).range < 23) &&(m_Variable_data.at(x).range !=0))
									temp1 = Digital_Units_Array[m_Variable_data.at(x).range];
								else if((m_Variable_data.at(x).range >=23) && (m_Variable_data.at(x).range <= 30))
								{
									if(receive_customer_unit)
										temp1 = temp_unit_no_index[m_Variable_data.at(x).range - 23];
								}

								SplitCStringA(temparray,temp1,_T("/"));
								if((temparray.GetSize()==2))
								{
									if(m_Variable_data.at(x).control == 0)
										temp_set_unit = temparray.GetAt(0);
									else
										temp_set_unit = temparray.GetAt(1);
								}

							}
						}
						else
						{
							if(m_Variable_data.at(x).range == 20)	//如果是时间;
							{
								temp_set_unit = Variable_Analog_Units_Array[m_Variable_data.at(x).range];
								char temp_char[50];
								int time_seconds = m_Variable_data.at(x).value / 1000;
								intervaltotext(temp_char,time_seconds,0,0);
								CString temp_11;
								MultiByteToWideChar( CP_ACP, 0, temp_char, strlen(temp_char) + 1, 
									temp_11.GetBuffer(MAX_PATH), MAX_PATH );
								temp_11.ReleaseBuffer();		
								
								temp_set_unit = temp_11;
								//temp_value.Format(_T("%d"),m_Variable_data.at(i).value);
								//m_variable_list.SetItemText(i,VARIABLE_VALUE,temp_value);
							}
							else if(m_Variable_data.at(x).range<=sizeof(Variable_Analog_Units_Array)/sizeof(Variable_Analog_Units_Array[0]))
							{
								//m_variable_list.SetItemText(i,VARIABLE_UNITE,Variable_Analog_Units_Array[m_Variable_data.at(i).range]);
								temp_set_unit = Variable_Analog_Units_Array[m_Variable_data.at(x).range];
								//CString cstemp_value;
								//float temp_float_value;
								//temp_float_value = ((float)m_Variable_data.at(i).value) / 1000;
								//cstemp_value.Format(_T("%.3f"),temp_float_value);
								//m_variable_list.SetItemText(i,VARIABLE_VALUE,cstemp_value);

								//temp_value.Format(_T("%d"),m_Variable_data.at(i).value);
								//m_variable_list.SetItemText(i,VARIABLE_VALUE,temp_value);
							}
						}





					}
				}
			}
		}
#if 0
		if(m_controller_data.at(i).setpoint.number< BAC_VARIABLE_ITEM_COUNT)
		{	
			if(m_controller_data.at(i).setpoint.point_type == 0 )
				temp_des2.Empty();
			else
			{
				int num_point,num_panel,num_net,k;
				Point_T3000 point;
				point.number = m_controller_data.at(i).setpoint.number;
				point.number = point.number + 1;	//input setpoint 是从 0 开始计数的 ,但是要去找point label 要从1开始;
				point.panel = m_controller_data.at(i).setpoint.panel;
				point.point_type = m_controller_data.at(i).setpoint.point_type;
				byte point_type,var_type;
				
				int temp_network = 0;
				char buf[255];
				char q[17];
				pointtotext_for_controller(q, &point);

				char * temp1 = ispoint(q,&num_point,&var_type, &point_type, &num_panel, &num_net, temp_network, point.panel, &k);
				if(temp1!=NULL)
				{
					if(strlen(temp1) < 255)
					{
						strcpy(buf,temp1);

						MultiByteToWideChar( CP_ACP, 0, (char *)buf,(int)strlen((char *)buf)+1, 
							temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
						temp_des2.ReleaseBuffer();	
					}
				}

#if 0
				MultiByteToWideChar( CP_ACP, 0, (char *)m_Variable_data.at(m_controller_data.at(i).setpoint.number - 1).label, 
					(int)strlen((char *)m_Variable_data.at(m_controller_data.at(i).setpoint.number - 1).label)+1, 
					temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
				temp_des2.ReleaseBuffer();	
				if(temp_des2.GetLength()>9)//如果获取的Var长度大于9,说明获取的Label不对,也要重置;
				{
					temp_des2.Empty();
					temp_des3.Empty();
				}
				else
				{
					CString cstemp_value;
					float temp_float_value;
					temp_float_value = ((float)m_Variable_data.at(m_controller_data.at(i).setpoint.number - 1).value) / 1000;
					temp_des3.Format(_T("%.1f"),temp_float_value);
					

					//temp_des3.Format(_T("%d"),m_Variable_data.at(m_controller_data.at(i).setpoint.number - 1).value);
				}
				if(m_Variable_data.at(i).digital_analog == BAC_UNITS_ANALOG)
				{
					if(m_Variable_data.at(i).range<=sizeof(Variable_Analog_Units_Array)/sizeof(Variable_Analog_Units_Array[0]))
					{
						m_controller_list.SetItemText(i,CONTROLLER_SETPOINTUNITS,Variable_Analog_Units_Array[m_Variable_data.at(m_controller_data.at(i).setpoint.number - 1).range]);
						//temp_value.Format(_T("%d"),m_Variable_data.at(i).value);
						//m_variable_list.SetItemText(i,VARIABLE_VALUE,temp_value);
					}
				}
#endif
			}


			

			
		}
#endif
		m_controller_list.SetItemText(i,CONTROLLER_SETPOINT,temp_des2);
		m_controller_list.SetItemText(i,CONTROLLER_SETVALUE,temp_des3);
		m_controller_list.SetItemText(i,CONTROLLER_SETPOINTUNITS,temp_set_unit);
	
		//if(m_controller_data.at(i).units < VARIABLE_ANALOG_UNITE_COUNT)
		//	m_controller_list.SetItemText(i,CONTROLLER_SETPOINTUNITS,Variable_Analog_Units_Array[m_controller_data.at(i).units]);
		//else
		//	m_controller_list.SetItemText(i,CONTROLLER_SETPOINTUNITS,_T(""));


		if(m_controller_data.at(i).action == 0)
		{
			m_controller_list.SetItemText(i,CONTROLLER_ACTION,_T("-"));
		}
		else if(m_controller_data.at(i).action >= 1)
		{
			m_controller_list.SetItemText(i,CONTROLLER_ACTION,_T("+"));
		}
		//else
		//{
		//	m_controller_list.SetItemText(i,CONTROLLER_SETPOINTUNITS,_T(""));
		//}

		temp_des3.Format(_T("%d"),m_controller_data.at(i).proportional);
		m_controller_list.SetItemText(i,CONTROLLER_PROPORTIONAL,temp_des3);

		temp_des3.Format(_T("%d"),m_controller_data.at(i).reset);
		m_controller_list.SetItemText(i,CONTROLLER_RESET,temp_des3);


		if(m_controller_data.at(i).auto_manual==0)
		{
			m_controller_list.SetItemText(i,CONTROLLER_AUTO_MANUAL,_T("Auto"));
			m_controller_list.SetCellEnabled(i,CONTROLLER_OUTPUT,0);
		}
		else
		{
			m_controller_list.SetItemText(i,CONTROLLER_AUTO_MANUAL,_T("Manual"));
			m_controller_list.SetCellEnabled(i,CONTROLLER_OUTPUT,1);
		}


		if(m_controller_data.at(i).bias<=100)
		{
			temp_des3.Format(_T("%d"),m_controller_data.at(i).bias);
			m_controller_list.SetItemText(i,CONTROLLER_BIAS,temp_des3);
		}
		else
		{
			m_controller_data.at(i).bias = 0;
			m_controller_list.SetItemText(i,CONTROLLER_BIAS,_T("0"));
		}

		if(m_controller_data.at(i).rate<=200)
		{
			temp_des3.Format(_T("%.2f"),((float)m_controller_data.at(i).rate)/100);
			m_controller_list.SetItemText(i,CONTROLLER_RATE,temp_des3);
		}
		else
		{
			m_controller_data.at(i).rate = 0;
			m_controller_list.SetItemText(i,CONTROLLER_RATE,_T("0"));
		}

		if(isFreshOne)
		{
			break;
		}
	
	}
	
	return	 0;
}
コード例 #5
0
ファイル: parsers.c プロジェクト: kewtree1408/Concordance
void parser1(FILE *fp, int N, int *diff, bool st, int *ch) {
	int state = INIT;
	long int cur = ftell(fp);
// 	printf ("ch=%c, diff = %d\n",*ch, *diff);
//  	while ((*ch!=EOF) && (!isalnum(*ch))) {
// 		cur = ftell(fp);
// 		*ch = fgetc(fp);
// 	}
//  	fseek(fp,cur,SEEK_SET);
	while ((((*diff) > N) && (*ch=fgetc(fp)) != EOF)/* && ((*diff) > N)*/) {
		if (state == INIT) {
			if (isalnum(*ch)/* || ch == '-' || ch == '\''*/) {
				state = SB;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			if (isspace(*ch)) {
				state = LF;
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			if (ispoint(*ch)) {
				state = PT;
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			else {
				state = OT;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
		}
		if (state == SB) {
			if (isalnum(*ch) || *ch == '-' || *ch == '\'') {
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			if (isspace(*ch)) {
				state = LF;
				(*diff)--;
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			if (ispoint(*ch)) {
				state = PT;
				(*diff)--;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			else {
				state = OT;
				(*diff)--;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
		}
		if (state == LF) {
			if (isalnum(*ch)/* || ch == '-' || ch == '\''*/) {
				state = SB;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			if (isspace(*ch)) {
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			if (ispoint(*ch)) {
				state = PT;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			else {
				state = OT;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
		}
		if (state == PT) {
			if (isalnum(*ch)/* || ch == '-' || ch == '\''*/) {
				state = SB;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			if (isspace(*ch)) {
				state = LF;
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			if (ispoint(*ch)) {
				state = PT;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			else {
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
		}
		if (state == OT) {
			if (isalnum(*ch)/* || ch == '-' || ch == '\''*/) {
				state = SB;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			if (isspace(*ch)) {
				state = LF;
				if (st) {
					if (*ch == '\n') printf (" ");
					else printf ("%c",*ch);
				}
				continue;
			}
			if (ispoint(*ch)) {
				state = PT;
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
			else {
				if (st) {
					printf ("%c",*ch);
				}
				continue;
			}
		}
	}
// 	printf ("%c",*ch);
	//while ((ch!=EOF) && (isspace(ch))) ch=fgetc(fp);
}
コード例 #6
0
ファイル: parsers.c プロジェクト: kewtree1408/Concordance
void sparser (BB *btree, char fl, int N, char *idx_path) {
	Qlist *query = qlist_create();
	int i=0;
	unsigned int ch;
	char *word = (char*)malloc(sizeof(char)*80);
	int state = INIT;
	int numb_query = 0;
	int count_word = 0;
	while ((ch = getchar())!=EOF) {
		if (i>80) {
// 			printf ("I'm here\n");
 			char *tmp = (char *)realloc(word, 10000);
			word = tmp;
 		}
 		if (state == INIT) {
			if (ch == '\n') {
				word[i++] = '\0';
				if (!(isspace(word[0]) || word[0]=='\0' || ispoint(word[0]))) {
					qlist_insert(query,word,i);
					memset(word,0,i);
					count_word++;
					numb_query++;
				}
				i=0;
				query_find(btree,query,count_word,fl,numb_query,N);
// 				qlist_prn(query);
				qlist_clear(query);
				state = INIT;
				count_word=0;
				continue;
			}
			if (isalnum(ch)) {
				state = SB;
				word[i] = tolower(ch);
				i++;
				continue;
			}
			else {
				state = INIT;
				continue;
			}
		}
		if (state == LF) {
			word[i++] = '\0';
			qlist_insert(query,word,i);
			memset(word,0,i);
			i=0;
			count_word++;
			numb_query++;
			query_find(btree,query,count_word,fl,numb_query,N);
// 			qlist_prn(query);
			qlist_clear(query);
			state = INIT;
			count_word=0;
		}
		if (state == SB) {
			if (isalnum(ch) || ch =='\'' || ch == '-') {
				word[i++]=tolower(ch);
				continue;
			}
			if (ch == '\n') {
				word[i++] = '\0';
				qlist_insert(query,word,i);
				memset(word,0,i);
				i=0;
				count_word++;
				numb_query++;
				query_find(btree,query,count_word,fl,numb_query,N);
// 				qlist_prn(query);
				qlist_clear(query);
				state = INIT;
				count_word=0;
				continue;
			}
			else {
				word[i] = '\0'; i++;
				qlist_insert(query,word,i);
				memset(word,0,i);
				i=0;
				state = INIT;
				count_word++;
			}
		}
	}
	
	printf ("searching queries have finished\n");
	
}