WIP Osai write file
This commit is contained in:
@@ -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
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user