From 2252d260da36fcae1212daee325cb0e79e4d070d Mon Sep 17 00:00:00 2001 From: Nicola Carminati Date: Tue, 4 Sep 2018 10:38:24 +0000 Subject: [PATCH] Added change-language function --- CMS_CORE_Application/Form1.cs | 1 + CMS_CORE_Library/Demo/Nc_Demo.cs | 5 ++ CMS_CORE_Library/Fanuc/Nc_Fanuc.cs | 46 +++++++++++++++++++ CMS_CORE_Library/Nc.cs | 13 ++++++ CMS_CORE_Library/Osai/Nc_Osai.cs | 6 +++ CMS_CORE_Library/Siemens/Nc_Siemens.cs | 27 +++++++++++ .../Nc_Demo_Application/Constants.cs | 3 ++ 7 files changed, 101 insertions(+) diff --git a/CMS_CORE_Application/Form1.cs b/CMS_CORE_Application/Form1.cs index 9c5f454..9d3cf32 100644 --- a/CMS_CORE_Application/Form1.cs +++ b/CMS_CORE_Application/Form1.cs @@ -77,6 +77,7 @@ namespace CMS_CORE_Application CmsError cmsError = N.NC_Connect(); cmsError = N.NC_RModelName(ref ModelName); + cmsError = N.NC_WLanguage(new System.Globalization.CultureInfo("it")); bool error = false; string serial = ""; diff --git a/CMS_CORE_Library/Demo/Nc_Demo.cs b/CMS_CORE_Library/Demo/Nc_Demo.cs index cf87286..768273d 100644 --- a/CMS_CORE_Library/Demo/Nc_Demo.cs +++ b/CMS_CORE_Library/Demo/Nc_Demo.cs @@ -253,6 +253,11 @@ namespace CMS_CORE.Demo return NO_ERROR; } + public override CmsError NC_WLanguage(CultureInfo Language) + { + return NO_ERROR; + } + public override CmsError NC_RActiveAlarms(ref List alarms) { // Check if the NC Demo is Connected diff --git a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs index b57ce92..8d3c59d 100644 --- a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs +++ b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs @@ -137,6 +137,21 @@ namespace CMS_CORE.Fanuc return NO_ERROR; } + //Set the NC Language + public override CmsError NC_WLanguage(CultureInfo Language) + { + // set but 7 to TRUE + byte langToWrite = (byte)(ConvertToNCLanguage(Language) | 128); + + // write the byte + CmsError cmsError = MEM_RWByte(W,0, PARAM_LING_FANUC_W.MemType, PARAM_LING_FANUC_W.Address, 0, ref langToWrite); + + if (cmsError.IsError()) + return cmsError; + + return NO_ERROR; + } + //Get the NC Serial Number public override CmsError NC_RSerialNumber(ref string SN) { @@ -1974,6 +1989,37 @@ namespace CMS_CORE.Fanuc } } + //Convert to NC Language + private byte ConvertToNCLanguage(CultureInfo language) + { + switch (language.Name) + { + case "en": return 0; + case "ja": return 1; + case "de": return 2; + case "fr": return 3; + case "zh-CHT": return 4; + case "it": return 5; + case "ko": return 6; + case "es": return 7; + case "nl": return 8; + case "da": return 9; + case "pt": return 10; + case "pl": return 11; + case "hu": return 12; + case "sv": return 13; + case "cs": return 14; + case "zh-CHS": return 15; + case "ru": return 16; + case "tr": return 17; + case "bg": return 18; + case "ro": return 19; + case "sk": return 20; + case "fi": return 21; + default: return 0; + } + } + //Manage the Status Process private PROC_STATUS ConverToSTEPStatus(Focas1.ODBST status) { diff --git a/CMS_CORE_Library/Nc.cs b/CMS_CORE_Library/Nc.cs index bf7b3d4..641d5e4 100644 --- a/CMS_CORE_Library/Nc.cs +++ b/CMS_CORE_Library/Nc.cs @@ -320,6 +320,18 @@ namespace CMS_CORE * */ public abstract CmsError NC_RLanguage(ref CultureInfo Language); + /** + * + * Write the configured language of the NC + * + * Compatibility: Fanuc | Osai | Demo | Siemens + * + * + * Returns an error when an internal or a library error occours + * CultureInfo Variable with the new Language + * */ + + public abstract CmsError NC_WLanguage(CultureInfo Language); /** * @@ -1831,6 +1843,7 @@ namespace CMS_CORE // TODO REMOVE //Lingua CN internal MEMORY_CELL PARAM_LING_FANUC = new MEMORY_CELL(MEMORY_TYPE.Null, 3281, 0, 1); + internal MEMORY_CELL PARAM_LING_FANUC_W = new MEMORY_CELL(MEMORY_TYPE.Fanuc_G, 581, 0, 1); //Matricola Macchina internal MEMORY_CELL MATR_MACCH_FANUC = new MEMORY_CELL(MEMORY_TYPE.Fanuc_D, 4018, 0, 1); diff --git a/CMS_CORE_Library/Osai/Nc_Osai.cs b/CMS_CORE_Library/Osai/Nc_Osai.cs index 7e4ccdd..d681889 100644 --- a/CMS_CORE_Library/Osai/Nc_Osai.cs +++ b/CMS_CORE_Library/Osai/Nc_Osai.cs @@ -182,6 +182,12 @@ namespace CMS_CORE.Osai return NO_ERROR; } + //Set the NC Language + public override CmsError NC_WLanguage(CultureInfo Language) + { + return NO_ERROR; + } + //Get the NC Serial Number public override CmsError NC_RSerialNumber(ref string SN) { diff --git a/CMS_CORE_Library/Siemens/Nc_Siemens.cs b/CMS_CORE_Library/Siemens/Nc_Siemens.cs index 4900cda..3013029 100644 --- a/CMS_CORE_Library/Siemens/Nc_Siemens.cs +++ b/CMS_CORE_Library/Siemens/Nc_Siemens.cs @@ -155,6 +155,7 @@ namespace CMS_CORE.Siemens SiemensAlarms = new Alarm[] { }; SiemensAlmSvc = new AlarmSvc(ConvertToSTEPLanguage(SiemensLanguage).ThreeLetterISOLanguageName); SiemensAlmSvc.Subscribe(AlarmsChanged); + Infrastructure.SubscribeLanguageChanged(NcLanguageChanged); if (SiemensToolSvc == null) { @@ -401,6 +402,16 @@ namespace CMS_CORE.Siemens return NO_ERROR; } + + //Set the NC Language + public override CmsError NC_WLanguage(CultureInfo Language) + { + // write write the language + Infrastructure.CurrentLanguage = ConvertToNCLanguage(Language); + + return NO_ERROR; + } + //Get the NC Serial number public override CmsError NC_RSerialNumber(ref string SN) { @@ -3225,6 +3236,14 @@ namespace CMS_CORE.Siemens SiemensAlarms = alarms; } + private void NcLanguageChanged(string language) + { + SiemensAlmSvc.UnSubscribe(AlarmsChanged); + SiemensAlmSvc.Dispose(); + SiemensAlmSvc = new AlarmSvc(language); + SiemensAlmSvc.Subscribe(AlarmsChanged); + } + private bool GetBitValue(int b, int bitNumber) { return (b & (1 << bitNumber - 1)) != 0; @@ -3470,6 +3489,14 @@ namespace CMS_CORE.Siemens } } + //Convert to Step Language + private String ConvertToNCLanguage(CultureInfo language) + { + return language.ThreeLetterISOLanguageName; + } + + + private int SwapIntEndianFormat(int value) { var b1 = (value >> 0) & 0xff; diff --git a/CMS_CORE_Nc_Demo_Application/Nc_Demo_Application/Constants.cs b/CMS_CORE_Nc_Demo_Application/Nc_Demo_Application/Constants.cs index f54cfba..028dc91 100644 --- a/CMS_CORE_Nc_Demo_Application/Nc_Demo_Application/Constants.cs +++ b/CMS_CORE_Nc_Demo_Application/Nc_Demo_Application/Constants.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Globalization; namespace Nc_Demo_Application { @@ -74,6 +76,7 @@ namespace Nc_Demo_Application TRANSFER = 4, GENERIC = 5 } + // File public const string FILE_FOLDER = "C:/CMS/STEP/DEMO/part_program/";