195 lines
8.5 KiB
C#
195 lines
8.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Text;
|
|||
|
using System.Data;
|
|||
|
using ICommLayer;
|
|||
|
using DBFactory;
|
|||
|
namespace SimensSerialPort
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>ɿڷ<C9BF>ʽ<EFBFBD><CABD>ͨѶ<CDA8>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>豸״̬<D7B4><CCAC>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>Richard.Liu
|
|||
|
/// </summary>
|
|||
|
public class CGetDeviceState:IGetDeviceState
|
|||
|
{
|
|||
|
string _commLayerError;
|
|||
|
|
|||
|
public string CommLayerError
|
|||
|
{
|
|||
|
get { return _commLayerError; }
|
|||
|
set { _commLayerError = value; }
|
|||
|
}
|
|||
|
DBOperator dbo = new DBOperator();
|
|||
|
public CGetDeviceState()
|
|||
|
{
|
|||
|
dbo.Open();
|
|||
|
}
|
|||
|
//~CGetDeviceState()
|
|||
|
//{
|
|||
|
// dbo.Close();
|
|||
|
//}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>û<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28><>λ<EFBFBD><CEBB>-><3E><>λ<EFBFBD><CEBB>)
|
|||
|
/// <20><>1<EFBFBD>ֽڣ<D6BD> <20><><EFBFBD>кţ<D0BA><C5A3><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>кż<D0BA>1<EFBFBD><31>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>240(0XF0)<29><>ѭ<EFBFBD><D1AD>ʹ<EFBFBD>á<EFBFBD>
|
|||
|
/// <20><>2<EFBFBD><32>3<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>̶<EFBFBD>
|
|||
|
/// Ϊ<><CEAA>255(0XFF)<29><>255(0XFF)<29><>
|
|||
|
/// <20><>4<EFBFBD>ֽڣ<D6BD> <20><>Ϣ<EFBFBD><CFA2> 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣨<EFBFBD><EAA3A8><EFBFBD>ڶѶ<DAB6><D1B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// 3-<2D><><EFBFBD><EFBFBD><E2BFAA>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>ȣ<EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ֵ-<2D><><EFBFBD><EFBFBD>
|
|||
|
/// <20><>5<EFBFBD>ֽڣ<D6BD> <20>豸<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹滮<C2B9><E6BBAE>
|
|||
|
/// <20><>6<EFBFBD>ֽڣ<D6BD>
|
|||
|
/// <20>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// x<><78><EFBFBD>꣬<EFBFBD><EAA3AC>-<2D>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD>أ<EFBFBD>
|
|||
|
/// 0-<2D><EFBFBD>
|
|||
|
/// 1-<2D>л<EFBFBD>
|
|||
|
/// <20><>7<EFBFBD>ֽڣ<D6BD>y<EFBFBD><79><EFBFBD>꣬<EFBFBD><EAA3AC>-<2D>߶ȷ<DFB6><C8B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// 6<>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BFAA>״̬ʱ<CCAC><CAB1>ʵ<EFBFBD><CAB5>ֵ<EFBFBD><D6B5>6<EFBFBD><36>7<EFBFBD>ֽ<EFBFBD><D6BD>ڶѶ<DAB6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺͱ<C9BA><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʵ<EFBFBD><CAB5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
/// <20><>8-14<31>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
/// </summary>
|
|||
|
/// <param name="DeviceIndex"><3E>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
|
|||
|
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><F3A3ACB7><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>14<31><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>״̬</returns>
|
|||
|
public int[] GetDeviceState(int DeviceIndex, int TaskIndex)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>DeviceIndex,<2C>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ںźͳ<C5BA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
DataSet ds = dbo.ExceSQL("SELECT F_DeviceIndex,F_DeviceKindIndex, F_CommSettings, F_SerialPort FROM T_Base_Device where F_DeviceIndex=" + DeviceIndex);
|
|||
|
DataView dv = ds.Tables[0].DefaultView;
|
|||
|
CSimensSerialPort ssp;
|
|||
|
if (ds.Tables[0].DefaultView.Count > 0)
|
|||
|
{
|
|||
|
|
|||
|
ssp = new CSimensSerialPort(Convert.ToInt16(dv[0]["F_SerialPort"]), Convert.ToString(dv[0]["F_CommSettings"]));
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return null;
|
|||
|
}
|
|||
|
//ds.Dispose();
|
|||
|
|
|||
|
|
|||
|
if (ssp.InitCom() == true)
|
|||
|
{
|
|||
|
byte[] _Senddata = new byte[8];
|
|||
|
int[] _IntData = new int[6];
|
|||
|
byte[] _GetData = ssp.ReadCom(16);
|
|||
|
//CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "ReadCom", _GetData);
|
|||
|
if (_GetData != null)
|
|||
|
{
|
|||
|
|
|||
|
if ((_GetData[5] == DeviceIndex) && ((_GetData[2] * Math.Pow(2, 8) + _GetData[3]) == TaskIndex)
|
|||
|
|| ((_GetData[2] == 255) && (_GetData[3] == 255)))
|
|||
|
{
|
|||
|
byte GXor = _GetData[0];
|
|||
|
for (int i = 1; i <= 14; i++)
|
|||
|
{
|
|||
|
GXor = Convert.ToByte(Convert.ToInt16(GXor) ^ Convert.ToInt16(_GetData[i]));
|
|||
|
}
|
|||
|
if (GXor == _GetData[15])
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
_Senddata[0] = 8;
|
|||
|
_Senddata[1] = 240;
|
|||
|
_Senddata[2] = _GetData[1];
|
|||
|
_Senddata[3] = Convert.ToByte(TaskIndex >> 8);
|
|||
|
_Senddata[4] = Convert.ToByte(TaskIndex & 255);
|
|||
|
_Senddata[5] = Convert.ToByte(DeviceIndex);
|
|||
|
_Senddata[6] = 170;
|
|||
|
byte SXor = _Senddata[0];
|
|||
|
for (int k = 1; k <= 6; k++)
|
|||
|
{
|
|||
|
SXor = Convert.ToByte(Convert.ToInt16(SXor) ^ Convert.ToInt16(_Senddata[k]));
|
|||
|
}
|
|||
|
_Senddata[7] = SXor;
|
|||
|
//CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "WriteCom", _Senddata);
|
|||
|
if (ssp.WriteCom(_Senddata) == true)
|
|||
|
{
|
|||
|
//for (int j = 0; j <= 15; j++)
|
|||
|
//{
|
|||
|
// _IntData[j] = Convert.ToInt16(_GetData[j]);
|
|||
|
//}
|
|||
|
if ((Convert.ToInt16(dv[0]["F_DeviceKindIndex"]) == 14) ||
|
|||
|
(Convert.ToInt16(dv[0]["F_DeviceKindIndex"]) == 18))//ȷ<>ϰ<EFBFBD>ť,<2C><><EFBFBD><EFBFBD><E2BFAA>
|
|||
|
{
|
|||
|
_IntData[0] = Convert.ToInt16(_GetData[6]);//ʵ<><CAB5>ֵ
|
|||
|
_IntData[1] = Convert.ToInt16(_GetData[4]);//<2F><>Ϣ<EFBFBD><CFA2>3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BFAA>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|||
|
_IntData[2] = TaskIndex;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
_IntData[3] = 0;//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
|||
|
_IntData[4] = 0;//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
|
|||
|
_IntData[5] = DeviceIndex;// <20>豸<EFBFBD><E8B1B8>
|
|||
|
|
|||
|
}
|
|||
|
else if (Convert.ToInt16(dv[0]["F_DeviceKindIndex"]) == 1)//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>
|
|||
|
{
|
|||
|
_IntData[0] = 0;
|
|||
|
_IntData[1] = Convert.ToInt16(_GetData[4]);//<2F><>Ϣ<EFBFBD><CFA2>1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣨<EFBFBD><EAA3A8><EFBFBD>ڶѶ<DAB6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|||
|
_IntData[2] = TaskIndex;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
_IntData[3] = Convert.ToInt16(_GetData[6]);//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
|||
|
_IntData[4] = Convert.ToInt16(_GetData[7]);//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
|
|||
|
_IntData[5] = DeviceIndex;// <20>豸<EFBFBD><E8B1B8>
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD><EFBFBD><EFBFBD>豸
|
|||
|
{
|
|||
|
_IntData[0] = Convert.ToInt16(_GetData[6]);//ʵ<><CAB5>ֵ
|
|||
|
_IntData[1] = Convert.ToInt16(_GetData[4]);//<2F><>Ϣ<EFBFBD><CFA2>1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣨<EFBFBD><EAA3A8><EFBFBD>ڶѶ<DAB6><D1B6><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD><E2BFAA>״̬ <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|||
|
_IntData[2] = TaskIndex;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
_IntData[3] = Convert.ToInt16(_GetData[6]);//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
|||
|
_IntData[4] = Convert.ToInt16(_GetData[7]);//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
|
|||
|
_IntData[5] = DeviceIndex;// <20>豸<EFBFBD><E8B1B8>
|
|||
|
}
|
|||
|
ssp.CloseCom();
|
|||
|
return _IntData;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ssp.CloseCom();
|
|||
|
_commLayerError = this.ToString() + ":GetDeviceState---" + ssp.ComError;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ssp.CloseCom();
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ssp.CloseCom();
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ssp.CloseCom();
|
|||
|
_commLayerError = this.ToString() + ":GetDeviceState---" + ssp.ComError;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ssp.CloseCom();
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch(Exception ex)
|
|||
|
{
|
|||
|
_commLayerError = this.ToString() + ":GetDeviceState---" + ex.Message ;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public string GetStringData(int DeviceIndex, int TaskIndex)
|
|||
|
{
|
|||
|
return "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|