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

📄 readcfg.c

📁 hid类主机对打印机操作的应用例程
💻 C
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ReadCfg.h"

//#define DEBUG

s_bpbox bpbox;
s_msf msf;
s_pinkey pinkey;
CfgItem Item[MAX];

short	RenderQuote (const char * SourceString, char * TargetString );
void getValueByName(CfgItem* items, char* itemname, char *DestBuff);
void getValueByName2(CfgItem* items, char* itemname, char *DestBuff);

int readCfgBpBox(char* BpBoxType)
{
	char bpfile[128]="bpbox.ini";
	CfgItem *bpnode = NULL;
	
	if(!(bpnode = loadCfg(bpfile, BpBoxType)))
	{
		printf("配置载入错误:%s\n",bpfile);
		return -1;
	}

	getValueByName2(bpnode,"打开串口扩展器B口",	bpbox.openexaux1 );
	getValueByName2(bpnode,"打开串口扩展器C口",	bpbox.openexaux2 );
	getValueByName2(bpnode,"打开串口扩展器K口",	bpbox.openexaux3 );
	getValueByName2(bpnode,"转至串口扩展器A口",	bpbox.closeexaux );	
	return 0;
}

int readCfgPinkey(char* PinKeyType)
{

	char pinkeyfile[128]="pinkey.ini";
	CfgItem *pinkeynode = NULL;
	if(!(pinkeynode = loadCfg(pinkeyfile, PinKeyType))) 
	{
		
		printf("配置载入错误:%s\n",pinkeyfile);	
		return -1;
	}
	


	getValueByName(pinkeynode,  "确认键值", pinkey.pinenter );
	getValueByName(pinkeynode,  "修改键值", pinkey.pinclear );
	getValueByName(pinkeynode,  "一次输入提示", pinkey.pinlgon1 );
	getValueByName(pinkeynode,  "二次输入提示", pinkey.pinlgon2 );
	getValueByName(pinkeynode,  "提示灯关闭", pinkey.pinlgoff );
	getValueByName(pinkeynode,  "数据返回", pinkey.pinrhead );

	return 0;
}



int readCfgMsf(char* MsfType)
{
	char msffile[128]="msf.ini";
	CfgItem *msfnode = NULL;

	if(!(msfnode = loadCfg(msffile, MsfType))) 
	{
		printf("配置载入错误:%s\n",msffile);	
		return -1;
	}
	
	getValueByName(msfnode, "磁条机软复位",	msf.msfinit );
	getValueByName(msfnode, "读磁道2指令",	msf.msfread2 );
	getValueByName(msfnode, "读磁道3指令",	msf.msfread3 );
	getValueByName(msfnode, "读磁道2/3指令",	msf.msfread23 );
	getValueByName(msfnode, "读磁道2数据起始符" ,msf.msfdata2 );
	getValueByName(msfnode, "读磁道3数据起始符" ,msf.msfdata3 );
	getValueByName(msfnode, "读磁道数据结束符",msf.msfdrend );
	getValueByName(msfnode, "写磁道2指令", 	msf.msfwrit2 );
	getValueByName(msfnode, "写磁道3指令", 	msf.msfwrit3 );
	getValueByName(msfnode, "写磁道2/3指令", 	msf.msfwrit23 );
	getValueByName(msfnode, "2/3磁道数据分隔符",msf.msfdelim );
	getValueByName(msfnode, "写磁道数据结束符",msf.msfdwend );
	getValueByName(msfnode, "请求状态", 	msf.msfstats );
	getValueByName(msfnode, "返回状态",	msf.msfstatr );
	getValueByName(msfnode, "返回错误",	msf.msfster1 );
	getValueByName(msfnode, "磁道空标志",	msf.msfempty );
	getValueByName(msfnode, "磁道正确标志",	msf.msfnoerr );
    getValueByName(msfnode,"ISO标准指令", msf.msfisost );
	if (msf.msfisost[0] == 0x00) 
		strcpy(msf.msfisost, ISO_STRING );

	return 0;
}


short	RenderQuote (const char * SourceString, char * TargetString )
{
	char	HexCup[5] = { '0', ' ', ' ', ' ', '\0' },
		
		* rag;
	short	i = 0;
	long 	HexValue;
	
	
	while ( * SourceString )
	{
		while ( * SourceString != '\\' && * SourceString )
		{
			* TargetString ++ = * SourceString ++;
			i ++;
		}
		
		if ( * SourceString == '\0' )
			break;
		else
			SourceString ++;
		
		switch ( * SourceString )
		{
		case '\\' :
		case '"' :
			* TargetString = * SourceString;break;
		case 'r' :
			* TargetString = '\015';	break;
		case 'n' :
			* TargetString = '\012';	break;
		case 't' :
			* TargetString = '\011';	break;
		case 'b' :
			* TargetString = '\010';	break;
		case '0' :
			HexCup[1] = * ( ++ SourceString );
			HexCup[2] = * ( ++ SourceString );
			HexCup[3] = * ( ++ SourceString );
			HexValue = strtol( HexCup, & rag, 8 );
			* TargetString = ( char ) HexValue;
			break;
		case 'x' :
		case 'X' :
			HexCup[1] = 'x';
			HexCup[2] = * ( ++ SourceString );
			HexCup[3] = * ( ++ SourceString );
			HexValue  = strtol( HexCup, & rag, 16 );
			* TargetString = ( char ) HexValue;
			break;
		}
		SourceString ++;
		TargetString ++;
		i ++;
	}
	* TargetString = '\0';
	
	return i;
}

void getValueByName(CfgItem* items, char* itemname, char *DestBuff)
{
	int i;
	
	memset(DestBuff, 0x00, DEVCMDLEN);
    for(i=0; i<items[0].item_num-1; i++)
	{		
		if(!strcmp(items[i].name,itemname))
		{			
			RenderQuote(items[i].value, DestBuff);				
			
			#ifdef DEBUG
			{
				FILE *fpp;
				fpp=fopen("log.txt","a+");
				fprintf(fpp,"the get value is :%s\n",items[i].value);			
				fclose(fpp);
			}
			#endif
			
		}
	}	
}

void getValueByName2(CfgItem* items, char* itemname, char *DestBuff)
{
	int i;
	
	memset(DestBuff, 0x00, DEVCMDLEN);
    for(i=0; i<items[0].item_num; i++)
	{		
		if(!strcmp(items[i].name,itemname))
		{			
			RenderQuote(items[i].value, DestBuff);				
			
			#ifdef DEBUG
			{
			FILE *fpp;
			fpp=fopen("log.txt","a+");
			fprintf(fpp,"the get value is :%s\n",items[i].value);			
			fclose(fpp);
			}
			#endif
			
		}
	}	
}


/*
int main()
{
	readCfgTerm("终端类型1");
	readCfgPinkey("密码键盘类型8");
	readCfgMsf("磁条读写器类型1");
	return 0;
}
*/

⌨️ 快捷键说明

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