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

75 lines
2.7 KiB

using System;
using System.Collections.Generic;
namespace DataService {
public interface IReaderWriter {
byte[] ReadBytes(DeviceAddress address, ushort size);
ItemData<int> ReadInt32(DeviceAddress address);
ItemData<short> ReadInt16(DeviceAddress address);
ItemData<byte> ReadByte(DeviceAddress address);
ItemData<string> ReadString(DeviceAddress address, ushort size);
ItemData<float> ReadFloat(DeviceAddress address);
ItemData<bool> ReadBit(DeviceAddress address);
ItemData<object> ReadValue(DeviceAddress address);
int WriteBytes(DeviceAddress address, byte[] bit);
int WriteBit(DeviceAddress address, bool bit);
int WriteBits(DeviceAddress address, byte bits);
int WriteInt16(DeviceAddress address, short value);
int WriteInt32(DeviceAddress address, int value);
int WriteFloat(DeviceAddress address, float value);
int WriteString(DeviceAddress address, string str);
int WriteValue(DeviceAddress address, object value);
}
public interface ICache : IReaderWriter {
int Size { get; set; }
int ByteCount { get; }
Array Cache { get; }
int GetOffset(DeviceAddress start, DeviceAddress end);
}
public interface IMultiReadWrite {
int Limit { get; }
ItemData<Storage>[] ReadMultiple(DeviceAddress[] addrsArr);
int WriteMultiple(DeviceAddress[] addrArr, object[] buffer);
}
public interface IDriver : IDisposable {
short ID { get; }
string Name { get; }
string ServerName { get; set; } //可以考虑增加一个附加参数,Sever只定义本机名
bool IsClosed { get; }
int TimeOut { get; set; }
IEnumerable<IGroup> Groups { get; }
IDataServer Parent { get; }
bool Connect();
IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0f, bool active = false);
bool RemoveGroup(IGroup group);
event ShutdownRequestEventHandler OnClose;
}
public interface IPLCDriver : IDriver, IReaderWriter {
int PDU { get; }
DeviceAddress GetDeviceAddress(string address);
string GetAddress(DeviceAddress address);
}
public interface IFileDriver : IDriver, IReaderWriter {
string FileName { get; set; }
FileData[] ReadAll(short groupId);
//bool RecieveData(string data);
}
public class ShutdownRequestEventArgs : EventArgs {
public ShutdownRequestEventArgs(string reson) {
shutdownReason = reson;
}
public string shutdownReason;
}
public delegate void ShutdownRequestEventHandler(object sender, ShutdownRequestEventArgs e);
}