12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using FreeRedis;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace WCS.Core
- {
- public class VitrualRedisPLC : IPLCAccessor
- {
- RedisClient redis;
- PLCInfo plcInfo;
- int dbLen = 50000;
- public VitrualRedisPLC(PLCInfo plcInfo, string redisConnStr)
- {
- this.plcInfo = plcInfo;
- redis = new RedisClient(redisConnStr);
- }
- public byte[] ReadBytes(ushort db, ushort address, ushort length)
- {
- var key = $"{plcInfo.IP}-{db}";
- if (!redis.Exists(key))
- {
- redis.SetRange(key, 0, new byte[dbLen]);
- }
- var res = redis.GetRange<byte[]>(key, address, address + length - 1);
- return res;
- }
- public void WriteBytes(ushort db, ushort address, byte[] data)
- {
- var key = $"{plcInfo.IP}-{db}";
- if (!redis.Exists(key))
- {
- redis.SetRange(key, 0, new byte[dbLen]);
- }
- redis.SetRange(key, address, data);
- }
- }
- }
|