WIP Osai write file

This commit is contained in:
Lucio Maranta
2018-07-11 15:46:33 +00:00
parent 6b87ac8be7
commit 9bc6b1cfb5
8 changed files with 326 additions and 68 deletions
+15
View File
@@ -2473,6 +2473,21 @@ namespace CMS_CORE.Demo
return NO_ERROR;
}
public override CmsError TOOLS_WStartEdit()
{
return NO_ERROR;
}
public override CmsError TOOLS_WStopEdit()
{
return NO_ERROR;
}
public override CmsError TOOLS_WAddTool()
{
return NO_ERROR;
}
#endregion Nc Tool Manager
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+14
View File
@@ -1807,6 +1807,20 @@ namespace CMS_CORE.Fanuc
return NO_ERROR;
}
public override CmsError TOOLS_WStartEdit()
{
return NO_ERROR;
}
public override CmsError TOOLS_WStopEdit()
{
return NO_ERROR;
}
public override CmsError TOOLS_WAddTool()
{
return NO_ERROR;
}
#endregion Nc Tool Manager
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+7 -1
View File
@@ -1516,11 +1516,17 @@ namespace CMS_CORE
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#region Nc Tool Manager
public abstract CmsError TOOLS_ROffset(short offsetId, ref OffsetModel offset);
public abstract CmsError TOOLS_WOffset(short offsetId, OffsetModel offset);
public abstract CmsError TOOLS_WStartEdit();
public abstract CmsError TOOLS_WStopEdit();
public abstract CmsError TOOLS_WAddTool();
#endregion Nc Tool Manager
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+149 -8
View File
@@ -22,21 +22,28 @@ namespace CMS_CORE.Osai
{
public class Nc_Osai : Nc
{
private const String ConfigFile = @"Config\OSAI_WIN.INI";
private const string ConfigFile = @"Config\OSAI_WIN.INI";
private const short MAX_PROC = 64;
private String Url;
private string Url;
private OPENcontrolPortTypeClient OpenNC;
private ushort CNCPhase;
private String Cnc_SftVersion;
private String Cnc_SeriesNum;
private String Cnc_name;
private string Cnc_SftVersion;
private string Cnc_SeriesNum;
private string Cnc_name;
private DateTime Last_Static_Read;
private String OsaiLanguages;
private string OsaiLanguages;
private ushort timeOutConn;
private EndpointAddress endPointAddress;
private BasicHttpBinding HttpBinding;
private static Dictionary<int, string> PlcMessages;
private const string TOOL_MANAGER_DIRECTORY_PATH = @"test\\OEM\\CMS\\SYS\\STEP\\";
private const string FAMILIES_FILE_NAME = @"Families";
private const string FAM_SIZE_FILE_NAME = @"Fam_Sizes";
private const string MAG_POSITION_FILE_NAME = @"Mag_Positions";
private const string SHANKS_FILE_NAME = @"Shanks";
private const string TOOLS_FILE_NAME = @"Tools";
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#region Contructor & global methods
@@ -1911,6 +1918,10 @@ namespace CMS_CORE.Osai
{
// Get part program file size
nReturn = OpenNC.LogFSGetFileSize(partProgramPath, out size, out errorClass, out errorNum);
//If there's an error launch exception
if (errorClass != 0 || errorNum != 0 || nReturn == 0)
return GetNCError(errorClass, errorNum);
// Read part program content
nReturn = OpenNC.GetFile(partProgramPath, ref size, out partProgramContent, out errorClass, out errorNum);
@@ -2217,9 +2228,8 @@ namespace CMS_CORE.Osai
return NO_ERROR;
}
public override CmsError TOOLS_WOffset(short offsetId, OffsetModel offset)
{
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
@@ -2252,6 +2262,137 @@ namespace CMS_CORE.Osai
return NO_ERROR;
}
public override CmsError TOOLS_WStartEdit()
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
try
{
string filePath = TOOL_MANAGER_DIRECTORY_PATH + "{0}.csv";
string backupFilePath = TOOL_MANAGER_DIRECTORY_PATH + "{0}_bak.csv";
Stopwatch sw = new Stopwatch();
sw.Start();
// Create tool manager file backup
cmsError = FILES_CopyProgram(string.Format(filePath, FAMILIES_FILE_NAME), string.Format(backupFilePath, FAMILIES_FILE_NAME), false);
if (cmsError.IsError())
return cmsError;
cmsError = FILES_CopyProgram(string.Format(filePath, FAM_SIZE_FILE_NAME), string.Format(backupFilePath, FAM_SIZE_FILE_NAME), false);
if (cmsError.IsError())
return cmsError;
cmsError = FILES_CopyProgram(string.Format(filePath, MAG_POSITION_FILE_NAME), string.Format(backupFilePath, MAG_POSITION_FILE_NAME), false);
if (cmsError.IsError())
return cmsError;
cmsError = FILES_CopyProgram(string.Format(filePath, SHANKS_FILE_NAME), string.Format(backupFilePath, SHANKS_FILE_NAME), false);
if (cmsError.IsError())
return cmsError;
cmsError = FILES_CopyProgram(string.Format(filePath, TOOLS_FILE_NAME), string.Format(backupFilePath, TOOLS_FILE_NAME), false);
if (cmsError.IsError())
return cmsError;
Console.WriteLine(sw.ElapsedMilliseconds);
}
catch (Exception ex)
{
return ManageException(ex);
}
return NO_ERROR;
} // WIP, NEED Memory control word
public override CmsError TOOLS_WStopEdit()
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
try
{
return NO_ERROR;
}
catch (Exception ex)
{
return ManageException(ex);
}
} // TODO
public override CmsError TOOLS_WAddTool()
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
List<OffsetModel> siemens = new List<OffsetModel>() {new OffsetModel(){Id = 22, Length = 33, Radius = 44, WearLength = 11, WearRadius =5432 } };
// Generate tool data csv string
string csvToolData = GenerateModelCsv(siemens);
string filePath = TOOL_MANAGER_DIRECTORY_PATH + TOOLS_FILE_NAME + ".csv";
try
{
Stopwatch sw = new Stopwatch();
sw.Start();
using (FileStream fileStream = new FileStream("C:\\test.csv", FileMode.OpenOrCreate))
{
// Read tool file
cmsError = FILES_RProgramToFile(filePath, fileStream);
if (cmsError.IsError())
return cmsError;
}
using (FileStream fileStream = new FileStream("C:\\test.csv", FileMode.OpenOrCreate))
{
using (StreamWriter writer = new StreamWriter(fileStream))
{
// Write local file
writer.WriteLine(csvToolData);
// Write NcFile
cmsError = FILES_WProgramFromFile(filePath, fileStream);
if (cmsError.IsError())
return cmsError;
}
}
Console.WriteLine("Scrivere tool: " + sw.ElapsedMilliseconds);
}
catch (Exception ex)
{
return ManageException(ex);
}
return NO_ERROR;
}
public string GenerateModelCsv<T>(List<T> items) where T : class
{
var output = "";
var delimiter = ';';
var properties = typeof(T).GetProperties();
using (var sw = new StringWriter())
{
foreach (var item in items)
{
var row = properties
.Select(n => n.GetValue(item, null))
.Select(n => n?.ToString())
.Aggregate((a, b) => a + delimiter + b);
sw.Write(row);
}
output = sw.ToString();
}
return output;
}
#endregion Nc Tool Manager
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+16 -1
View File
@@ -1833,7 +1833,7 @@ namespace CMS_CORE.Siemens
FileData.Copy(sourceNode, destNode, true);
//Write to local file
Nc_Utils.WriteLocalFile(Nc_Utils.ReadLocalFile(new FileStream(TempFile, FileMode.Open)), ref localFile);
WriteLocalFile(ReadLocalFile(new FileStream(TempFile, FileMode.Open)), ref localFile);
//Delete temporary file
File.Delete(TempFile);
@@ -2884,6 +2884,21 @@ namespace CMS_CORE.Siemens
return FUNCTION_NOT_ALLOWED_ERROR;
}
public override CmsError TOOLS_WStartEdit()
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
public override CmsError TOOLS_WStopEdit()
{
return NO_ERROR;
}
public override CmsError TOOLS_WAddTool()
{
return NO_ERROR;
}
#endregion Nc Tool Manager
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+3 -8
View File
@@ -139,10 +139,8 @@ namespace CMS_CORE.Utils
public static void WriteLocalFile(string fileContent, ref FileStream fileReference)
{
// Write Part Program
StreamWriter writer = new StreamWriter(fileReference);
writer.Write(fileContent);
// Close file Writer
writer.Close();
using (StreamWriter writer = new StreamWriter(fileReference))
writer.Write(fileContent);
}
public static string ReadLocalFile(FileStream fileReference)
@@ -152,8 +150,6 @@ namespace CMS_CORE.Utils
string fileContent = reader.ReadToEnd();
reader.Close();
return fileContent;
}
@@ -173,8 +169,7 @@ namespace CMS_CORE.Utils
return String.Empty;
}
public static IEnumerable<TSource> DistinctBy<TSource, TKey>
(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)