Update vers stabile SIM x parametri simulati

This commit is contained in:
Samuele E. Locatelli
2019-11-11 18:13:25 +01:00
parent 2d6fb78eb9
commit f2d6a3eaca
3 changed files with 148 additions and 32 deletions
+128 -12
View File
@@ -809,8 +809,6 @@ namespace IOB_WIN
utils.callUrl(urlSetM2IOB);
}
}
/// <summary>
/// Chiede elenco dei task da eseguire
/// - formato Json
@@ -834,6 +832,24 @@ namespace IOB_WIN
return answ;
}
/// <summary>
/// Stringa raw dei parametri da scrivere...
/// </summary>
/// <returns></returns>
protected string getParamws2write()
{
string answ = "";
if (checkServerAlive)
{
string url2call = $"{urlGetParams2Write}";
if (verboseLog)
{
lgInfo("chiamata URL " + url2call);
}
answ = utils.callUrl(url2call);
}
return answ;
}
/// <summary>
/// Cancella dal server i task eseguiti
/// </summary>
/// <param name="taskName"></param>
@@ -1284,7 +1300,7 @@ namespace IOB_WIN
Dictionary<string, string> taskDone = new Dictionary<string, string>();
// recupero elenco delle cose da fare
string resp = getTask2exe();
if (resp != "")
if (!string.IsNullOrEmpty(resp))
{
try
{
@@ -1359,6 +1375,8 @@ namespace IOB_WIN
dataConf currMem = memMap.mMapWrite[item.Key];
string addr = currMem.memAddr;
taskVal = $"SET task: {item.Key} --> {item.Value} | mem: {currMem.memAddr} - {currMem.size} byte";
// salvo il nuovo valore nella memoria... così prox invio lo trasmetterà
memMap.mMapWrite[item.Key].value = item.Value;
}
else
{
@@ -1387,15 +1405,21 @@ namespace IOB_WIN
lgInfo($"Chiamata stopSetup: taskOk: {taskOk} | taskVal: {taskVal}");
break;
case taskType.setParameter:
// i parametri me li aspetto come stringa composta paramName|paramvalue
if (item.Value.Contains("|"))
// richiedo da URL i parametri WRITE da popolare
taskVal = processMemWriteRequests();
// se restituiscce "" faccio altra prova...
if (string.IsNullOrEmpty(taskVal))
{
string[] paramsJob = item.Value.Split('|');
taskVal = $"REQUEST SET PARAMETERS: {paramsJob[0]} --> {paramsJob[1]}";
}
else
{
taskVal = $"WRONG REQUEST FOR SET PARAMETERS: {item.Value} doesnt contain pipe for splitting key/value";
// i parametri me li aspetto come stringa composta paramName|paramvalue
if (item.Value.Contains("|"))
{
string[] paramsJob = item.Value.Split('|');
taskVal = $"REQUEST SET PARAMETERS: {paramsJob[0]} --> {paramsJob[1]}";
}
else
{
taskVal = $"WRONG REQUEST FOR SET PARAMETERS: {item.Value} doesnt contain pipe for splitting key/value";
}
}
break;
default:
@@ -1409,6 +1433,57 @@ namespace IOB_WIN
return taskDone;
}
/// <summary>
/// Processa le richieste di scrittura memoria
/// </summary>
/// <returns></returns>
public virtual string processMemWriteRequests()
{
string answ = "";
// li salvo nei parametri in memoria locale (ogni adapter DOVREBBE salvare POI sul VERO PLC)
List<objItem> writeList = new List<objItem>();
List<objItem> updatedPar = new List<objItem>();
// recupero elenco delle cose da fare
string resp = getParamws2write();
if (!string.IsNullOrEmpty(resp))
{
try
{
writeList = JsonConvert.DeserializeObject<List<objItem>>(resp);
// se ho da fare chiamo esecuzione..
if (writeList.Count > 0)
{
foreach (var item in writeList)
{
// scrivo in memoria
if (memMap.mMapWrite.ContainsKey(item.uid))
{
memMap.mMapWrite[item.uid].value = item.reqValue;
// accodo in stringa taskVal...
answ += $" | Parameter {item.uid} --> {item.reqValue}";
// sistemo valori
item.reqValue = "";
// salvo in lista da ritrasmettere
updatedPar.Add(item);
}
else
{
answ += $" | Error: parameter {item.uid} not found";
}
}
// invio su cloud parametri!
string rawData = JsonConvert.SerializeObject(updatedPar);
utils.callUrl($"{urlUpdateWriteParams}", rawData);
}
}
catch (Exception exc)
{
lgError($"Eccezione in processServerRequests:{Environment.NewLine}{exc}");
}
}
return answ;
}
/// <summary>
/// Metodo generico di reset contapezzi...
/// </summary>
@@ -2068,6 +2143,25 @@ namespace IOB_WIN
}
}
/// <summary>
/// URL per richiamo parametri da scrivere...
/// </summary>
public string urlGetParams2Write
{
get
{
string answ = "";
try
{
answ = string.Format(@"http://{0}{1}{2}/getObjItems2Write/{3}", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, cIobConf.codIOB);
}
catch (Exception exc)
{
lgError(exc, "Errore in composizione urlGetParams2Write");
}
return answ;
}
}
/// <summary>
/// URL per richiamo task da eseguire...
/// </summary>
public string urlGetTask2Exe
@@ -2194,7 +2288,29 @@ namespace IOB_WIN
try
{
string machineName = Environment.MachineName;
answ = string.Format(@"http://{0}{1}{2}/upsertObjItems/{3}", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, cIobConf.codIOB);
string apiCall = "setObjItems";
answ = string.Format(@"http://{0}{1}{2}/{3}/{4}", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, apiCall, cIobConf.codIOB);
}
catch (Exception exc)
{
lgError(exc, "Errore in composizione urlSaveMemConf");
}
return answ;
}
}
/// <summary>
/// URL per salvataggio in UPSERT dei PARAMETRI IOB scritti...
/// </summary>
public string urlUpdateWriteParams
{
get
{
string answ = "";
try
{
string machineName = Environment.MachineName;
string apiCall = "upsertObjItems";
answ = string.Format(@"http://{0}{1}{2}/{3}/{4}", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, apiCall, cIobConf.codIOB);
}
catch (Exception exc)
{
+19 -19
View File
@@ -523,7 +523,6 @@ namespace IOB_WIN
private void decodeOtherData()
{
}
/// <summary>
/// Recupero programma in lavorazione
/// </summary>
@@ -535,23 +534,23 @@ namespace IOB_WIN
return prgName;
}
/// <summary>
/// Recupero dati override (da area G che è già stata letta...)
/// Genera un valore random POSSIBILMENTE impiegando i valori min/max da conf memoria
/// </summary>
/// <param name="memName"></param>
/// <returns></returns>
public override Dictionary<string, string> getOverrides()
protected string getSimVal(string memName)
{
Dictionary<string, string> outVal = new Dictionary<string, string>();
// processo SOLO SE connected...
if (connectionOk)
Random rnd = new Random();
int answ = 0;
int minVal = 0;
int maxVal = 100;
if (memMap.mMapRead.ContainsKey(memName))
{
Random rnd = new Random();
int feedOvr = rnd.Next(1, 100);
int rapdOvr = rnd.Next(1, 120);
outVal.Add("FEED_OVER", feedOvr.ToString());
outVal.Add("RAPID_OVER", rapdOvr.ToString());
minVal = memMap.mMapRead[memName].minVal;
maxVal = memMap.mMapRead[memName].maxVal;
}
return outVal;
answ = rnd.Next(minVal, maxVal);
return answ.ToString();
}
/// <summary>
/// Recupero info sistema generiche
@@ -571,15 +570,16 @@ namespace IOB_WIN
// valore non presente in vers default... se gestito fare override
Dictionary<string, string> outVal = new Dictionary<string, string>();
Random rnd = new Random();
int posX = rnd.Next(1, 1000);
int posY = rnd.Next(1, 1000);
int posZ = rnd.Next(1, 1000);
outVal.Add("POS_X", posX.ToString());
outVal.Add("POS_Y", posY.ToString());
outVal.Add("POS_Z", posZ.ToString());
// controllo conf memorie json (se ci sono...)
try
{
if (memMap.mMapWrite.Count > 0)
{
foreach (var item in memMap.mMapWrite)
{
outVal.Add(item.Key, item.Value.value);
}
}
if (memMap.mMapRead.Count > 0)
{
foreach (var item in memMap.mMapRead)
Vendored
+1 -1
View File
@@ -16,7 +16,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=508']) {
withEnv(['NEXT_BUILD_NUMBER=509']) {
// env.versionNumber = VersionNumber(versionNumberString : '2.4.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '2.4.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'