WIP FANUC CHANGE LANGUAGE

This commit is contained in:
Lucio Maranta
2019-07-16 15:50:42 +00:00
parent 4a8665b816
commit 3e1bccb950
6 changed files with 132 additions and 39 deletions
+13 -2
View File
@@ -7,6 +7,7 @@ using CMS_CORE_Library.Siemens;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
@@ -132,8 +133,18 @@ namespace CMS_CORE_Application
List<AxisModel> ax = new List<AxisModel>();
cmsError = N.AXES_RAxesNames(1, ref ax);
ICollection<CultureInfo> info = new List<CultureInfo>();
cmsError = N.NC_GetAvailableLanguages(ref info);
cmsError = N.NC_WLanguage(new CultureInfo("it"));
if (cmsError.IsError()) { error = true; SetError(Lines, cmsError); }
cmsError = N.NC_WLanguage(new CultureInfo("en"));
if (cmsError.IsError()) { error = true; SetError(Lines, cmsError); }
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine(sw.ElapsedMilliseconds);
////////////////////////////////////////////////////////////// END TEST
if (!this.IsDisposed && this.InvokeRequired)
@@ -202,7 +213,7 @@ namespace CMS_CORE_Application
if (NCType == "Osai")
return new Nc_Osai(NCIp, NCPort, 500);
if (NCType == "Fanuc")
return new Nc_Fanuc(NCIp, NCPort, 500);
return new Nc_Fanuc(NCIp, NCPort, 2000);
return null;
}
+5
View File
@@ -102,6 +102,11 @@ namespace CMS_CORE_Library.Demo
}
}
public override CmsError NC_GetAvailableLanguages(ref ICollection<CultureInfo> languages)
{
return NO_ERROR;
}
#endregion Contructor & global methods
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+87 -35
View File
@@ -205,6 +205,31 @@ namespace CMS_CORE_Library.Fanuc
}
}
public override CmsError NC_GetAvailableLanguages(ref ICollection<CultureInfo> languages)
{
try
{
foreach(string file in Directory.GetFiles(PLC_MESSAGE_PATH))
{
string fileName = Path.GetFileNameWithoutExtension(file);
var lang = CultureInfo
.GetCultures(CultureTypes.NeutralCultures)
.Where(ci => string.Equals(ci.ThreeLetterISOLanguageName, fileName.Split('_')[1], StringComparison.OrdinalIgnoreCase))
.FirstOrDefault();
if(lang != null)
languages.Add(lang);
}
}
catch (Exception ex)
{
return ManageException(ex);
}
return NO_ERROR;
}
#endregion Contructor & global methods
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -227,7 +252,7 @@ namespace CMS_CORE_Library.Fanuc
// Set the NC Language
public override CmsError NC_WLanguage(CultureInfo Language)
{
// set but 7 to TRUE
// set bit 7 to TRUE
byte langToWrite = (byte)(ConvertToNCLanguage(Language, out bool isSpecial) | 128);
// write the byte
@@ -235,12 +260,30 @@ namespace CMS_CORE_Library.Fanuc
if (cmsError.IsError())
return cmsError;
// Set reset bit
bool b = false;
int n = 50;
do
{
// Wait before read
Thread.Sleep(100);
cmsError = MEM_RWBoolean(R, 0, MEMORY_TYPE.Fanuc_F, 545, 0, ref b);
// Decrement
n--;
} while (!b && n > 0);
b = false;
cmsError = MEM_RWBoolean(W, 0, PARAM_LING_FANUC_W.MemType, PARAM_LING_FANUC_W.Address, 7, ref b);
if (cmsError.IsError())
return cmsError;
// Write if the selected language is special
cmsError = MEM_RWBoolean(W, 0, SPECIAL_LANGUAGE_BIT.MemType, SPECIAL_LANGUAGE_BIT.Address, SPECIAL_LANGUAGE_BIT.SubAddress, ref isSpecial);
if (cmsError.IsError())
return cmsError;
return NO_ERROR;
}
// Get the NC Serial Number
@@ -266,6 +309,7 @@ namespace CMS_CORE_Library.Fanuc
SWV = Cnc_SftVersion;
return NO_ERROR;
}
@@ -1816,7 +1860,7 @@ namespace CMS_CORE_Library.Fanuc
if (nReturn != 0)
return GetNcError(nReturn);
//If an axis goes out from Process Clear the List
// If an axis goes out from Process Clear the List
if (Axes.Count > NumAxes)
Axes.Clear();
@@ -2063,71 +2107,79 @@ namespace CMS_CORE_Library.Fanuc
short nReturn = Focas1.cnc_exaxisname(nLibHandle[process - 1], 0, ref numAxesRead, sOdbExAxisName);
if (nReturn != 0)
return GetNcError(nReturn);
short[] types = new short[]{ 0, 1, 2, 3 };
ODBAXDT axisData = new ODBAXDT();
nReturn = Focas1.cnc_rdaxisdata(nLibHandle[process - 1], 1, types, 4, ref numAxesRead, axisData);
if (nReturn != 0)
return GetNcError(nReturn);
// Parse data
if (numAxesRead >= 1)
axesData.Add(new AxisModel() { Id = 1, Name = sOdbExAxisName.axname1, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 1, Name = sOdbExAxisName.axname1, IsSelectable = false, Type = axisData.data1.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 2)
axesData.Add(new AxisModel() { Id = 2, Name = sOdbExAxisName.axname2, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 2, Name = sOdbExAxisName.axname2, IsSelectable = false, Type = axisData.data2.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 3)
axesData.Add(new AxisModel() { Id = 3, Name = sOdbExAxisName.axname3, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 3, Name = sOdbExAxisName.axname3, IsSelectable = false, Type = axisData.data3.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 4)
axesData.Add(new AxisModel() { Id = 4, Name = sOdbExAxisName.axname4, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 4, Name = sOdbExAxisName.axname4, IsSelectable = false, Type = axisData.data4.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 5)
axesData.Add(new AxisModel() { Id = 5, Name = sOdbExAxisName.axname5, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 5, Name = sOdbExAxisName.axname5, IsSelectable = false, Type = axisData.data5.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 6)
axesData.Add(new AxisModel() { Id = 6, Name = sOdbExAxisName.axname6, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 6, Name = sOdbExAxisName.axname6, IsSelectable = false, Type = axisData.data6.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 7)
axesData.Add(new AxisModel() { Id = 7, Name = sOdbExAxisName.axname7, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 7, Name = sOdbExAxisName.axname7, IsSelectable = false, Type = axisData.data7.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 8)
axesData.Add(new AxisModel() { Id = 8, Name = sOdbExAxisName.axname8, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 8, Name = sOdbExAxisName.axname8, IsSelectable = false, Type = axisData.data8.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 9)
axesData.Add(new AxisModel() { Id = 9, Name = sOdbExAxisName.axname9, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 9, Name = sOdbExAxisName.axname9, IsSelectable = false, Type = axisData.data9.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 10)
axesData.Add(new AxisModel() { Id = 10, Name = sOdbExAxisName.axname10, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 10, Name = sOdbExAxisName.axname10, IsSelectable = false, Type = axisData.data10.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 11)
axesData.Add(new AxisModel() { Id = 11, Name = sOdbExAxisName.axname11, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 11, Name = sOdbExAxisName.axname11, IsSelectable = false, Type = axisData.data11.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 12)
axesData.Add(new AxisModel() { Id = 12, Name = sOdbExAxisName.axname12, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 12, Name = sOdbExAxisName.axname12, IsSelectable = false, Type = axisData.data12.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 13)
axesData.Add(new AxisModel() { Id = 13, Name = sOdbExAxisName.axname13, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 13, Name = sOdbExAxisName.axname13, IsSelectable = false, Type = axisData.data13.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 14)
axesData.Add(new AxisModel() { Id = 14, Name = sOdbExAxisName.axname14, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 14, Name = sOdbExAxisName.axname14, IsSelectable = false, Type = axisData.data14.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 15)
axesData.Add(new AxisModel() { Id = 15, Name = sOdbExAxisName.axname15, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 15, Name = sOdbExAxisName.axname15, IsSelectable = false, Type = axisData.data15.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 16)
axesData.Add(new AxisModel() { Id = 16, Name = sOdbExAxisName.axname16, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 16, Name = sOdbExAxisName.axname16, IsSelectable = false, Type = axisData.data16.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 17)
axesData.Add(new AxisModel() { Id = 17, Name = sOdbExAxisName.axname17, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 17, Name = sOdbExAxisName.axname17, IsSelectable = false, Type = axisData.data17.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 18)
axesData.Add(new AxisModel() { Id = 18, Name = sOdbExAxisName.axname18, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 18, Name = sOdbExAxisName.axname18, IsSelectable = false, Type = axisData.data18.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 19)
axesData.Add(new AxisModel() { Id = 19, Name = sOdbExAxisName.axname19, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 19, Name = sOdbExAxisName.axname19, IsSelectable = false, Type = axisData.data19.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 20)
axesData.Add(new AxisModel() { Id = 20, Name = sOdbExAxisName.axname20, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 20, Name = sOdbExAxisName.axname20, IsSelectable = false, Type = axisData.data20.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 21)
axesData.Add(new AxisModel() { Id = 21, Name = sOdbExAxisName.axname21, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 21, Name = sOdbExAxisName.axname21, IsSelectable = false, Type = axisData.data21.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 22)
axesData.Add(new AxisModel() { Id = 22, Name = sOdbExAxisName.axname22, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 22, Name = sOdbExAxisName.axname22, IsSelectable = false, Type = axisData.data22.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 23)
axesData.Add(new AxisModel() { Id = 23, Name = sOdbExAxisName.axname23, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 23, Name = sOdbExAxisName.axname23, IsSelectable = false, Type = axisData.data23.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 24)
axesData.Add(new AxisModel() { Id = 24, Name = sOdbExAxisName.axname24, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 24, Name = sOdbExAxisName.axname24, IsSelectable = false, Type = axisData.data24.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 25)
axesData.Add(new AxisModel() { Id = 25, Name = sOdbExAxisName.axname25, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 25, Name = sOdbExAxisName.axname25, IsSelectable = false, Type = axisData.data25.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 26)
axesData.Add(new AxisModel() { Id = 26, Name = sOdbExAxisName.axname26, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 26, Name = sOdbExAxisName.axname26, IsSelectable = false, Type = axisData.data26.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 27)
axesData.Add(new AxisModel() { Id = 27, Name = sOdbExAxisName.axname27, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 27, Name = sOdbExAxisName.axname27, IsSelectable = false, Type = axisData.data27.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 28)
axesData.Add(new AxisModel() { Id = 28, Name = sOdbExAxisName.axname28, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 28, Name = sOdbExAxisName.axname28, IsSelectable = false, Type = axisData.data28.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 29)
axesData.Add(new AxisModel() { Id = 29, Name = sOdbExAxisName.axname29, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 29, Name = sOdbExAxisName.axname29, IsSelectable = false, Type = axisData.data29.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 30)
axesData.Add(new AxisModel() { Id = 30, Name = sOdbExAxisName.axname30, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 30, Name = sOdbExAxisName.axname30, IsSelectable = false, Type = axisData.data30.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 31)
axesData.Add(new AxisModel() { Id = 31, Name = sOdbExAxisName.axname31, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 31, Name = sOdbExAxisName.axname31, IsSelectable = false, Type = axisData.data31.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
if (numAxesRead >= 32)
axesData.Add(new AxisModel() { Id = 32, Name = sOdbExAxisName.axname32, IsSelectable = false });
axesData.Add(new AxisModel() { Id = 32, Name = sOdbExAxisName.axname32, IsSelectable = false, Type = axisData.data32.unit == 2 ? AXIS_TYPE.ROTATING : AXIS_TYPE.LINEAR });
axesData = axesData.Where(x => x.Name != "\f").ToList();
+2
View File
@@ -271,6 +271,8 @@ namespace CMS_CORE_Library
public abstract CmsError NC_GetTranslatedPlcMessages(string language, ref Dictionary<int, string> messages);
public abstract CmsError NC_GetAvailableLanguages(ref ICollection<CultureInfo> languages);
/**
* <summary>
* Set the screen page visible of the NC
+5
View File
@@ -195,6 +195,11 @@ namespace CMS_CORE_Library.Osai
}
}
public override CmsError NC_GetAvailableLanguages(ref ICollection<CultureInfo> languages)
{
return NO_ERROR;
}
#endregion Contructor & global methods
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+20 -2
View File
@@ -72,9 +72,8 @@ namespace CMS_CORE_Library.Siemens
private static uint SiemensLanguage;
private static string UnitOfMeasure;
// Alarms Handler
// Alarms data
private AlarmSvc SiemensAlmSvc = null;
private Alarm[] SiemensAlarms;
// Tool table listeners
@@ -441,6 +440,25 @@ namespace CMS_CORE_Library.Siemens
}
}
public override CmsError NC_GetAvailableLanguages(ref ICollection<CultureInfo> languages)
{
try
{
foreach (string file in Directory.GetFiles(PLC_MESSAGES_FILE_PATH))
{
string fileName = Path.GetFileNameWithoutExtension(file);
languages.Add(CultureInfo.CreateSpecificCulture(fileName.Split('_')[1]));
}
}
catch (Exception ex)
{
return ManageException(ex);
}
return NO_ERROR;
}
#endregion Contructor & global methods
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////