SCLS/SSWCS_JXDL(2019)/SimensSerialPort/CSendDeviceOrder.cs

355 lines
13 KiB
C#
Raw Normal View History

2025-05-19 09:45:29 +08:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Threading;
using Microsoft.VisualBasic;
using DBFactory;
using ICommLayer;
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><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>Richard.Liu
/// </summary>
public class CSendDeviceOrder: ISendDeviceOrder
{
string _commLayerError;
public string CommLayerError
{
get { return _commLayerError; }
set { _commLayerError = value; }
}
DBOperator dbo = new DBOperator();
public CSendDeviceOrder()
{
dbo.Open();
}
//~CSendDeviceOrder()
//{
// dbo.Close();
//}
/// <summary>
/// <20><><EFBFBD>ͶѶ<CDB6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="MessageIndex"><3E><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD></param>
/// <param name="TaskIndex"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="Order"><3E>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
///<2F><><EFBFBD><EFBFBD><E6B5A5><EFBFBD>
///1-<2D><>λ
///2-<2D><>ȡ
///3-<2D><><EFBFBD><EFBFBD>
///4-ȡ<><C8A1>
///5-<2D>Ż<EFBFBD>
///6-ȡ<>Ż<EFBFBD>
///˫<><EFBFBD><E6B5A5><EFBFBD>
///1-<2D><>λ
///2-<2D><>ȡ
///3-<2D><><EFBFBD><EFBFBD>
///4-<2D><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
///5-<2D><><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>
///6-<2D><><EFBFBD><EFBFBD>ȡ<EFBFBD>Ż<EFBFBD>
///14-<2D>Ҳ<EFBFBD>ȡ<EFBFBD><C8A1>
///15-<2D>Ҳ<EFBFBD><D2B2>Ż<EFBFBD>
///16-<2D>Ҳ<EFBFBD>ȡ<EFBFBD>Ż<EFBFBD>
///24-˫<><CBAB>ȡ<EFBFBD><C8A1>
///25-˫<><CBAB><EFBFBD>Ż<EFBFBD>
///26-˫<><CBAB>ȡ<EFBFBD>Ż<EFBFBD>
///<2F><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD>
///1-<2D><>λ
///2-<2D><>ȡ
///3-<2D><><EFBFBD><EFBFBD>
///4-<2D><>λȡ<CEBB><C8A1>
///5-<2D><>λ<EFBFBD>Ż<EFBFBD>
///6-<2D><>λȡ<CEBB>Ż<EFBFBD>
///14-Զλȡ<CEBB><C8A1>
///15-Զλ<D4B6>Ż<EFBFBD>
///16-Զλȡ<CEBB>Ż<EFBFBD>
/// <param name="DeviceIndex"><3E><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name="StartX"><3E><>ʼx<CABC><78><EFBFBD><EFBFBD><EAA3AC>-<2D>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="StartY"><3E><>ʼy<CABC><79><EFBFBD><EFBFBD><EAA3AC>-<2D>߶ȷ<DFB6><C8B7><EFBFBD></param>
/// <param name="StartZ"><3E><>ʼz<CABC><7A><EFBFBD><EFBFBD><EAA3AC>-<2D><><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬1-<2D><><EFBFBD>࣬2-<2D>Ҳ<EFBFBD></param>
/// <param name="EndX">Ŀ<><C4BF>x<EFBFBD><78><EFBFBD><EFBFBD><EAA3AC>-<2D>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="EndY">Ŀ<><C4BF>y<EFBFBD><79><EFBFBD><EFBFBD><EAA3AC>-<2D>߶ȷ<DFB6><C8B7><EFBFBD></param>
/// <param name="EndZ">Ŀ<><C4BF>z<EFBFBD><7A><EFBFBD><EFBFBD><EAA3AC>-<2D><><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬1-<2D><><EFBFBD>࣬2-<2D>Ҳ<EFBFBD></param>
/// <returns><3E><><EFBFBD>ͶѶ<CDB6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD></returns>
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ)
{
CSimensSerialPort ssp; DataView dv;
byte[] _Sdata = new byte[16];
try
{
byte WXor = 0;
_Sdata[0] = 16;
_Sdata[1] = Convert.ToByte(MessageIndex);
_Sdata[2] = Convert.ToByte(TaskIndex >> 8);//<2F>߰<EFBFBD>λ
_Sdata[3] = Convert.ToByte(TaskIndex & 255);//<2F>Ͱ<EFBFBD>λ
_Sdata[4] = Convert.ToByte(Order);
_Sdata[5] = Convert.ToByte(DeviceIndex);
//_Sdata[6] = 0;
//_Sdata[7] = 0;
//_Sdata[8] = Convert.ToByte(StartX);
//_Sdata[9] = Convert.ToByte(StartY);
//_Sdata[10] = Convert.ToByte(StartZ);
//_Sdata[11] = Convert.ToByte(EndX);
_Sdata[6] = Convert.ToByte(StartX);
_Sdata[7] = Convert.ToByte(StartY);
_Sdata[8] = Convert.ToByte(StartZ);
_Sdata[9] = Convert.ToByte(EndX);
_Sdata[10] = Convert.ToByte(EndY);
_Sdata[11] = Convert.ToByte(EndZ);
_Sdata[12] = 0;
_Sdata[13] = 0;
_Sdata[14] = 0;
WXor = _Sdata[0];
for (int i = 1; i <= 14; i++)
{
WXor = Convert.ToByte(Convert.ToInt16(WXor) ^ Convert.ToInt16(_Sdata[i]));
}
_Sdata[15] = WXor;
//<2F><><EFBFBD><EFBFBD>DeviceIndex,<2C>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ںźͳ<C5BA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
dv = dbo.ExceSQL("SELECT F_DeviceIndex, F_CommSettings, F_SerialPort FROM T_Base_Device where F_DeviceIndex=" + DeviceIndex).Tables[0].DefaultView;
if (dv.Count > 0)
{
ssp = new CSimensSerialPort(Convert.ToInt16(dv[0]["F_SerialPort"]), Convert.ToString(dv[0]["F_CommSettings"]));
}
else
{
return false;
}
if (ssp.InitCom() == true)
{
//CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "WriteCom", _Sdata);
if (ssp.WriteCom(_Sdata) == true)
{
ssp.CloseCom();
return true;
//Thread.Sleep(300);
//byte[] _GetData = ssp.ReadCom(16);
////CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "ReadCom", _GetData);
//if (_GetData != null)
//{
// if ((_GetData[0] == 8) && (_GetData[1] == 240) && (_GetData[2] == MessageIndex) &&
// ((_GetData[3] * Math.Pow(2, 8) + _GetData[4]) == TaskIndex) &&
// (_GetData[5] == DeviceIndex) && (_GetData[6] == 170))
// {
// byte GXor = 0;
// GXor = _GetData[0];
// for (int i = 1; i <= 6; i++)
// {
// GXor = Convert.ToByte(Convert.ToInt16(GXor) ^ Convert.ToInt16(_GetData[i]));
// }
// if (GXor == _GetData[7])
// {
// ssp.CloseCom();
// return true;
// }
// else
// {
// ssp.CloseCom();
// return false;
// }
// }
// else
// {
// ssp.CloseCom();
// return false;
// }
//}
//else
//{
// ssp.CloseCom();
// _commLayerError = this.ToString() + ":SendDeviceOrder---" + ssp.ComError;
// return false;
//}
}
else
{
ssp.CloseCom();
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ssp.ComError;
return false;
}
}
else
{
ssp.CloseCom();
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ssp.ComError;
return false;
}
}
catch (Exception ex)
{
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ex.Message;
return false;
}
finally
{
ssp = null;
dv = null;
_Sdata = null;
}
}
/// <summary>
/// <20><><EFBFBD>ͶѶ<CDB6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
/// </summary>
/// <param name="MessageIndex"><3E><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD></param>
/// <param name="TaskIndex"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="Order"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
///1-<2D><>λ
///2-<2D><><EFBFBD>ӻ<EFBFBD>
///3-<2D><><EFBFBD>ͻ<EFBFBD>
///4-<2D>ҽӻ<D2BD>
///5-<2D><><EFBFBD>ͻ<EFBFBD>
///6-ֹͣ
///7-<2D>˶<EFBFBD><CBB6><EFBFBD>1#λ<><CEBB>
///8-<2D>˶<EFBFBD><CBB6><EFBFBD>2#λ<><CEBB>
/// <20><>
///<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
///1-<2D><><EFBFBD><EFBFBD><E2A3A8><EFBFBD><EFBFBD><EFBFBD>
/// 2-<2D><><EFBFBD><EFBFBD><E2A3A8><EFBFBD><EFBFBD><EFBFBD>
/// 3-<2D>ͻ<EFBFBD>
/// 4-ֹͣ
/// <param name="DeviceIndex"><3E><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD></returns>
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int ArrowDeviceIndex)
{
byte[] _Sdata = new byte[16]; DataView dv; CSimensSerialPort ssp;
try
{
byte WXor = 0;
_Sdata[0] = 16;
_Sdata[1] = Convert.ToByte(MessageIndex);
_Sdata[2] = Convert.ToByte(TaskIndex >> 8);//<2F>߰<EFBFBD>λ
_Sdata[3] = Convert.ToByte(TaskIndex & 255);//<2F>Ͱ<EFBFBD>λ
_Sdata[4] = Convert.ToByte(Order);
_Sdata[5] = Convert.ToByte(DeviceIndex);
_Sdata[6] = 0;
_Sdata[7] = 0;
_Sdata[8] = 0;
_Sdata[9] = 0;
_Sdata[10] = 0;
_Sdata[11] = 0;
_Sdata[12] = 0;
_Sdata[13] = 0;
_Sdata[14] = 0;
WXor = _Sdata[0];
for (int i = 1; i <= 14; i++)
{
WXor = Convert.ToByte(Convert.ToInt16(WXor) ^ Convert.ToInt16(_Sdata[i]));
}
_Sdata[15] = WXor;
//<2F><><EFBFBD><EFBFBD>DeviceIndex,<2C>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ںźͳ<C5BA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
dv = dbo.ExceSQL("SELECT F_DeviceIndex, F_CommSettings, F_SerialPort FROM T_Base_Device where F_DeviceIndex=" + DeviceIndex).Tables[0].DefaultView;
if (dv.Count > 0)
{
ssp = new CSimensSerialPort(Convert.ToInt16(dv[0]["F_SerialPort"]), Convert.ToString(dv[0]["F_CommSettings"]));
}
else
{
return false;
}
if (ssp.InitCom() == true)
{
//CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "WriteCom", _Sdata);
if (ssp.WriteCom(_Sdata) == true)
{
ssp.CloseCom();
return true;
//Thread.Sleep(300);
//byte[] _GetData = ssp.ReadCom(16);
////CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "ReadCom", _GetData);
//if (_GetData != null)
//{
// if ((_GetData[0] == 8) && (_GetData[1] == 240) && (_GetData[2] == MessageIndex) &&
// ((_GetData[3] * Math.Pow(2, 8) + _GetData[4]) == TaskIndex) &&
// (_GetData[5] == DeviceIndex) && (_GetData[6] == 170))
// {
// byte GXor = 0;
// GXor = _GetData[0];
// for (int i = 1; i <= 6; i++)
// {
// GXor = Convert.ToByte(Convert.ToInt16(GXor) ^ Convert.ToInt16(_GetData[i]));
// }
// if (GXor == _GetData[7])
// {
// ssp.CloseCom();
// return true;
// }
// else
// {
// ssp.CloseCom();
// return false;
// }
// }
// else
// {
// ssp.CloseCom();
// return false;
// }
//}
//else
//{
// ssp.CloseCom();
// return false;
//}
}
else
{
ssp.CloseCom();
return false;
}
}
else
{
ssp.CloseCom();
return false;
}
}
catch (Exception ex)
{
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ex.Message;
return false;
}
finally
{
ssp = null;
dv = null;
_Sdata = null;
}
}
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ, string DoubleFork)
{
return true;
}
public bool SendDeviceOrder(int DeviceIndex, string TobaccoCode, bool HaveFirstProjectCode, bool IfSmallTobacco, int Count)
{
return true;
}
public bool WriteDBData(StringBuilder [] ItemNames, StringBuilder [] ItemValues,int deviceindex)
{
return true;
}
}
}