📄 readcfg.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 + -