初始化上传
This commit is contained in:
211
常用工具集/Utility/Network/Modbus/EasyModbus/Exceptions/Exceptions.cs
Normal file
211
常用工具集/Utility/Network/Modbus/EasyModbus/Exceptions/Exceptions.cs
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
Copyright (c) 2018-2020 Rossmann-Engineering
|
||||
Permission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction,
|
||||
including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission
|
||||
notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace EasyModbus.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Exception to be thrown if serial port is not opened
|
||||
/// </summary>
|
||||
public class SerialPortNotOpenedException : ModbusException
|
||||
{
|
||||
public SerialPortNotOpenedException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public SerialPortNotOpenedException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public SerialPortNotOpenedException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected SerialPortNotOpenedException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if Connection to Modbus device failed
|
||||
/// </summary>
|
||||
public class ConnectionException : ModbusException
|
||||
{
|
||||
public ConnectionException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public ConnectionException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public ConnectionException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected ConnectionException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if Modbus Server returns error code "Function code not supported"
|
||||
/// </summary>
|
||||
public class FunctionCodeNotSupportedException : ModbusException
|
||||
{
|
||||
public FunctionCodeNotSupportedException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public FunctionCodeNotSupportedException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public FunctionCodeNotSupportedException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected FunctionCodeNotSupportedException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if Modbus Server returns error code "quantity invalid"
|
||||
/// </summary>
|
||||
public class QuantityInvalidException : ModbusException
|
||||
{
|
||||
public QuantityInvalidException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public QuantityInvalidException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public QuantityInvalidException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected QuantityInvalidException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if Modbus Server returns error code "starting adddress and quantity invalid"
|
||||
/// </summary>
|
||||
public class StartingAddressInvalidException : ModbusException
|
||||
{
|
||||
public StartingAddressInvalidException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public StartingAddressInvalidException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public StartingAddressInvalidException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected StartingAddressInvalidException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if Modbus Server returns error code "Function Code not executed (0x04)"
|
||||
/// </summary>
|
||||
public class ModbusException : Exception
|
||||
{
|
||||
public ModbusException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public ModbusException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public ModbusException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected ModbusException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exception to be thrown if CRC Check failed
|
||||
/// </summary>
|
||||
public class CRCCheckFailedException : ModbusException
|
||||
{
|
||||
public CRCCheckFailedException()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public CRCCheckFailedException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public CRCCheckFailedException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected CRCCheckFailedException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
2878
常用工具集/Utility/Network/Modbus/EasyModbus/ModbusClient.cs
Normal file
2878
常用工具集/Utility/Network/Modbus/EasyModbus/ModbusClient.cs
Normal file
File diff suppressed because it is too large
Load Diff
2277
常用工具集/Utility/Network/Modbus/EasyModbus/ModbusServer.cs
Normal file
2277
常用工具集/Utility/Network/Modbus/EasyModbus/ModbusServer.cs
Normal file
File diff suppressed because it is too large
Load Diff
120
常用工具集/Utility/Network/Modbus/EasyModbus/StoreLogData.cs
Normal file
120
常用工具集/Utility/Network/Modbus/EasyModbus/StoreLogData.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
Copyright (c) 2018-2020 Rossmann-Engineering
|
||||
Permission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction,
|
||||
including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission
|
||||
notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace EasyModbus
|
||||
{
|
||||
/// <summary>
|
||||
/// Store Log-Data in a File
|
||||
/// </summary>
|
||||
public sealed class StoreLogData
|
||||
{
|
||||
private String filename = null;
|
||||
private static volatile StoreLogData instance;
|
||||
private static object syncObject = new Object();
|
||||
|
||||
/// <summary>
|
||||
/// Private constructor; Ensures the access of the class only via "instance"
|
||||
/// </summary>
|
||||
private StoreLogData()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the instance of the class (singleton)
|
||||
/// </summary>
|
||||
/// <returns>instance (Singleton)</returns>
|
||||
public static StoreLogData Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
lock (syncObject)
|
||||
{
|
||||
if (instance == null)
|
||||
instance = new StoreLogData();
|
||||
}
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Store message in Log-File
|
||||
/// </summary>
|
||||
/// <param name="message">Message to append to the Log-File</param>
|
||||
public void Store(String message)
|
||||
{
|
||||
if (this.filename == null)
|
||||
return;
|
||||
|
||||
using (System.IO.StreamWriter file =
|
||||
new System.IO.StreamWriter(Filename, true))
|
||||
{
|
||||
file.WriteLine(message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Store message in Log-File including Timestamp
|
||||
/// </summary>
|
||||
/// <param name="message">Message to append to the Log-File</param>
|
||||
/// <param name="timestamp">Timestamp to add to the same Row</param>
|
||||
public void Store(String message, DateTime timestamp)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (System.IO.StreamWriter file =
|
||||
new System.IO.StreamWriter(Filename, true))
|
||||
{
|
||||
file.WriteLine(timestamp.ToString("dd.MM.yyyy H:mm:ss.ff ") + message);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets the Filename to Store Strings in a File
|
||||
/// </summary>
|
||||
public string Filename
|
||||
{
|
||||
get
|
||||
{
|
||||
return filename;
|
||||
}
|
||||
set
|
||||
{
|
||||
filename = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user