You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

262 lines
7.7 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using HslCommunication.Core.Address;
using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using HslCommunication.Profinet.Siemens;
using PLCCommunication.Common;
namespace PLCCommunication
{
/// <summary>
/// PLC通信接口
/// </summary>
public interface IPLCCommunicationService
{
/// <summary>
/// 是否已连接
/// </summary>
bool isConnected { get; }
#region 同步
/// <summary>
/// 连接PLC长连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
PLCResult Connection(string address, int port = 0);
/// <summary>
/// 关闭连接PLC长连接
/// </summary>
PLCResult ColseConnection();
/// <summary>
/// 读取指定地址的byte[]值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<byte[]> ReadBytes(string address, ushort length);
/// <summary>
/// 读取指定地址的bool值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<bool> ReadBool(string address);
/// <summary>
/// 读取指定地址的byte值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<byte> ReadByte(string address);
/// <summary>
/// 读取指定地址的Int16值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<short> ReadInt16(string address);
/// <summary>
/// 读取指定地址的Int32值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<int> ReadInt32(string address);
/// <summary>
/// 读取指定地址的long值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
PLCResult<long> ReadLong(string address);
/// <summary>
/// 读取指定地址的Float值
/// </summary>
/// <returns></returns>
PLCResult<float> ReadFloat(string address);
/// <summary>
/// 读取指定地址的double值
/// </summary>
/// <returns></returns>
PLCResult<double> ReadDouble(string address);
/// <summary>
/// 写入bool值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, bool value);
/// <summary>
/// 写入byte值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, byte value);
/// <summary>
/// 写入Int16值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, Int16 value);
/// <summary>
/// 写入Int32值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, Int32 value);
/// <summary>
/// 写入float值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, float value);
/// <summary>
/// 写入double值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, double value);
/// <summary>
/// 写入long值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
PLCResult Write(string address, long value);
#endregion
#region 异步
/// <summary>
/// 连接PLC长连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
Task<PLCResult> ConnectionAsync(string address, int port = 0);
/// <summary>
/// 关闭连接PLC长连接
/// </summary>
Task<PLCResult> ColseConnectionAsyn();
/// <summary>
/// 读取指定地址的byte[]值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<byte[]>> ReadBytesAsync(string address, ushort length);
/// <summary>
/// 读取指定地址的bool值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<bool>> ReadBoolAsync(string address);
/// <summary>
/// 读取指定地址的byte值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<byte>> ReadByteAsync(string address);
/// <summary>
/// 读取指定地址的Int16值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<short>> ReadInt16Async(string address);
/// <summary>
/// 读取指定地址的Int32值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<int>> ReadInt32Async(string address);
/// <summary>
/// 读取指定地址的long值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
Task<PLCResult<long>> ReadLongAsync(string address);
/// <summary>
/// 读取指定地址的Float值
/// </summary>
/// <returns></returns>
Task<PLCResult<float>> ReadFloatAsync(string address);
/// <summary>
/// 读取指定地址的double值
/// </summary>
/// <returns></returns>
Task<PLCResult<double>> ReadDoubleAsync(string address);
/// <summary>
/// 写入bool值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, bool value);
/// <summary>
/// 写入byte值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, byte value);
/// <summary>
/// 写入Int16值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, Int16 value);
/// <summary>
/// 写入Int32值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, Int32 value);
/// <summary>
/// 写入float值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, float value);
/// <summary>
/// 写入double值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, double value);
/// <summary>
/// 写入long值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
Task<PLCResult> WriteAsync(string address, long value);
#endregion
}
}