using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace HDL_ON
|
{
|
/// <summary>
|
/// ¿ØÖÆÄ¿±êÊý¾Ý
|
/// </summary>
|
public class Target
|
{
|
/// <summary>
|
/// ·¢Ë͵ÄÄ¿±ê
|
/// </summary>
|
public System.Net.IPEndPoint IPEndPoint;
|
|
public Target()
|
{ }
|
|
public Target(System.Net.IPEndPoint ipEndPoint)
|
{
|
this.IPEndPoint = ipEndPoint;
|
}
|
|
/// <summary>
|
/// ¸½¼ÓÊý¾Ý
|
/// </summary>
|
public byte[] AddData;
|
|
/// <summary>
|
/// Ä¿±ê×ÓÍøºÅ
|
/// </summary>
|
public byte SubnetID;
|
|
/// <summary>
|
/// Ä¿±êÉ豸ºÅ
|
/// </summary>
|
public byte DeviceID;
|
|
/// <summary>
|
/// ·¢ËÍÊý¾Ý»º³åÇø
|
/// </summary>
|
public byte [] SendBytes {
|
get {
|
|
if (2 + 9 + AddData.Length + 2 <= 81&&Command!=Command.SuperGatewayAgent) {
|
byte [] bytes = new byte [16 + 9 + AddData.Length + 2];
|
|
string [] ipAddress = "192.168.1.20".Split ('.');//new Net.NetWiFi().IpAddress.ToString().Split('.');
|
|
bytes [0] = byte.Parse (ipAddress [0]);
|
bytes [1] = byte.Parse (ipAddress [1]);
|
bytes [2] = byte.Parse (ipAddress [2]);
|
bytes [3] = byte.Parse (ipAddress [3]);
|
|
bytes [4] = (byte)'H';//H
|
bytes [5] = (byte)'D';//D
|
bytes [6] = (byte)'L';//L
|
bytes [7] = (byte)'M';//M
|
bytes [8] = (byte)'I';//I
|
bytes [9] = (byte)'R';//R
|
bytes [10] = (byte)'A';//A
|
bytes [11] = (byte)'C';//C
|
bytes [12] = (byte)'L';//L
|
bytes [13] = (byte)'E';//E
|
//Òýµ¼Âë2λ,0xAAAA¹Ì¶¨
|
bytes [14] = 0xAA;
|
bytes [15] = 0xAA;
|
|
bytes [16] = (byte)(11 + AddData.Length);//Êý¾Ý°ü³¤¶È
|
bytes [17] = 252; //Ô´×ÓÍøµØÖ· 0-254
|
bytes [18] = 252;//Ô´É豸µØÖ· 0-254
|
//Ô´É豸ÀàÐÍ2λ
|
bytes [19] = (byte)(0xFF);
|
bytes [20] = (byte)(0xFC);
|
//²Ù×÷Âë
|
bytes [21] = (byte)((int)this.Command / 256);
|
bytes [22] = (byte)((int)this.Command % 256);
|
//Ä¿±ê×ÓÍøµØÖ· 0-254
|
bytes [23] = this.SubnetID;
|
//Ä¿±êÉ豸µØÖ· 0-254
|
bytes [24] = this.DeviceID;
|
|
Array.Copy (AddData, 0, bytes, 25, AddData.Length);
|
|
//CRCУÑéλ
|
bytes [bytes.Length - 2] = 0;
|
bytes [bytes.Length - 1] = 0;
|
|
|
CRC.ConCRC (ref bytes, 16, bytes.Length - 2);
|
|
return bytes;
|
} else {
|
byte [] bytes = new byte [16 + 9 + 2 + AddData.Length];
|
|
string [] ipAddress = "192.168.1.20".Split ('.');//new Net.NetWiFi().IpAddress.ToString().Split('.');
|
|
bytes [0] = byte.Parse (ipAddress [0]);
|
bytes [1] = byte.Parse (ipAddress [1]);
|
bytes [2] = byte.Parse (ipAddress [2]);
|
bytes [3] = byte.Parse (ipAddress [3]);
|
|
bytes [4] = (byte)'H';//H
|
bytes [5] = (byte)'D';//D
|
bytes [6] = (byte)'L';//L
|
bytes [7] = (byte)'M';//M
|
bytes [8] = (byte)'I';//I
|
bytes [9] = (byte)'R';//R
|
bytes [10] = (byte)'A';//A
|
bytes [11] = (byte)'C';//C
|
bytes [12] = (byte)'L';//L
|
bytes [13] = (byte)'E';//E
|
//Òýµ¼Âë2λ,0xAAAA¹Ì¶¨
|
bytes [14] = 0xAA;
|
bytes [15] = 0xAA;
|
|
bytes [16] = 0xFF;//Êý¾Ý°ü³¤¶È
|
bytes [17] = 252; //Ô´×ÓÍøµØÖ· 0-254
|
bytes [18] = 252;//Ô´É豸µØÖ· 0-254
|
//Ô´É豸ÀàÐÍ2λ
|
bytes [19] = (byte)(0xFF);
|
bytes [20] = (byte)(0xFC);
|
//²Ù×÷Âë
|
bytes [21] = (byte)((int)this.Command / 256);
|
bytes [22] = (byte)((int)this.Command % 256);
|
//Ä¿±ê×ÓÍøµØÖ· 0-254
|
bytes [23] = this.SubnetID;
|
//Ä¿±êÉ豸µØÖ· 0-254
|
bytes [24] = this.DeviceID;
|
|
//
|
bytes [25] = (byte)(AddData.Length / 256);
|
//
|
bytes [26] = (byte)(AddData.Length % 256);
|
|
Array.Copy (AddData, 0, bytes, 27, AddData.Length);
|
|
return bytes;
|
}
|
}
|
}
|
|
/// <summary>
|
/// ²Ù×÷Âë
|
/// </summary>
|
public Command Command;
|
|
}
|
}
|