#include "global.th" #include "config_work.th" Configuration config; string get_parameter(string param){ romfile.open("sdf.txt"); int str_start = 1; unsigned long pos,pos2; pos = romfile.find(str_start,param+"=",1); pos +=len(param+"="); romfile.pointer32=pos; pos2 = romfile.find(pos,chr(13),1); return romfile.getdata(pos2-pos); } string get_parameter_from_file(string param,string filename){ fd.filenum = 2; fd.open(filename); fd.setpointer(1); unsigned long pos,pos2; pos=fd.find(1,param+"=",1,FORWARD,1,PL_FD_FIND_EQUAL); if (pos == 0){ fd.close(); return ""; } fd.setpointer(pos+len(param+"=")); pos2 = fd.find(pos+len(param),chr(13),1,FORWARD,1,PL_FD_FIND_EQUAL)-len(param+"="); string r = fd.getdata(pos2-pos); d("|<"+param+"='"+r+"'"+chr(13)); fd.close(); return r; } bool format_flash(int flash_size, int file_count){ return (fd.format(config.FLASH_SIZE,config.FLASH_FILES) == PL_FD_STATUS_OK); } void config_load(){ d("load config"); if (config.STORE_LOCATON == FLASH){ fd.filenum=1; fd.open("config"); d("config file size:" +str(fd.filesize)); fd.close(); config.IP= get_parameter_from_file("IP","config"); config.STORE_LOCATON = get_parameter_from_file("STORE_LOCATON","config"); config.FLASH_SIZE = get_parameter_from_file("FLASH_SIZE","config"); config.FLASH_FILES = get_parameter_from_file("FLASH_FILES","config"); config.STORE_BRAKER = get_parameter_from_file("STORE_BRAKER","config"); for (int i = 0; i>>"+sb); for (int i = 0; i0){ BrakerConfig c = conf.BRAKERS[i]; b+="BRAKER["+str(i)+"].ENABLE=" +str(c.Enable)+r; b+="BRAKER["+str(i)+"].SENSPORT=" +str(c.SensPort)+r; b+="BRAKER["+str(i)+"].DROPPORT=" +str(c.DropPort)+r; b+="BRAKER["+str(i)+"].RELAY=" +str(c.Relay)+r; b+="BRAKER["+str(i)+"].TIMEOUT=" +str(c.Timeout)+r; fd.filenum = 1; fd.setdata(b); d("|>>>"+b); } } for (int i=0;i0){ b+="BOUNCE["+str(i)+"].ENABLE="+ str(conf.BOUNCE[i].Enable); b+="BOUNCE["+str(i)+"].PORT="+ str(conf.BOUNCE[i].Port); b+="BOUNCE["+str(i)+"].TIMEOUT="+ str(conf.BOUNCE[i].Timeout); fd.filenum = 1; fd.setdata(b); d("|>>>"+b); } } d("after write:file size:" +str(fd.filesize)); fd.close(); } } #define DEF_IP "192.168.123.19" //#define DEF_IP "10.0.50.232" void config_init(){ config_create(); int init= stor.getdata(5,1); switch (init){ case 3: config.STORE_LOCATON =FLASH; config.FLASH_SIZE = 1024; config.FLASH_FILES = 10; break; case 6: config.STORE_LOCATON = EEPROM; break; default: config.STORE_LOCATON = NONE; break; } config.IP = ddstr(stor.getdata(0,4)); if (config.IP != validate_id(config.IP)) config.IP= DEF_IP; // config.BRAKER_COUNT = 3; // config.STORE_LOCATON = FLASH; // config.FLASH_SIZE = 1024; // config.FLASH_FILES = 10; // config.STORE_BRAKER = false; if (config.STORE_LOCATON == FLASH){ if (fd.mount() !=PL_FD_STATUS_OK){ d("formating"); if (format_flash(config.FLASH_SIZE,config.FLASH_FILES)) { d("format complete"); fd.mount(); }else{ d("format error"); } } fd.filenum = 1; if (!fd.open("config") || fd.filesize==0){ d("initial write config"); fd.create("config"); config_write(config); } config_load(); } } void config_save(){ config_write(config); } void config_create(){ config.IP= "0.0.0.0"; config.STORE_LOCATON = NONE; config.FLASH_SIZE = 0; config.FLASH_FILES = 0; config.STORE_BRAKER = false; BrakerConfig c; c.Enable = false; c.SensPort = 0; c.DropPort = 0; c.Relay = 0; c.Timeout = 0; config.BRAKERS[0] = c; config.BRAKERS[1] = c; config.BRAKERS[2] = c; config.EncoderCfg.encoderPort = 0; config.EncoderCfg.encoderMode = 0; config.EncoderCfg.encoderInterval = 0; config.EncoderCfg.windowWidth= 40; config.EncoderCfg.reinitInterval = 3; config.EncoderCfg.workedPorts = ""; config.debug.EncoderDebug=0; }