Merge branch 'Feature/Giacovelli' into develop
This commit is contained in:
@@ -43,11 +43,20 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="INI\BatchDetails.cs" />
|
||||||
|
<Compile Include="INI\IniFileCs.cs" />
|
||||||
|
<Compile Include="INI\Settaggi.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
|
<None Include="batch.ini">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="conf.ini">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\EgwProxy.Icoel\EgwProxy.Icoel.csproj">
|
<ProjectReference Include="..\EgwProxy.Icoel\EgwProxy.Icoel.csproj">
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace EgwProxy.Icoel.INI
|
||||||
|
{
|
||||||
|
class BatchDetails
|
||||||
|
{
|
||||||
|
private const string NameFile = "batch.ini";
|
||||||
|
private readonly IniFile _sett;
|
||||||
|
|
||||||
|
|
||||||
|
public BatchDetails()
|
||||||
|
{
|
||||||
|
_sett = new IniFile();
|
||||||
|
}
|
||||||
|
public string GrowerCode
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Batch", "GrowerCode"); }
|
||||||
|
set { _sett.SetKeyValue("Batch", "GrowerCode", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GrowerName
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Batch", "GrowerName"); }
|
||||||
|
set { _sett.SetKeyValue("Batch", "GrowerName", value); }
|
||||||
|
}
|
||||||
|
public string Comment1
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Batch", "Comment1"); }
|
||||||
|
set { _sett.SetKeyValue("Batch", "Comment1", value); }
|
||||||
|
}
|
||||||
|
public string Comment2
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Batch", "Comment2"); }
|
||||||
|
set { _sett.SetKeyValue("Batch", "Comment2", value); }
|
||||||
|
}
|
||||||
|
public string Comment3
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Batch", "Comment3"); }
|
||||||
|
set { _sett.SetKeyValue("Batch", "Comment3", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Load()
|
||||||
|
{
|
||||||
|
if (!File.Exists(NameFile))
|
||||||
|
{
|
||||||
|
var fs = File.Create(NameFile);
|
||||||
|
fs.Close();
|
||||||
|
}
|
||||||
|
_sett.Load(NameFile, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
_sett.Save(NameFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,479 @@
|
|||||||
|
/*
|
||||||
|
Date: 08\23\2010 - Ludvik Jerabek - Initial Release
|
||||||
|
Version: 1.0
|
||||||
|
Comment: Allow INI manipulation in .NET
|
||||||
|
License: CPOL
|
||||||
|
|
||||||
|
Revisions:
|
||||||
|
|
||||||
|
08\23\2010 - Ludvik Jerabek - Initial Release
|
||||||
|
11\12\2010 - Ludvik Jerabek - Fixed section regex matching on key values with brackets
|
||||||
|
06\20\2015 - Ludvik Jerabek - Fixed key parsing regex to account for keys with spaces in names
|
||||||
|
|
||||||
|
|
||||||
|
**DISCLAIMER**
|
||||||
|
THIS MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EITHER EXPRESS OR IMPLIED, INCLUDING, BUT Not LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, OR NON-INFRINGEMENT. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||||
|
EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT
|
||||||
|
APPLY TO YOU. IN NO EVENT WILL I BE LIABLE TO ANY PARTY FOR ANY
|
||||||
|
DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES FOR ANY
|
||||||
|
USE OF THIS MATERIAL INCLUDING, WITHOUT LIMITATION, ANY LOST
|
||||||
|
PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR OTHER DATA ON
|
||||||
|
YOUR INFORMATION HANDLING SYSTEM OR OTHERWISE, EVEN If WE ARE
|
||||||
|
EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
// IniFile class used to read and write ini files by loading the file into memory
|
||||||
|
public class IniFile
|
||||||
|
{
|
||||||
|
// List of IniSection objects keeps track of all the sections in the INI file
|
||||||
|
private Hashtable m_sections;
|
||||||
|
|
||||||
|
// Public constructor
|
||||||
|
public IniFile()
|
||||||
|
{
|
||||||
|
m_sections = new Hashtable(StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loads the Reads the data in the ini file into the IniFile object
|
||||||
|
public void Load(string sFileName )
|
||||||
|
{
|
||||||
|
Load(sFileName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loads the Reads the data in the ini file into the IniFile object
|
||||||
|
public void Load(string sFileName, bool bMerge )
|
||||||
|
{
|
||||||
|
if (!bMerge)
|
||||||
|
{
|
||||||
|
RemoveAllSections();
|
||||||
|
}
|
||||||
|
// Clear the object...
|
||||||
|
IniSection tempsection = null;
|
||||||
|
StreamReader oReader = new StreamReader(sFileName);
|
||||||
|
Regex regexcomment = new Regex("^([\\s]*#.*)", (RegexOptions.Singleline | RegexOptions.IgnoreCase));
|
||||||
|
Regex regexsection = new Regex("^[\\s]*\\[[\\s]*([^\\[\\s].*[^\\s\\]])[\\s]*\\][\\s]*$", (RegexOptions.Singleline | RegexOptions.IgnoreCase));
|
||||||
|
Regex regexkey = new Regex("^\\s*([^=]*[^\\s=])\\s*=(.*)", (RegexOptions.Singleline | RegexOptions.IgnoreCase));
|
||||||
|
|
||||||
|
while (!oReader.EndOfStream)
|
||||||
|
{
|
||||||
|
string line = oReader.ReadLine();
|
||||||
|
if (line != string.Empty)
|
||||||
|
{
|
||||||
|
Match m = null;
|
||||||
|
if (regexcomment.Match(line).Success)
|
||||||
|
{
|
||||||
|
m = regexcomment.Match(line);
|
||||||
|
Trace.WriteLine(string.Format("Skipping Comment: {0}", m.Groups[0].Value));
|
||||||
|
}
|
||||||
|
else if (regexsection.Match(line).Success)
|
||||||
|
{
|
||||||
|
m = regexsection.Match(line);
|
||||||
|
Trace.WriteLine(string.Format("Adding section [{0}]", m.Groups[1].Value));
|
||||||
|
tempsection = AddSection(m.Groups[1].Value);
|
||||||
|
}
|
||||||
|
else if ( regexkey.Match(line).Success && tempsection != null)
|
||||||
|
{
|
||||||
|
m = regexkey.Match(line);
|
||||||
|
Trace.WriteLine(string.Format("Adding Key [{0}]=[{1}]", m.Groups[1].Value, m.Groups[2].Value));
|
||||||
|
tempsection.AddKey(m.Groups[1].Value).Value = m.Groups[2].Value;
|
||||||
|
}
|
||||||
|
else if ( tempsection != null )
|
||||||
|
{
|
||||||
|
// Handle Key without Value
|
||||||
|
Trace.WriteLine(string.Format("Adding Key [{0}]", line));
|
||||||
|
tempsection.AddKey(line);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// This should not occur unless the tempsection is not created yet...
|
||||||
|
Trace.WriteLine(string.Format("Skipping unknown type of data: {0}", line));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
oReader.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Used to save the data back to the file or your choice
|
||||||
|
public void Save(string sFileName)
|
||||||
|
{
|
||||||
|
StreamWriter oWriter = new StreamWriter(sFileName, false);
|
||||||
|
foreach (IniSection s in Sections)
|
||||||
|
{
|
||||||
|
Trace.WriteLine(string.Format("Writing Section: [{0}]", s.Name));
|
||||||
|
oWriter.WriteLine(string.Format("[{0}]", s.Name));
|
||||||
|
foreach (IniSection.IniKey k in s.Keys)
|
||||||
|
{
|
||||||
|
if (k.Value != string.Empty)
|
||||||
|
{
|
||||||
|
Trace.WriteLine(string.Format("Writing Key: {0}={1}", k.Name, k.Value));
|
||||||
|
oWriter.WriteLine(string.Format("{0}={1}", k.Name, k.Value));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Trace.WriteLine(string.Format("Writing Key: {0}", k.Name));
|
||||||
|
oWriter.WriteLine(string.Format("{0}", k.Name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
oWriter.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets all the sections names
|
||||||
|
public System.Collections.ICollection Sections
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_sections.Values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adds a section to the IniFile object, returns a IniSection object to the new or existing object
|
||||||
|
public IniSection AddSection(string sSection )
|
||||||
|
{
|
||||||
|
IniSection s = null;
|
||||||
|
sSection = sSection.Trim();
|
||||||
|
// Trim spaces
|
||||||
|
if (m_sections.ContainsKey(sSection))
|
||||||
|
{
|
||||||
|
s = (IniSection)m_sections[sSection];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s = new IniSection(this, sSection);
|
||||||
|
m_sections[sSection] = s;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes a section by its name sSection, returns trus on success
|
||||||
|
public bool RemoveSection(string sSection)
|
||||||
|
{
|
||||||
|
sSection = sSection.Trim();
|
||||||
|
return RemoveSection(GetSection(sSection));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes section by object, returns trus on success
|
||||||
|
public bool RemoveSection(IniSection Section)
|
||||||
|
{
|
||||||
|
if (Section != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_sections.Remove(Section.Name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch( Exception ex )
|
||||||
|
{
|
||||||
|
Trace.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes all existing sections, returns trus on success
|
||||||
|
public bool RemoveAllSections()
|
||||||
|
{
|
||||||
|
m_sections.Clear();
|
||||||
|
return (m_sections.Count == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an IniSection to the section by name, NULL if it was not found
|
||||||
|
public IniSection GetSection(string sSection)
|
||||||
|
{
|
||||||
|
sSection = sSection.Trim();
|
||||||
|
// Trim spaces
|
||||||
|
if (m_sections.ContainsKey(sSection))
|
||||||
|
{
|
||||||
|
return (IniSection)m_sections[sSection];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a KeyValue in a certain section
|
||||||
|
public string GetKeyValue(string sSection, string sKey)
|
||||||
|
{
|
||||||
|
IniSection s = GetSection(sSection);
|
||||||
|
if (s != null)
|
||||||
|
{
|
||||||
|
IniSection.IniKey k = s.GetKey(sKey);
|
||||||
|
if (k != null)
|
||||||
|
{
|
||||||
|
return k.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets a KeyValuePair in a certain section
|
||||||
|
public bool SetKeyValue(string sSection, string sKey, string sValue)
|
||||||
|
{
|
||||||
|
IniSection s = AddSection(sSection);
|
||||||
|
if (s != null)
|
||||||
|
{
|
||||||
|
IniSection.IniKey k = s.AddKey(sKey);
|
||||||
|
if (k != null)
|
||||||
|
{
|
||||||
|
k.Value = sValue;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Renames an existing section returns true on success, false if the section didn't exist or there was another section with the same sNewSection
|
||||||
|
public bool RenameSection(string sSection, string sNewSection)
|
||||||
|
{
|
||||||
|
// Note string trims are done in lower calls.
|
||||||
|
bool bRval = false;
|
||||||
|
IniSection s = GetSection(sSection);
|
||||||
|
if (s != null)
|
||||||
|
{
|
||||||
|
bRval = s.SetName(sNewSection);
|
||||||
|
}
|
||||||
|
return bRval;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Renames an existing key returns true on success, false if the key didn't exist or there was another section with the same sNewKey
|
||||||
|
public bool RenameKey(string sSection, string sKey, string sNewKey)
|
||||||
|
{
|
||||||
|
// Note string trims are done in lower calls.
|
||||||
|
IniSection s = GetSection(sSection);
|
||||||
|
if (s != null)
|
||||||
|
{
|
||||||
|
IniSection.IniKey k = s.GetKey(sKey);
|
||||||
|
if (k != null)
|
||||||
|
{
|
||||||
|
return k.SetName(sNewKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IniSection class
|
||||||
|
public class IniSection
|
||||||
|
{
|
||||||
|
// IniFile IniFile object instance
|
||||||
|
private IniFile m_pIniFile;
|
||||||
|
// Name of the section
|
||||||
|
private string m_sSection;
|
||||||
|
// List of IniKeys in the section
|
||||||
|
private Hashtable m_keys;
|
||||||
|
|
||||||
|
// Constuctor so objects are internally managed
|
||||||
|
protected internal IniSection(IniFile parent, string sSection)
|
||||||
|
{
|
||||||
|
m_pIniFile = parent;
|
||||||
|
m_sSection = sSection;
|
||||||
|
m_keys = new Hashtable(StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns and hashtable of keys associated with the section
|
||||||
|
public System.Collections.ICollection Keys
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_keys.Values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the section name
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_sSection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adds a key to the IniSection object, returns a IniKey object to the new or existing object
|
||||||
|
public IniKey AddKey(string sKey)
|
||||||
|
{
|
||||||
|
sKey = sKey.Trim();
|
||||||
|
IniSection.IniKey k = null;
|
||||||
|
if (sKey.Length != 0)
|
||||||
|
{
|
||||||
|
if (m_keys.ContainsKey(sKey))
|
||||||
|
{
|
||||||
|
k = (IniKey)m_keys[sKey];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
k = new IniSection.IniKey(this, sKey);
|
||||||
|
m_keys[sKey] = k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes a single key by string
|
||||||
|
public bool RemoveKey(string sKey)
|
||||||
|
{
|
||||||
|
return RemoveKey(GetKey(sKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes a single key by IniKey object
|
||||||
|
public bool RemoveKey(IniKey Key)
|
||||||
|
{
|
||||||
|
if (Key != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_keys.Remove(Key.Name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Trace.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes all the keys in the section
|
||||||
|
public bool RemoveAllKeys()
|
||||||
|
{
|
||||||
|
m_keys.Clear();
|
||||||
|
return (m_keys.Count == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a IniKey object to the key by name, NULL if it was not found
|
||||||
|
public IniKey GetKey(string sKey)
|
||||||
|
{
|
||||||
|
sKey = sKey.Trim();
|
||||||
|
if (m_keys.ContainsKey(sKey))
|
||||||
|
{
|
||||||
|
return (IniKey)m_keys[sKey];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets the section name, returns true on success, fails if the section
|
||||||
|
// name sSection already exists
|
||||||
|
public bool SetName(string sSection)
|
||||||
|
{
|
||||||
|
sSection = sSection.Trim();
|
||||||
|
if (sSection.Length != 0)
|
||||||
|
{
|
||||||
|
// Get existing section if it even exists...
|
||||||
|
IniSection s = m_pIniFile.GetSection(sSection);
|
||||||
|
if (s != this && s != null) return false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Remove the current section
|
||||||
|
m_pIniFile.m_sections.Remove(m_sSection);
|
||||||
|
// Set the new section name to this object
|
||||||
|
m_pIniFile.m_sections[sSection] = this;
|
||||||
|
// Set the new section name
|
||||||
|
m_sSection = sSection;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Trace.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the section name
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return m_sSection;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IniKey class
|
||||||
|
public class IniKey
|
||||||
|
{
|
||||||
|
// Name of the Key
|
||||||
|
private string m_sKey;
|
||||||
|
// Value associated
|
||||||
|
private string m_sValue;
|
||||||
|
// Pointer to the parent CIniSection
|
||||||
|
private IniSection m_section;
|
||||||
|
|
||||||
|
// Constuctor so objects are internally managed
|
||||||
|
protected internal IniKey(IniSection parent, string sKey)
|
||||||
|
{
|
||||||
|
m_section = parent;
|
||||||
|
m_sKey = sKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the name of the Key
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_sKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets or Gets the Value of the key
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_sValue;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_sValue = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets the Value of the key
|
||||||
|
public void SetValue(string sValue)
|
||||||
|
{
|
||||||
|
m_sValue = sValue;
|
||||||
|
}
|
||||||
|
// Returns the Value of the Key
|
||||||
|
public string GetValue()
|
||||||
|
{
|
||||||
|
return m_sValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets the key name
|
||||||
|
// Returns true on success, fails if the section name sKey already exists
|
||||||
|
public bool SetName(string sKey)
|
||||||
|
{
|
||||||
|
sKey = sKey.Trim();
|
||||||
|
if (sKey.Length != 0)
|
||||||
|
{
|
||||||
|
IniKey k = m_section.GetKey(sKey);
|
||||||
|
if (k != this && k != null) return false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Remove the current key
|
||||||
|
m_section.m_keys.Remove(m_sKey);
|
||||||
|
// Set the new key name to this object
|
||||||
|
m_section.m_keys[sKey] = this;
|
||||||
|
// Set the new key name
|
||||||
|
m_sKey = sKey;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Trace.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the name of the Key
|
||||||
|
public string GetName()
|
||||||
|
{
|
||||||
|
return m_sKey;
|
||||||
|
}
|
||||||
|
} // End of IniKey class
|
||||||
|
} // End of IniSection class
|
||||||
|
} // End of IniFile class
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace EgwProxy.Icoel.Test.INI
|
||||||
|
{
|
||||||
|
public class Settaggi
|
||||||
|
{
|
||||||
|
#region Public Constructors
|
||||||
|
|
||||||
|
public Settaggi()
|
||||||
|
{
|
||||||
|
_sett = new IniFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Constructors
|
||||||
|
|
||||||
|
#region Public Properties
|
||||||
|
|
||||||
|
public string IndirizzoIpSizer
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Sizer", "IndirizzoIp"); }
|
||||||
|
set { _sett.SetKeyValue("Sizer", "IndirizzoIp", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IndirizzoIpSizerClient
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Sizer", "IndirizzoIpTracciabilità"); }
|
||||||
|
set { _sett.SetKeyValue("Sizer", "IndirizzoIpTracciabilità", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SizerTcpPort
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Sizer", "TcpPort"); }
|
||||||
|
set { _sett.SetKeyValue("Sizer", "TcpPort", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string TcpPortSizerClient
|
||||||
|
{
|
||||||
|
get { return _sett.GetKeyValue("Sizer", "TcpPortTracciabilità"); }
|
||||||
|
set { _sett.SetKeyValue("Sizer", "TcpPortTracciabilità", value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Properties
|
||||||
|
|
||||||
|
#region Public Methods
|
||||||
|
|
||||||
|
public void Load()
|
||||||
|
{
|
||||||
|
if (!File.Exists(NameFile))
|
||||||
|
{
|
||||||
|
var fs = File.Create(NameFile);
|
||||||
|
fs.Close();
|
||||||
|
}
|
||||||
|
_sett.Load(NameFile, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
_sett.Save(NameFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
private const string NameFile = "conf.ini";
|
||||||
|
private readonly IniFile _sett;
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
|
}
|
||||||
|
}
|
||||||
+225
-18
@@ -1,38 +1,243 @@
|
|||||||
using System;
|
using EgwProxy.Icoel.SizerService;
|
||||||
|
using EgwProxy.Icoel.Test.INI;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using EgwProxy.Icoel;
|
|
||||||
|
|
||||||
namespace EgwProxy.Icoel.Test
|
namespace EgwProxy.Icoel.Test
|
||||||
{
|
{
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
#region Internal Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generazione di una list di info sui dati variety
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varietiesList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static void DisplayVariety(Variety[] varietyData)
|
||||||
{
|
{
|
||||||
// ersempio funzionamento connector via console app
|
foreach (var item in varietyData)
|
||||||
// setp 1: legge conf da file ini che si trovano in bin (riportati come conf principali)
|
{
|
||||||
|
Console.WriteLine("--------------------------");
|
||||||
|
Console.WriteLine($"Variety Id: {item.Id} | Variety Name: {item.Name}");
|
||||||
|
Console.WriteLine(" - Qualities");
|
||||||
|
foreach (var quality in item.Qualities)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {quality.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(" - Grades");
|
||||||
|
foreach (var grade in item.Grades)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {grade.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(" - Sizes");
|
||||||
|
foreach (var size in item.SizingMaps)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {size.Name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generazione di una list di info sui dati variety
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varietiesList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static void DisplayVarietyLayout(Dictionary<Variety, Layout[]> varietyData)
|
||||||
|
{
|
||||||
|
foreach (var item in varietyData)
|
||||||
|
{
|
||||||
|
Console.WriteLine("--------------------------");
|
||||||
|
Console.WriteLine($"Variety Id: {item.Key.Id} | Variety Name: {item.Key.Name}");
|
||||||
|
Console.WriteLine(" - Qualities");
|
||||||
|
foreach (var quality in item.Key.Qualities)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {quality.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(" - Grades");
|
||||||
|
foreach (var grade in item.Key.Grades)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {grade.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(" - Sizes");
|
||||||
|
foreach (var size in item.Key.SizingMaps)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Name: {size.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(" - LAYOUTS");
|
||||||
|
foreach (var layout in item.Value)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Id: {layout.Id} | Name: {layout.Name}");
|
||||||
|
Console.WriteLine(" - Products");
|
||||||
|
foreach (var product in layout.Products)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Id: {product.Id} | Name: {product.Name} | DisplayName: {product.DisplayName} | Pack: {product.Pack}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mostra elenco variety e quanod utente seleziona restituisce varGuid
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static Guid selLayout(Connector IcoelSizer, Guid varGuid)
|
||||||
|
{
|
||||||
|
int idxLay = -1;
|
||||||
|
Guid layGuid = Guid.NewGuid();
|
||||||
|
|
||||||
|
// recupero layout della varietà
|
||||||
|
var layoutList = IcoelSizer.GetLayoutForVariety(varGuid);
|
||||||
|
|
||||||
|
Console.WriteLine("--------------------");
|
||||||
|
Console.WriteLine("Layout disponibili:");
|
||||||
|
Console.WriteLine("--------------------");
|
||||||
|
DisplayLayout(layoutList);
|
||||||
|
// recupero layout x varietà
|
||||||
|
while (idxLay <= 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine("indicare layout");
|
||||||
|
var rawData = Console.ReadLine();
|
||||||
|
if (!string.IsNullOrEmpty(rawData))
|
||||||
|
{
|
||||||
|
int.TryParse(rawData, out idxLay);
|
||||||
|
// verifico sia valida..
|
||||||
|
if (layoutList.Length >= idxLay && idxLay > 0)
|
||||||
|
{
|
||||||
|
layGuid = layoutList[idxLay - 1].Id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idxLay = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return layGuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mostra elenco variety e quanod utente seleziona restituisce varGuid
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static Guid selVariety(Connector IcoelSizer)
|
||||||
|
{
|
||||||
|
int idxVar = -1;
|
||||||
|
Guid varGuid = Guid.NewGuid();
|
||||||
|
var varList = IcoelSizer.GetVarietyList(true);
|
||||||
|
|
||||||
|
Console.WriteLine("--------------------");
|
||||||
|
Console.WriteLine("Varietà disponibili:");
|
||||||
|
Console.WriteLine("--------------------");
|
||||||
|
DisplayVariety(varList);
|
||||||
|
// chiedo di selezionare
|
||||||
|
while (idxVar <= 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine("indicare varietà richiesta (#)");
|
||||||
|
var rawData = Console.ReadLine();
|
||||||
|
if (!string.IsNullOrEmpty(rawData))
|
||||||
|
{
|
||||||
|
int.TryParse(rawData, out idxVar);
|
||||||
|
// verifico sia valida..
|
||||||
|
if (varList.Length >= idxVar && idxVar > 0)
|
||||||
|
{
|
||||||
|
varGuid = varList[idxVar - 1].Id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idxVar = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return varGuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Internal Methods
|
||||||
|
|
||||||
|
#region Private Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generazione di una list di layout dato elenco
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="layoutList"></param>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
private static void DisplayLayout(Layout[] layoutList)
|
||||||
|
{
|
||||||
|
foreach (var layout in layoutList)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Id: {layout.Id} | Name: {layout.Name}");
|
||||||
|
Console.WriteLine(" - Products");
|
||||||
|
foreach (var product in layout.Products)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" Id: {product.Id} | Name: {product.Name} | DisplayName: {product.DisplayName} | Pack: {product.Pack}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Programma principale
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// leggo conf da file ini (ip/port)
|
||||||
Console.WriteLine("Loading Files...");
|
Console.WriteLine("Loading Files...");
|
||||||
Connector.Load();
|
Settaggi setup = new Settaggi();
|
||||||
|
setup.Load();
|
||||||
// ora effettua lettura Varietà e Layout disponibili
|
string userInput = "";
|
||||||
|
// oggetto x connessione
|
||||||
|
Connector IcoelSizer = new Connector(setup.IndirizzoIpSizer, setup.TcpPortSizerClient);
|
||||||
|
|
||||||
|
// ora effettua un pò di letture/scritture
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var varList = Connector.RecuperaVarietyLayout();
|
Console.WriteLine("------------ TUTTE variety ------------");
|
||||||
if (varList != null)
|
var varList = IcoelSizer.GetVarietyList(false);
|
||||||
|
var varietyData = IcoelSizer.GetLayoutForVarietyList(varList);
|
||||||
|
if (varietyData != null)
|
||||||
{
|
{
|
||||||
Connector.DisplayVarietyLayout(varList);
|
DisplayVarietyLayout(varietyData);
|
||||||
}
|
}
|
||||||
|
Console.WriteLine();
|
||||||
|
Console.WriteLine("Premere un tasto x continuare...");
|
||||||
|
userInput = Console.ReadLine();
|
||||||
|
|
||||||
Connector.VerificaLottoCorrente();
|
// solo attive
|
||||||
|
Console.WriteLine("------------ solo attive ------------");
|
||||||
|
varList = IcoelSizer.GetVarietyList();
|
||||||
|
varietyData = IcoelSizer.GetLayoutForVarietyList(varList);
|
||||||
|
if (varietyData != null)
|
||||||
|
{
|
||||||
|
DisplayVarietyLayout(varietyData);
|
||||||
|
}
|
||||||
|
Console.WriteLine();
|
||||||
|
Console.WriteLine("Premere un tasto x continuare...");
|
||||||
|
userInput = Console.ReadLine();
|
||||||
|
|
||||||
Connector.MettiLottoInCoda();
|
Console.WriteLine("------------ BATCH correnti ------------");
|
||||||
|
var currBatch = IcoelSizer.GetCurrentBatch();
|
||||||
|
foreach (var item in currBatch)
|
||||||
|
{
|
||||||
|
string lato = item.Key == 1 ? "SX" : "DX";
|
||||||
|
Console.WriteLine($"[{item.Key}-{lato}] Grower code: {item.Value.GrowerCode} | Layout Name: {item.Value.LayoutName} | Totalling: [{item.Value.TotallingVarietyCode}] {item.Value.TotallingVariety} | Sizing: {item.Value.SizingProfileName} | Start {item.Value.StartTime} | End {item.Value.EndTime}");
|
||||||
|
}
|
||||||
|
Console.WriteLine();
|
||||||
|
Console.WriteLine("Premere un tasto x continuare...");
|
||||||
|
userInput = Console.ReadLine();
|
||||||
|
|
||||||
Connector.VerificaLottoCorrente();
|
Console.WriteLine("------------ Prova invio BATCH ------------");
|
||||||
|
// recupero GUID x variety e layout
|
||||||
|
var varGuid = selVariety(IcoelSizer);
|
||||||
|
var layGuid = selLayout(IcoelSizer, varGuid);
|
||||||
|
|
||||||
Console.WriteLine("Done.");
|
GrowerInfo GrowerData = new GrowerInfo();
|
||||||
|
IcoelSizer.EnqueueBatch(GrowerData, varGuid, layGuid);
|
||||||
|
|
||||||
|
IcoelSizer.GetCurrentBatch();
|
||||||
|
|
||||||
|
Console.WriteLine("Test completato");
|
||||||
|
Console.WriteLine("Premere un tasto x chiudere");
|
||||||
Console.ReadKey();
|
Console.ReadKey();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -41,5 +246,7 @@ namespace EgwProxy.Icoel.Test
|
|||||||
Console.ReadKey();
|
Console.ReadKey();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion Private Methods
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[Batch]
|
||||||
|
GrowerCode=02
|
||||||
|
GrowerName=Egalware
|
||||||
|
Comment1=Prova Invio
|
||||||
|
Comment2=Console app
|
||||||
|
Comment3=Selezionato Variety e layout
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[Sizer]
|
||||||
|
IndirizzoIp=192.168.137.50
|
||||||
|
TcpPort=8001
|
||||||
@@ -5,7 +5,7 @@ using System.ServiceModel;
|
|||||||
|
|
||||||
namespace EgwProxy.Icoel.Compac
|
namespace EgwProxy.Icoel.Compac
|
||||||
{
|
{
|
||||||
public class ComClient
|
public class ComClient : IDisposable
|
||||||
{
|
{
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
@@ -17,8 +17,13 @@ namespace EgwProxy.Icoel.Compac
|
|||||||
/// <param name="port">Porta di connessione del sizer (def: 8001)</param>
|
/// <param name="port">Porta di connessione del sizer (def: 8001)</param>
|
||||||
public ComClient(string sizerIp, string port)
|
public ComClient(string sizerIp, string port)
|
||||||
{
|
{
|
||||||
|
// Salvo IP e porta
|
||||||
|
ipAddress = sizerIp;
|
||||||
|
tcpPort = port;
|
||||||
|
|
||||||
|
// inizializzazione servizio comunicazione
|
||||||
var url = "http://" + sizerIp + ":" + port + "/SizerService/";
|
var url = "http://" + sizerIp + ":" + port + "/SizerService/";
|
||||||
var epa = new EndpointAddress(new Uri(url));
|
EndpointAddress epa = new EndpointAddress(new Uri(url));
|
||||||
SSClient = new SizerServiceClient("WSHttpBinding_ISizerService", epa);
|
SSClient = new SizerServiceClient("WSHttpBinding_ISizerService", epa);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,10 +51,53 @@ namespace EgwProxy.Icoel.Compac
|
|||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Dispose dell'oggetto
|
||||||
|
/// </summary>
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Internal Properties
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inidirizzo IP
|
||||||
|
/// </summary>
|
||||||
|
internal string ipAddress { get; set; } = "127.0.0.1";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Porta del webservice (SOAP)
|
||||||
|
/// </summary>
|
||||||
|
internal string tcpPort { get; set; } = "8001";
|
||||||
|
|
||||||
|
#endregion Internal Properties
|
||||||
|
|
||||||
|
#region Internal Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verifica del grower da codice/nome con eventuale creazione se mancante
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="growerCode">Codice del produttore</param>
|
||||||
|
/// <param name="growerName">Denominazione del produttore</param>
|
||||||
|
internal void CheckGrower(string growerCode, string growerName)
|
||||||
|
{
|
||||||
|
var grower = SSClient.GetGrower(growerCode);
|
||||||
|
|
||||||
|
if (grower == null)
|
||||||
|
{
|
||||||
|
var nuovo = new Grower() { Code = growerCode, Name = growerName };
|
||||||
|
|
||||||
|
SSClient.AddGrower(nuovo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Effettua chiusura del proxy di comunicazione
|
/// Effettua chiusura del proxy di comunicazione
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
internal void Close()
|
||||||
{
|
{
|
||||||
if (SSClient.State != CommunicationState.Closed)
|
if (SSClient.State != CommunicationState.Closed)
|
||||||
{
|
{
|
||||||
@@ -57,10 +105,6 @@ namespace EgwProxy.Icoel.Compac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
|
||||||
|
|
||||||
#region Internal Methods
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Elenco dei layout attivi della varietà
|
/// Elenco dei layout attivi della varietà
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -80,6 +124,15 @@ namespace EgwProxy.Icoel.Compac
|
|||||||
return SSClient.GetActiveVarieties();
|
return SSClient.GetActiveVarieties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Elenco varietà (tutte)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal Variety[] GetAllVarieties()
|
||||||
|
{
|
||||||
|
return SSClient.GetAllVarieties();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Recupera il batch corrente (se monolinea)
|
/// Recupera il batch corrente (se monolinea)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -118,23 +171,6 @@ namespace EgwProxy.Icoel.Compac
|
|||||||
SSClient.AddBatch(batch);
|
SSClient.AddBatch(batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Verifica del grower da codice/nome
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="growerCode">Codice del produttore</param>
|
|
||||||
/// <param name="growerName">Denominazione del produttore</param>
|
|
||||||
internal void VerificaEsistenzaGrower(string growerCode, string growerName)
|
|
||||||
{
|
|
||||||
var grower = SSClient.GetGrower(growerCode);
|
|
||||||
|
|
||||||
if (grower == null)
|
|
||||||
{
|
|
||||||
var nuovo = new Grower() { Code = growerCode, Name = growerName };
|
|
||||||
|
|
||||||
SSClient.AddGrower(nuovo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Internal Methods
|
#endregion Internal Methods
|
||||||
|
|
||||||
#region Private Properties
|
#region Private Properties
|
||||||
|
|||||||
+142
-234
@@ -1,289 +1,197 @@
|
|||||||
using BinsTracker.INI;
|
using EgwProxy.Icoel.Compac;
|
||||||
using EgwProxy.Icoel.Compac;
|
|
||||||
using EgwProxy.Icoel.INI;
|
|
||||||
using EgwProxy.Icoel.SizerService;
|
using EgwProxy.Icoel.SizerService;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace EgwProxy.Icoel
|
namespace EgwProxy.Icoel
|
||||||
{
|
{
|
||||||
public static class Connector
|
public class Connector
|
||||||
{
|
{
|
||||||
|
#region Public Constructors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inizializazzione classe con salvataggio ip/porta del webservice del sizer
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ipAddress"></param>
|
||||||
|
/// <param name="tcpPort"></param>
|
||||||
|
public Connector(string ipAddress, string tcpPort)
|
||||||
|
{
|
||||||
|
this.ipAddress = ipAddress;
|
||||||
|
this.tcpPort = tcpPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Constructors
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
public static void DisplayVarietyLayout(Variety[] varietiesList)
|
/// <summary>
|
||||||
|
/// Verifica il fornitore e se non ci fosse crea
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="GrowerData"></param>
|
||||||
|
public void CheckGrower(GrowerInfo GrowerData)
|
||||||
{
|
{
|
||||||
if (Client == null || !Client.connected)
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
{
|
{
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
Client.CheckGrower(GrowerData.GrowerCode, GrowerData.GrowerName);
|
||||||
}
|
}
|
||||||
foreach (var item in varietiesList)
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invia un lotto in coda produzione sul sizer
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="newBatch">Batch da accodare</param>
|
||||||
|
public void EnqueueBatch(GrowerInfo GrowerData, Guid varGuid, Guid layGuid)
|
||||||
|
{
|
||||||
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
{
|
{
|
||||||
Console.WriteLine("--------------------------");
|
string sizingProfile = Client.GetCurrentBatch().SizingProfileName;
|
||||||
Console.WriteLine($"Variety Id: {item.Id} | Variety Name: {item.Name}");
|
Batch newBatch = CreateBatch(GrowerData, varGuid, layGuid, sizingProfile);
|
||||||
Console.WriteLine(" - Qualities");
|
Client.MettiLottoInCoda(newBatch);
|
||||||
foreach (var quality in item.Qualities)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recupera elenco dei Batch correnti (su L1 SX e L2 DX)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Dictionary<int, Batch> GetCurrentBatch()
|
||||||
|
{
|
||||||
|
Dictionary<int, Batch> outVal = new Dictionary<int, Batch>();
|
||||||
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
|
{
|
||||||
|
//Client.GetCurrentBatch();
|
||||||
|
for (int i = 1; i <= 2; i++)
|
||||||
{
|
{
|
||||||
Console.WriteLine($" Name: {quality.Name}");
|
var batch = Client.GetCurrentBatchByLane(i);
|
||||||
|
outVal.Add(i, batch);
|
||||||
}
|
}
|
||||||
Console.WriteLine(" - Grades");
|
}
|
||||||
foreach (var grade in item.Grades)
|
return outVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Restituisce un dictionary di varietà e relativi layout
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varietiesList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Dictionary<Variety, Layout[]> GetLayoutAndVariety()
|
||||||
|
{
|
||||||
|
Dictionary<Variety, Layout[]> outVal = new Dictionary<Variety, Layout[]>();
|
||||||
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
|
{
|
||||||
|
Variety[] varietiesList = Client.GetActiveVarieties();
|
||||||
|
foreach (var item in varietiesList)
|
||||||
{
|
{
|
||||||
Console.WriteLine($" Name: {grade.Name}");
|
// recupero layout della varietà
|
||||||
}
|
var layoutList = Client.GetLayouts(item.Id);
|
||||||
Console.WriteLine(" - Sizes");
|
outVal.Add(item, layoutList);
|
||||||
foreach (var size in item.SizingMaps)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Name: {size.Name}");
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// restituisco dati
|
||||||
|
return outVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Restituisce un array di Layout validi data Guid della Variety
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varietiesList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Layout[] GetLayoutForVariety(Guid varGuid)
|
||||||
|
{
|
||||||
|
Layout[] outVal = new Layout[1];
|
||||||
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
|
{
|
||||||
// recupero layout della varietà
|
// recupero layout della varietà
|
||||||
var layoutList = Client.GetLayouts(item.Id);
|
var layoutList = Client.GetLayouts(varGuid);
|
||||||
Console.WriteLine(" - LAYOUTS");
|
outVal = layoutList;
|
||||||
foreach (var layout in layoutList)
|
}
|
||||||
|
// restituisco dati
|
||||||
|
return outVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Restituisce un dictionary di layout validi x un array di varietà fornito
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varietiesList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Dictionary<Variety, Layout[]> GetLayoutForVarietyList(Variety[] varietiesList)
|
||||||
|
{
|
||||||
|
Dictionary<Variety, Layout[]> outVal = new Dictionary<Variety, Layout[]>();
|
||||||
|
using (var Client = new ComClient(ipAddress, tcpPort))
|
||||||
|
{
|
||||||
|
foreach (var item in varietiesList)
|
||||||
{
|
{
|
||||||
Console.WriteLine($" Id: {layout.Id} | Name: {layout.Name}");
|
// recupero layout della varietà
|
||||||
// ciclo su sub info
|
var layoutList = Client.GetLayouts(item.Id);
|
||||||
#if false
|
outVal.Add(item, layoutList);
|
||||||
Console.WriteLine(" - Assignments");
|
|
||||||
foreach (var assign in layout.Assignments)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Key: {assign.Key} | Val: {assign.Value}");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Console.WriteLine(" - Products");
|
|
||||||
foreach (var product in layout.Products)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Id: {product.Id} | Name: {product.Name} | DisplayName: {product.DisplayName} | Pack: {product.Pack}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// restituisco dati
|
||||||
// chiudo se fosse rimasto aperto
|
return outVal;
|
||||||
Client.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Load()
|
/// <summary>
|
||||||
|
/// Restituisce elenco delle Variety
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="onlyActive">Solo attive (true) o tutte (false)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Variety[] GetVarietyList(bool onlyActive = true)
|
||||||
{
|
{
|
||||||
Settaggi = new Settaggi();
|
|
||||||
Details = new BatchDetails();
|
|
||||||
|
|
||||||
Settaggi.Load();
|
|
||||||
Details.Load();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void MettiLottoInCoda()
|
|
||||||
{
|
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
|
|
||||||
Client.VerificaEsistenzaGrower(Details.GrowerCode, Details.GrowerName);
|
|
||||||
|
|
||||||
// recupero varietà x selezione
|
|
||||||
var varList = Connector.RecuperaVarietyLayout();
|
|
||||||
|
|
||||||
int idxVar = -1;
|
|
||||||
int idxLay = -1;
|
|
||||||
|
|
||||||
Guid varGuid = Guid.NewGuid();
|
|
||||||
Guid layGuid = Guid.NewGuid();
|
|
||||||
|
|
||||||
Console.WriteLine("--------------------");
|
|
||||||
Console.WriteLine("Varietà disponibili:");
|
|
||||||
Console.WriteLine("--------------------");
|
|
||||||
DisplayVarietyLayout(varList);
|
|
||||||
// chiedo di selezionare
|
|
||||||
while (idxVar <= 0)
|
|
||||||
{
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("indicare varietà richiesta (#)");
|
|
||||||
var rawData = Console.ReadLine();
|
|
||||||
if (!string.IsNullOrEmpty(rawData))
|
|
||||||
{
|
|
||||||
int.TryParse(rawData, out idxVar);
|
|
||||||
// verifico sia valida..
|
|
||||||
if (varList.Length >= idxVar)
|
|
||||||
{
|
|
||||||
varGuid = varList[idxVar - 1].Id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
idxVar = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Client == null || !Client.connected)
|
|
||||||
{
|
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
} // recupero layout della varietà
|
|
||||||
var layoutList = Client.GetLayouts(varGuid);
|
|
||||||
// recupero layout x varietà
|
|
||||||
while (idxLay <= 0)
|
|
||||||
{
|
|
||||||
Console.WriteLine("");
|
|
||||||
Console.WriteLine("indicare layout");
|
|
||||||
var rawData = Console.ReadLine();
|
|
||||||
if (!string.IsNullOrEmpty(rawData))
|
|
||||||
{
|
|
||||||
int.TryParse(rawData, out idxLay);
|
|
||||||
// verifico sia valida..
|
|
||||||
if (layoutList.Length >= idxLay)
|
|
||||||
{
|
|
||||||
layGuid = layoutList[idxLay - 1].Id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
idxLay = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// compongo batch e metto in coda
|
|
||||||
var newBatch = GeneraBatchDaSelezione(varGuid, layGuid, Client.GetCurrentBatch().SizingProfileName);
|
|
||||||
|
|
||||||
Client.MettiLottoInCoda(newBatch);
|
|
||||||
|
|
||||||
Client.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void MettiLottoInCodaDefault()
|
|
||||||
{
|
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
|
|
||||||
Client.VerificaEsistenzaGrower(Details.GrowerCode, Details.GrowerName);
|
|
||||||
|
|
||||||
Client.MettiLottoInCoda(GeneraBatchDaFile());
|
|
||||||
|
|
||||||
Client.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Variety[] RecuperaVarietyLayout()
|
|
||||||
{
|
|
||||||
//Client = new CompacClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
if (Client == null || !Client.connected)
|
|
||||||
{
|
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
}
|
|
||||||
Variety[] varietiesList;
|
Variety[] varietiesList;
|
||||||
varietiesList = Client.GetActiveVarieties();
|
using (var cClient = new ComClient(ipAddress, tcpPort))
|
||||||
#if false
|
|
||||||
foreach (var item in varietiesList)
|
|
||||||
{
|
{
|
||||||
Console.WriteLine("--------------------------");
|
if (onlyActive)
|
||||||
Console.WriteLine($"Variety Id: {item.Id} | Variety Name: {item.Name}");
|
|
||||||
Console.WriteLine(" - Qualities");
|
|
||||||
foreach (var quality in item.Qualities)
|
|
||||||
{
|
{
|
||||||
Console.WriteLine($" Name: {quality.Name}");
|
varietiesList = cClient.GetActiveVarieties();
|
||||||
}
|
}
|
||||||
Console.WriteLine(" - Grades");
|
else
|
||||||
foreach (var grade in item.Grades)
|
|
||||||
{
|
{
|
||||||
Console.WriteLine($" Name: {grade.Name}");
|
varietiesList = cClient.GetAllVarieties();
|
||||||
}
|
|
||||||
Console.WriteLine(" - Sizes");
|
|
||||||
foreach (var size in item.SizingMaps)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Name: {size.Name}");
|
|
||||||
}
|
|
||||||
// recupero layout della varietà
|
|
||||||
var layoutList = Client.GetLayouts(item.Id);
|
|
||||||
Console.WriteLine(" - LAYOUTS");
|
|
||||||
foreach (var layout in layoutList)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Id: {layout.Id} | Name: {layout.Name}");
|
|
||||||
// ciclo su sub info
|
|
||||||
Console.WriteLine(" - Assignments");
|
|
||||||
foreach (var assign in layout.Assignments)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Key: {assign.Key} | Val: {assign.Value}");
|
|
||||||
}
|
|
||||||
Console.WriteLine(" - Products");
|
|
||||||
foreach (var product in layout.Products)
|
|
||||||
{
|
|
||||||
Console.WriteLine($" Id: {product.Id} | Name: {product.Name} | DisplayName: {product.DisplayName} | Pack: {product.Pack}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
Client.Close();
|
|
||||||
|
|
||||||
return varietiesList;
|
return varietiesList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void VerificaLottoCorrente()
|
|
||||||
{
|
|
||||||
Client = new ComClient(Settaggi.IndirizzoIpSizer, Settaggi.SizerTcpPort);
|
|
||||||
|
|
||||||
//Client.GetCurrentBatch();
|
|
||||||
var batch = Client.GetCurrentBatchByLane(1);
|
|
||||||
Console.WriteLine($"[1-SX] Grower code: {batch.GrowerCode} | Layout Name: {batch.LayoutName} | Totalling: [{batch.TotallingVarietyCode}] {batch.TotallingVariety} | Sizing: {batch.SizingProfileName} | Start {batch.StartTime} | End {batch.EndTime}");
|
|
||||||
|
|
||||||
batch = Client.GetCurrentBatchByLane(2);
|
|
||||||
Console.WriteLine($"[2-DX] Grower code: {batch.GrowerCode} | Layout Name: {batch.LayoutName} | Totalling: [{batch.TotallingVarietyCode}] {batch.TotallingVariety} | Sizing: {batch.SizingProfileName} | Start {batch.StartTime} | End {batch.EndTime}");
|
|
||||||
|
|
||||||
Client.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
#region Internal Properties
|
#region Private Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto di connessione client
|
/// Inidirizzo IP
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static ComClient Client { get; set; }
|
private string ipAddress { get; set; } = "127.0.0.1";
|
||||||
/// <summary>
|
|
||||||
/// Dettaglio dei batch
|
|
||||||
/// </summary>
|
|
||||||
internal static BatchDetails Details { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Parametri di setup
|
|
||||||
/// </summary>
|
|
||||||
internal static Settaggi Settaggi { get; set; }
|
|
||||||
|
|
||||||
#endregion Internal Properties
|
/// <summary>
|
||||||
|
/// Porta del webservice (SOAP)
|
||||||
|
/// </summary>
|
||||||
|
private string tcpPort { get; set; } = "8001";
|
||||||
|
|
||||||
|
#endregion Private Properties
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
|
|
||||||
private static Batch GeneraBatchDaFile()
|
/// <summary>
|
||||||
{
|
/// Genera un obj batch dati i parametri necessari
|
||||||
var batch = new Batch();
|
/// </summary>
|
||||||
|
/// <param name="GrowerData"></param>
|
||||||
batch.GrowerCode = Details.GrowerCode;
|
/// <param name="VarietyId"></param>
|
||||||
|
/// <param name="LayoutId"></param>
|
||||||
batch.AvoidLayoutChange = true;
|
/// <param name="SizingProfileName"></param>
|
||||||
batch.AvoidSavingOldLayouts = true;
|
/// <returns></returns>
|
||||||
|
private Batch CreateBatch(GrowerInfo GrowerData, Guid VarietyId, Guid LayoutId, string SizingProfileName)
|
||||||
batch.Comments = new string[3];
|
|
||||||
batch.Comments[0] = Details.Comment1;
|
|
||||||
batch.Comments[1] = Details.Comment2;
|
|
||||||
batch.Comments[2] = Details.Comment3;
|
|
||||||
|
|
||||||
batch.VarietyId = Client.GetCurrentBatch().VarietyId;
|
|
||||||
batch.LayoutId = Client.GetCurrentBatch().LayoutId;
|
|
||||||
batch.SizingProfileName = Client.GetCurrentBatch().SizingProfileName;
|
|
||||||
|
|
||||||
return batch;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Batch GeneraBatchDaSelezione(Guid VarietyId, Guid LayoutId, string SizingProfileName)
|
|
||||||
{
|
{
|
||||||
var batch = new Batch();
|
var batch = new Batch();
|
||||||
|
|
||||||
batch.AvoidLayoutChange = true;
|
batch.AvoidLayoutChange = true;
|
||||||
batch.AvoidSavingOldLayouts = true;
|
batch.AvoidSavingOldLayouts = true;
|
||||||
|
|
||||||
batch.GrowerCode = Details.GrowerCode;
|
batch.GrowerCode = GrowerData.GrowerCode;
|
||||||
batch.Comments = new string[3];
|
batch.Comments = new string[GrowerData.Comments.Count];
|
||||||
batch.Comments[0] = Details.Comment1;
|
batch.Comments = GrowerData.Comments.ToArray();
|
||||||
batch.Comments[1] = Details.Comment2;
|
|
||||||
batch.Comments[2] = Details.Comment3;
|
|
||||||
|
|
||||||
batch.VarietyId = VarietyId;
|
batch.VarietyId = VarietyId;
|
||||||
batch.LayoutId = LayoutId;
|
batch.LayoutId = LayoutId;
|
||||||
batch.SizingProfileName = SizingProfileName;
|
batch.SizingProfileName = SizingProfileName;
|
||||||
//batch.VarietyId = Client.GetCurrentBatch().VarietyId;
|
|
||||||
//batch.LayoutId = Client.GetCurrentBatch().LayoutId;
|
|
||||||
//batch.SizingProfileName = Client.GetCurrentBatch().SizingProfileName;
|
|
||||||
|
|
||||||
return batch;
|
return batch;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,14 +54,12 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Compac\ComClient.cs" />
|
<Compile Include="Compac\ComClient.cs" />
|
||||||
|
<Compile Include="GrowerInfo.cs" />
|
||||||
<Compile Include="Connected Services\SizerService\Reference.cs">
|
<Compile Include="Connected Services\SizerService\Reference.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>Reference.svcmap</DependentUpon>
|
<DependentUpon>Reference.svcmap</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="INI\BatchDetails.cs" />
|
|
||||||
<Compile Include="INI\IniFileCs.cs" />
|
|
||||||
<Compile Include="INI\Settaggi.cs" />
|
|
||||||
<Compile Include="Connector.cs" />
|
<Compile Include="Connector.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -70,12 +68,6 @@
|
|||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
<None Include="articles\intro.md" />
|
<None Include="articles\intro.md" />
|
||||||
<None Include="articles\toc.md" />
|
<None Include="articles\toc.md" />
|
||||||
<None Include="batch.ini">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="conf.ini">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="Connected Services\SizerService\Arrays.xsd">
|
<None Include="Connected Services\SizerService\Arrays.xsd">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</None>
|
</None>
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace EgwProxy.Icoel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Classe rappresentazione dati del Grower
|
||||||
|
/// </summary>
|
||||||
|
public class GrowerInfo
|
||||||
|
{
|
||||||
|
#region Public Properties
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Riga commento 01
|
||||||
|
/// </summary>
|
||||||
|
public List<string> Comments { get; set; } = new List<string>() { "Commento 01", "Commento 02", "Commento 01" };
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Codice univoco fornitore
|
||||||
|
/// </summary>
|
||||||
|
public string GrowerCode { get; set; } = "02";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Denominazione del fornitore
|
||||||
|
/// </summary>
|
||||||
|
public string GrowerName { get; set; } = "Egalware";
|
||||||
|
|
||||||
|
#endregion Public Properties
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -87,17 +87,20 @@
|
|||||||
<HintPath>..\packages\EasyModbusTCP.5.6.0\lib\net40\EasyModbus.dll</HintPath>
|
<HintPath>..\packages\EasyModbusTCP.5.6.0\lib\net40\EasyModbus.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EgwProxy.MultiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgwProxy.MultiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\EgwProxy.MultiCncLib.3.6.2205.1913\lib\net40\EgwProxy.MultiCncLib.dll</HintPath>
|
<HintPath>..\packages\EgwProxy.MultiCncLib.3.6.2205.1917\lib\EgwProxy.MultiCncLib.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EgwProxy.OsaiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgwProxy.OsaiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\EgwProxy.OsaiCncLib.3.6.2205.1913\lib\net40\EgwProxy.OsaiCncLib.dll</HintPath>
|
<HintPath>..\packages\EgwProxy.OsaiCncLib.3.6.2205.1917\lib\EgwProxy.OsaiCncLib.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="EgwProxy.OsaiCncLib.XmlSerializers, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\EgwProxy.OsaiCncLib.3.6.2205.1917\lib\EgwProxy.OsaiCncLib.XmlSerializers.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="krcc, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86">
|
<Reference Include="krcc, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>ExtLib\krcc.dll</HintPath>
|
<HintPath>ExtLib\krcc.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MapoSDK, Version=6.14.2204.2115, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="MapoSDK, Version=6.14.2204.2616, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MapoSDK.6.14.2204.2115\lib\net40\MapoSDK.dll</HintPath>
|
<HintPath>..\packages\MapoSDK.6.14.2204.2616\lib\MapoSDK.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MathNet.Numerics, Version=4.15.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="MathNet.Numerics, Version=4.15.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MathNet.Numerics.4.15.0\lib\net461\MathNet.Numerics.dll</HintPath>
|
<HintPath>..\packages\MathNet.Numerics.4.15.0\lib\net461\MathNet.Numerics.dll</HintPath>
|
||||||
@@ -308,14 +311,10 @@
|
|||||||
<None Include="DATA\CONF\IobOpcUaClient.Config.xml">
|
<None Include="DATA\CONF\IobOpcUaClient.Config.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<Content Include="arstcomm.ico" />
|
|
||||||
<Content Include="ExtLib\CndexLinkDotNet.dll" />
|
|
||||||
<Content Include="ExtLib\krcc.dll">
|
<Content Include="ExtLib\krcc.dll">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="ExtLib\krcc64.dll" />
|
<Content Include="ExtLib\krcc64.dll" />
|
||||||
<Content Include="ExtLib\Siemens.Sinumerik.Operate.Services.dll" />
|
|
||||||
<Content Include="ExtLib\Siemens.Sinumerik.Operate.Services.Wrapper.dll" />
|
|
||||||
<Content Include="ExtLib\S_Fwlib32_V6.3.1.exe" />
|
<Content Include="ExtLib\S_Fwlib32_V6.3.1.exe" />
|
||||||
<Content Include="logs\.placeholder.txt">
|
<Content Include="logs\.placeholder.txt">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 766 B |
@@ -2,9 +2,9 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="Autoupdater.NET.Official" version="1.7.0" targetFramework="net462" />
|
<package id="Autoupdater.NET.Official" version="1.7.0" targetFramework="net462" />
|
||||||
<package id="EasyModbusTCP" version="5.6.0" targetFramework="net462" />
|
<package id="EasyModbusTCP" version="5.6.0" targetFramework="net462" />
|
||||||
<package id="EgwProxy.MultiCncLib" version="3.6.2205.1913" targetFramework="net462" />
|
<package id="EgwProxy.MultiCncLib" version="3.6.2205.1917" targetFramework="net462" />
|
||||||
<package id="EgwProxy.OsaiCncLib" version="3.6.2205.1913" targetFramework="net462" />
|
<package id="EgwProxy.OsaiCncLib" version="3.6.2205.1917" targetFramework="net462" />
|
||||||
<package id="MapoSDK" version="6.14.2204.2115" targetFramework="net462" />
|
<package id="MapoSDK" version="6.14.2204.2616" targetFramework="net462" />
|
||||||
<package id="MathNet.Numerics" version="4.15.0" targetFramework="net462" />
|
<package id="MathNet.Numerics" version="4.15.0" targetFramework="net462" />
|
||||||
<package id="Microsoft.CodeAnalysis.NetAnalyzers" version="6.0.0" targetFramework="net462" developmentDependency="true" />
|
<package id="Microsoft.CodeAnalysis.NetAnalyzers" version="6.0.0" targetFramework="net462" developmentDependency="true" />
|
||||||
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.8" targetFramework="net462" developmentDependency="true" />
|
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.8" targetFramework="net462" developmentDependency="true" />
|
||||||
|
|||||||
Reference in New Issue
Block a user