diff --git a/braker.tc b/braker.tc index 837024d..0b1f70c 100644 --- a/braker.tc +++ b/braker.tc @@ -5,19 +5,37 @@ extern Configuration config; +string ports = ""; + BrakerProcess brakers[BRAKER_COUNT]; +void braker_add_port(char port){ + if (instr(1,ports,port,1)==0){ + ports+=(string)chr(port); + } +} +bool isBrakerPort(int port){ + char p = (char)port; +// d(instr(1,ports,chr(p),1)); + return (instr(1,ports,chr(p),1)>0); +} + void brakers_init(){ + ports = ""; config.STORE_BRAKER = false; for (int num = 0;num 0){ + braker_add_port(config.BRAKERS[num].DropPort); + io.num = INPIN[config.BRAKERS[num].DropPort-1]; + io.enabled=false; + } io.num = OUTPIN[config.BRAKERS[num].Relay-1]; io.enabled=true; #endif @@ -43,10 +61,14 @@ void braker_init(unsigned char number, unsigned char sensor, unsigned char drop, if (config.BRAKERS[num].Enable){ config.STORE_BRAKER = true; #if PLATFORM_ID != SIMULATOR + braker_add_port(config.BRAKERS[num].SensPort); io.num = INPIN[config.BRAKERS[num].SensPort-1]; io.enabled=false; - io.num = INPIN[config.BRAKERS[num].DropPort-1]; - io.enabled=false; + if (config.BRAKERS[num].DropPort >0){ + braker_add_port(config.BRAKERS[num].DropPort); + io.num = INPIN[config.BRAKERS[num].DropPort-1]; + io.enabled=false; + } io.num = OUTPIN[config.BRAKERS[num].Relay-1]; io.enabled=true; #endif @@ -105,6 +127,6 @@ string braker_get_current(unsigned char num){ string c = left(brakers[num].Fifo,1); int l = len(brakers[num].Fifo); brakers[num].Fifo = right(brakers[num].Fifo,l-1); - d("Бракиратор #"+str(num)+": Получено текущее значение = ["+c+"]"); + d("Бракиратор #"+str(num+1)+": Получено текущее значение = ["+c+"]"); return c; } diff --git a/braker.th b/braker.th index aa4842c..2da17e9 100644 --- a/braker.th +++ b/braker.th @@ -8,5 +8,6 @@ void braker_init(unsigned char number, unsigned char sensor, unsigned char drop, void braker_set(string cmd); void braker_proc(unsigned char number); string braker_get_current(unsigned char num); - +void braker_add_port(char port); +bool isBrakerPort(int port); #endif \ No newline at end of file diff --git a/command.tc b/command.tc index 458a8eb..1342e66 100644 --- a/command.tc +++ b/command.tc @@ -61,25 +61,6 @@ void on_sock_inband() // обработка поступивших команд }else { cmd_replay(cmd_system()); } - -/* -// d("{cmd}: "+cmd); -// d("{cmd}.params: "+params); - if (cmd == "setbraker"){ - cmd_replay(cmd_setbraker(params)); - }else if (cmd == "setencoder"){ - cmd_replay(cmd_setencoder(params)); - }else if (cmd == "enc_calibrate_start"){ - cmd_replay(cmd_enc_calibre(params)); - }else if (cmd == "enc_set_windows"){ - cmd_replay(cmd_enc_set_windows(params)); - }else if (cmd == "enc_calibrate_end"){ - cmd_replay(cmd_enc_calibre("0")); - }else { - d("{cmd}: Unknown command: "+cmdline); - cmd_replay("{cmd}: Unknown command - ["+cmdline+"]"); - }*/ - position = instr(1,cmdbuffer,chr(sock.endchar),1); } } @@ -257,7 +238,9 @@ string cmd_setencoder(){ config.EncoderCfg.workedPorts = ports; config_save(); encoder_init(); - return "Энкодер настроен: Порт: "+str(pars[0])+ ", Режим: "+str(pars[1])+ ", Интервал: "+str(pars[2])+ ", Рабочие порты: "+pars[par_num]; + string mess= "Энкодер настроен: Порт: "+str(pars[0])+ ", Режим: "+str(pars[1])+ ", Интервал: "+str(pars[2])+ ", Рабочие порты: "+pars[par_num]; + d(mess); + return mess; } string cmd_enc_calibre(){ int mode = val(pars[0]); @@ -327,14 +310,6 @@ string cmd_setbraker() brakers_init(); return "OK: Braker "+str(num)+" now OFF"; } -// string rrrr = right(params,len(params)-n+1); -// if (c.Enable){ -// c.Relay= vals[1]; -// c.SensPort= vals[2]; -// c.DropPort= vals[3]; -// c.Timeout= (strtof(right(params,len(params)-n+1))*1000); -// } -// //braker_init(unsigned char number, unsigned char sensor, unsigned char drop, unsigned char relay, unsigned long timeout); float timeout = (strtof(pars[par_num])*1000); braker_init(num,val(pars[2]),val(vals[3]),val(vals[1]),timeout); string message; @@ -349,7 +324,6 @@ string cmd_setbraker() void getParams(string params){ - //d("params: "+params); for (int i=0;i<10;i++){ pars[i]=""; } diff --git a/global.th b/global.th index 00d8b91..f2fb0c6 100644 --- a/global.th +++ b/global.th @@ -9,7 +9,7 @@ #message "link global not defined" #endif -#define VERSION "2.0b_1903051448" +#define VERSION "2.0b_1903291538" #define MAX_FIFO_SIZE 20 #define BRAKER_COUNT 3 @@ -129,3 +129,4 @@ extern BrakerProcess brakers[BRAKER_COUNT]; + diff --git a/main.tc b/main.tc index b1334e0..dc04c7c 100644 --- a/main.tc +++ b/main.tc @@ -137,7 +137,7 @@ if (!inEncCalibrate()){ } // sensors process for (int i=1; i <= SENSORS; i++){ - if (pinChange(i)){ + if (!isBrakerPort(i) && pinChange(i)){ //bool state = getPinStateS(i,!config.debug.EncoderStateMode); bool state = getPinStateS(i, !inEncCalibrate()); if (getEncEnabled(i,state)){ diff --git a/net.tc b/net.tc index fbf5ca7..aa83c28 100644 --- a/net.tc +++ b/net.tc @@ -146,21 +146,27 @@ void net_send_data(int sock_num,string data){ } void on_sock_data_arrival() { + t("sock_start"); switch (sock.num){ case 0: net_sensor_handle(sock.getdata(sock.rxlen)); break; case 1: + t("relay_start"); net_relay_handle(sock.getdata(sock.rxlen)); + t("relay_end"); break; case 2: net_diag_handle(sock.getdata(sock.rxlen)); break; case 3: + t("relay_start"); //net_config_handle(sock.getdata(sock.rxlen)); net_relay_handle(sock.getdata(sock.rxlen)); + t("relay_end"); break; default: sock.getdata(sock.rxlen); } + t("sock_end"); } \ No newline at end of file