using EasyModbusClient.businessBody;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YG.Device;
namespace IMCS.Device
{
public class DeviceRfid
{
private static DeviceRfid deviceRfid = new DeviceRfid();
public static DeviceRfid Instance { get { return deviceRfid; } }
///
///
///
///
/// rfid需要写入的值
/// FFID写入的地址
/// 写入开关
private void RfidWrite(DeviceList url, string rfidvalue, string rfidaddress, string writeswitchaddress)
{
url.DeviceSend(rfidaddress, rfidvalue.ReturnBtyesWtitString(80));
System.Threading.Thread.Sleep(1000);
short mc = 1;
url.DeviceSend(writeswitchaddress, mc);
System.Threading.Thread.Sleep(1000);
mc = 0;
url.DeviceSend(writeswitchaddress, mc);
}
///
///
///
///
/// 读取的开关
///
///
private string RfidRead(DeviceList device, string readswitchrfidaddress, string startaddress)
{
string value = "";
short mc = 1;
device.DeviceSend(readswitchrfidaddress, mc);
System.Threading.Thread.Sleep(1000);
mc = 0;
device.DeviceSend(readswitchrfidaddress, mc);
System.Threading.Thread.Sleep(1000);
value =Encoding.ASCII.GetString( device.DeviceRead(startaddress,80)).Replace("\0","");
return value;
}
public bool DeviceSend(List rfid, string url)
{
bool result = false;
DeviceList device = YG.DeviceManage.Instance.GetOne(url);
if (rfid.Count > 0 && device != null)
{
rfid.ForEach((m) =>
{
short mc = 0;
if (m.index.Equals(1))
{
RfidWrite(device, m.val, "DB200.1304.0", "DB200.114");
//device.DeviceSend("DB200.372", m.val.ReturnBtyesWtitString(256));
//System.Threading.Thread.Sleep(300);
//mc = 1;
//device.DeviceSend("DB200.114", mc);
//System.Threading.Thread.Sleep(300);
//mc = 0;
//device.DeviceSend("DB200.114", mc);
}
else
{
RfidWrite(device, m.val, "DB200.1384.0", "DB200.630");
//device.DeviceSend("DB200.888", m.val.ReturnBtyesWtitString(256));
//System.Threading.Thread.Sleep(300);
//mc = 1;
//device.DeviceSend("DB200.630", mc);
//System.Threading.Thread.Sleep(300);
//mc = 0;
//device.DeviceSend("DB200.630", mc);
}
result = true;
});
}
return result;
}
public List DeviceRead(string url)
{
List list = new List();
bool result = false;
DeviceList device = YG.DeviceManage.Instance.GetOne(url);
if (device != null)
{
{
list.Add(new RfidDefaultList() { index = 1, val = RfidRead(device, "DB200.112", "DB200.1144.0") });
list.Add(new RfidDefaultList() { index = 2, val = RfidRead(device, "DB200.628", "DB200.1224.0") });
}
}
return list;
}
}
}