645 lines
32 KiB
C#
645 lines
32 KiB
C#
using System;
|
|
using System.CodeDom;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
using System.Runtime.Remoting.Messaging;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using SystemX.Common.Archive;
|
|
using SystemX.Common.Serialization;
|
|
using SystemX.Net.BaseProtocol;
|
|
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
|
|
|
namespace SystemX.Common
|
|
{
|
|
public static partial class XCommons
|
|
{
|
|
public static byte[] SpecialObjectToByteStream(BASE_PROTOCOL SET_PROTOCOL, object refObj)
|
|
{
|
|
byte[] ucGetStreamBytes = new byte[1];
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
int iSize = Marshal.SizeOf(refObj);
|
|
byte[] SendBuffer = SystemXNetSerialization.RawSerialize(refObj, Marshal.SizeOf(refObj));
|
|
|
|
var memoryStream = new MemoryStream(SendBuffer);
|
|
byte[] getSendCompressFileByte = new byte[1];
|
|
getSendCompressFileByte = XDataArchive.CompressDeflateByteToByte(SendBuffer);
|
|
iSize = getSendCompressFileByte.Count();
|
|
|
|
HEADER_PACKET setHeader = new HEADER_PACKET();
|
|
int iHeaderSize = Marshal.SizeOf(setHeader);
|
|
byte[] ucHeaderMake = new byte[iHeaderSize];
|
|
setHeader = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, setHeader.GetType());
|
|
iHeaderSize = Marshal.SizeOf(setHeader);
|
|
|
|
setHeader.usCommand = SET_PROTOCOL.COMMAND;
|
|
setHeader.usSubCommand = SET_PROTOCOL.SUB_COMMAND;
|
|
setHeader.uiOptionCommand = SET_PROTOCOL.OPTION_COMMAND;
|
|
|
|
setHeader.uiHeaderLength = (uint)iHeaderSize;
|
|
setHeader.uiDataLength = (uint)iSize;
|
|
|
|
setHeader.objOptionName[0].Data = "-";
|
|
setHeader.objOptionExtension[0].Data = "-";
|
|
|
|
setHeader.uiSourDataNum = 0;
|
|
setHeader.uiDestDataNum = 0;
|
|
|
|
byte[] SendHeadBuffer = SystemXNetSerialization.RawSerialize(setHeader, Marshal.SizeOf(setHeader));
|
|
|
|
object getPacket = SystemXNetSerialization.SelectPacket(setHeader.uiDataLength);
|
|
if (getPacket == null) throw new Exception("SystemXNetSerialization.SelectPacket Failed.");
|
|
int iBodySize = Marshal.SizeOf(getPacket);
|
|
byte[] ucBodyArray = new byte[iBodySize];
|
|
getPacket = Convert.ChangeType(SystemXNetSerialization.RawDeSerialize(ucBodyArray, getPacket.GetType()), getPacket.GetType());
|
|
Array.Copy(getSendCompressFileByte, (byte[])getPacket.GetType().GetMethod("Data").Invoke(getPacket, null), getSendCompressFileByte.Count());
|
|
|
|
setHeader.uiBodyLength = (uint)iBodySize;
|
|
setHeader.uiPacketLength = (uint)(iHeaderSize + iBodySize);
|
|
|
|
byte[] SendBodyBuffer = SystemXNetSerialization.RawSerialize(getPacket, Marshal.SizeOf(getPacket));
|
|
|
|
ucGetStreamBytes = HeadTailMake(setHeader.uiPacketLength, SendHeadBuffer, SendBodyBuffer);
|
|
|
|
//string strMessage = Encoding.Unicode.GetString(ucGetFileBytes, 0, ucGetFileBytes.Length) + "\r\n";
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : SystemXNetCommons.UserObjectToByteStream]");
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : SystemXNetCommons.UserObjectToByteStream]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
;//Until unused
|
|
}
|
|
|
|
return ucGetStreamBytes;
|
|
}
|
|
public static byte[] SetSimpleResponsPacket(BASE_PROTOCOL SET_PROTOCOL, bool bState)
|
|
{
|
|
byte[] ucGetStreamBytes = new byte[1];
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.SIMPLE_RESPONSE)
|
|
{
|
|
;//
|
|
}
|
|
else if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.RAW_END)
|
|
{
|
|
;//
|
|
}
|
|
else
|
|
return null;
|
|
|
|
var bytes = new byte[1];
|
|
|
|
HEADER_PACKET setHeader = new HEADER_PACKET();
|
|
int iHeaderSize = Marshal.SizeOf(setHeader);
|
|
byte[] ucHeaderMake = new byte[iHeaderSize];
|
|
setHeader = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, setHeader.GetType());
|
|
iHeaderSize = Marshal.SizeOf(setHeader);
|
|
|
|
setHeader.usCommand = SET_PROTOCOL.COMMAND;
|
|
setHeader.usSubCommand = SET_PROTOCOL.SUB_COMMAND;
|
|
setHeader.uiOptionCommand = SET_PROTOCOL.OPTION_COMMAND;
|
|
|
|
setHeader.bResponsState = bState;
|
|
setHeader.usHeader = 1;
|
|
setHeader.uiHeaderLength = (uint)iHeaderSize;
|
|
setHeader.uiDataLength = 512;
|
|
|
|
setHeader.objOptionName[0].Data = "-";
|
|
setHeader.objOptionExtension[0].Data = "-";
|
|
|
|
setHeader.uiSourDataNum = 0;
|
|
setHeader.uiDestDataNum = 0;
|
|
|
|
object getPacket = SystemXNetSerialization.SelectPacket(512);
|
|
if (getPacket == null) throw new Exception("SystemXNetSerialization.SelectPacket Failed.");
|
|
int iBodySize = Marshal.SizeOf(getPacket);
|
|
byte[] ucBodyArray = new byte[iBodySize];
|
|
getPacket = Convert.ChangeType(SystemXNetSerialization.RawDeSerialize(ucBodyArray, getPacket.GetType()), getPacket.GetType());
|
|
|
|
setHeader.uiBodyLength = (uint)iBodySize;
|
|
setHeader.uiPacketLength = (uint)(iHeaderSize + iBodySize);
|
|
|
|
byte[] SendHeadBuffer = SystemXNetSerialization.RawSerialize(setHeader, Marshal.SizeOf(setHeader));
|
|
byte[] SendBodyBuffer = SystemXNetSerialization.RawSerialize(getPacket, Marshal.SizeOf(getPacket));
|
|
|
|
ucGetStreamBytes = HeadTailMake(setHeader.uiPacketLength, SendHeadBuffer, SendBodyBuffer);
|
|
|
|
//string strMessage = Encoding.Unicode.GetString(ucGetFileBytes, 0, ucGetFileBytes.Length) + "\r\n";
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : SystemXNetCommons.SimpleObjectToByteStream]");
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : SystemXNetCommons.SimpleObjectToByteStream]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
;//Until unused
|
|
}
|
|
|
|
return ucGetStreamBytes;
|
|
}
|
|
public static byte[] ObjectToByteStream(BASE_PROTOCOL SET_PROTOCOL, object refObj, CP_PACKET? getCPPacket = null,
|
|
ushort usPalletIndex = 0, int iRecordsAffected = 1, bool bHasRows = true, int iFieldCount = 1, params string[] strParameters)
|
|
{
|
|
byte[] ucGetStreamBytes = new byte[1];
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
string refObjGetPos = string.Empty;
|
|
|
|
string strGetFileName = string.Empty;
|
|
string strGetExtension = string.Empty;
|
|
|
|
MemoryStream ms = null;
|
|
|
|
//
|
|
SqlDataReader sqlReader = null;
|
|
|
|
DataSet ds = new DataSet();
|
|
DataTable dt = new DataTable();
|
|
|
|
bool bCheckPos = true;
|
|
bool bResponsSetState = true;
|
|
if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.FILE_TRANSFER)
|
|
{
|
|
if (refObj is MemoryStream)
|
|
{
|
|
ms = (MemoryStream)refObj;
|
|
|
|
if (ms == null)
|
|
{
|
|
bCheckPos = false;
|
|
|
|
//throw new Exception("MemoryStream not initialize.. " + refObjGetPos);
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"MemoryStream not initialize." + refObjGetPos + " [SystemX.Common : SystemXNetCommons.ObjectToByteStream]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
refObjGetPos = (string)refObj;
|
|
|
|
if (File.Exists(@refObjGetPos) == false)
|
|
{
|
|
bCheckPos = false;
|
|
|
|
//throw new Exception("The file cannot be found. " + refObjGetPos);
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"The file cannot be found." + refObjGetPos + " [SystemX.Common : SystemXNetCommons.ObjectToByteStream]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
else
|
|
{
|
|
strGetFileName = Path.GetFileNameWithoutExtension(@refObjGetPos);
|
|
strGetExtension = Path.GetExtension(@refObjGetPos);
|
|
}
|
|
}
|
|
}
|
|
else if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.DATASET_TRANSEFER)
|
|
{
|
|
if (refObj is SqlDataReader)
|
|
{
|
|
sqlReader = (SqlDataReader)refObj;
|
|
|
|
bResponsSetState = false;
|
|
|
|
if (sqlReader != null)
|
|
{
|
|
if (sqlReader.RecordsAffected > 0)
|
|
bResponsSetState = true;
|
|
else if (sqlReader.HasRows == true)
|
|
bResponsSetState = true;
|
|
else if (sqlReader.FieldCount > 0)
|
|
bResponsSetState = true;
|
|
else
|
|
bResponsSetState = false;
|
|
|
|
dt.Load(sqlReader);
|
|
ds.Tables.Add(dt);
|
|
}
|
|
}
|
|
else if (refObj is DataTable)
|
|
{
|
|
dt = (DataTable)refObj;
|
|
|
|
bResponsSetState = false;
|
|
|
|
if (dt != null)
|
|
{
|
|
if (iRecordsAffected > 0)
|
|
bResponsSetState = true;
|
|
else if (bHasRows == true)
|
|
bResponsSetState = true;
|
|
else if (iFieldCount > 0)
|
|
bResponsSetState = true;
|
|
else
|
|
bResponsSetState = false;
|
|
|
|
ds.Tables.Add(dt);
|
|
}
|
|
}
|
|
else if (refObj is DataSet)
|
|
{
|
|
ds = (DataSet)refObj;
|
|
|
|
bResponsSetState = false;
|
|
|
|
if (ds != null)
|
|
{
|
|
if (iRecordsAffected > 0)
|
|
bResponsSetState = true;
|
|
else if (bHasRows == true)
|
|
bResponsSetState = true;
|
|
else if (iFieldCount > 0)
|
|
bResponsSetState = true;
|
|
else
|
|
bResponsSetState = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
;//
|
|
}
|
|
}
|
|
if (bCheckPos)
|
|
{
|
|
var bytes = new byte[1];
|
|
|
|
if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.FILE_TRANSFER)
|
|
{
|
|
if (ms != null)
|
|
bytes = ms.ToArray();
|
|
else
|
|
bytes = File.ReadAllBytes(@refObjGetPos);
|
|
}
|
|
else if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.DATASET_TRANSEFER)
|
|
bytes = XDataArchive.CompressDatasetToByte(ds);
|
|
|
|
var memoryStream = new MemoryStream(bytes);
|
|
byte[] getSendOrgFileByte = memoryStream.ToArray();
|
|
byte[] getSendCompressFileByte = new byte[1];
|
|
|
|
if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.FILE_TRANSFER)
|
|
getSendCompressFileByte = XDataArchive.CompressDeflateByteToByte(getSendOrgFileByte);
|
|
else if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.DATASET_TRANSEFER)
|
|
getSendCompressFileByte = memoryStream.ToArray();
|
|
|
|
HEADER_PACKET setHeader = new HEADER_PACKET();
|
|
int iHeaderSize = Marshal.SizeOf(setHeader);
|
|
byte[] ucHeaderMake = new byte[iHeaderSize];
|
|
setHeader = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, setHeader.GetType());
|
|
iHeaderSize = Marshal.SizeOf(setHeader);
|
|
|
|
//Various Parameter
|
|
int nParamPos = 0;
|
|
foreach (string strParam in strParameters)
|
|
{
|
|
switch (nParamPos)
|
|
{
|
|
case 0: setHeader.objVarParam1[0].Data = strParam; break;
|
|
case 1: setHeader.objVarParam2[0].Data = strParam; break;
|
|
case 2: setHeader.objVarParam3[0].Data = strParam; break;
|
|
}
|
|
|
|
nParamPos++;
|
|
}
|
|
|
|
setHeader.bResponsState = bResponsSetState;
|
|
|
|
setHeader.usPalletIndex = usPalletIndex;
|
|
|
|
setHeader.usCommand = SET_PROTOCOL.COMMAND;
|
|
setHeader.usSubCommand = SET_PROTOCOL.SUB_COMMAND;
|
|
setHeader.uiOptionCommand = SET_PROTOCOL.OPTION_COMMAND;
|
|
|
|
setHeader.uiHeaderLength = (uint)iHeaderSize;
|
|
setHeader.uiDataLength = (uint)getSendCompressFileByte.Count();
|
|
|
|
setHeader.objOptionName[0].Data = "-";
|
|
setHeader.objOptionExtension[0].Data = "-";
|
|
|
|
if (getCPPacket == null)
|
|
{
|
|
setHeader.objCP_Packet[0].objStationName[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdNo_P[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdNo_C[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objTestType[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objTestCode[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objVersion[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdCode[0].Data = "-";
|
|
setHeader.objCP_Packet[0].uiTestListNo = 0;
|
|
}
|
|
else
|
|
{
|
|
setHeader.objCP_Packet[0].objStationName[0].Data = getCPPacket.Value.objStationName[0].Data;
|
|
setHeader.objCP_Packet[0].objProdNo_P[0].Data = getCPPacket.Value.objProdNo_P[0].Data;
|
|
setHeader.objCP_Packet[0].objProdNo_C[0].Data = getCPPacket.Value.objProdNo_C[0].Data;
|
|
setHeader.objCP_Packet[0].objTestType[0].Data = getCPPacket.Value.objTestType[0].Data;
|
|
setHeader.objCP_Packet[0].objTestCode[0].Data = getCPPacket.Value.objTestCode[0].Data;
|
|
setHeader.objCP_Packet[0].objVersion[0].Data = getCPPacket.Value.objVersion[0].Data;
|
|
setHeader.objCP_Packet[0].objProdCode[0].Data = getCPPacket.Value.objProdCode[0].Data;
|
|
setHeader.objCP_Packet[0].uiTestListNo = getCPPacket.Value.uiTestListNo;
|
|
}
|
|
|
|
if (SET_PROTOCOL.GET_CURRENT_PROTOCOL == BASE_PROTOCOL.PROTOCOL_CODE.FILE_TRANSFER)
|
|
{
|
|
if (strGetFileName != string.Empty)
|
|
{
|
|
setHeader.objOptionName[0].Data = strGetFileName;
|
|
setHeader.objOptionExtension[0].Data = strGetExtension;
|
|
}
|
|
}
|
|
|
|
setHeader.uiSourDataNum = 0;
|
|
setHeader.uiDestDataNum = 0;
|
|
|
|
object getPacket = SystemXNetSerialization.SelectPacket(setHeader.uiDataLength);
|
|
if (getPacket == null) throw new Exception("SystemXNetSerialization.SelectPacket Failed.");
|
|
int iBodySize = Marshal.SizeOf(getPacket);
|
|
byte[] ucBodyArray = new byte[iBodySize];
|
|
getPacket = Convert.ChangeType(SystemXNetSerialization.RawDeSerialize(ucBodyArray, getPacket.GetType()), getPacket.GetType());
|
|
Array.Copy(getSendCompressFileByte, (byte[])getPacket.GetType().GetMethod("Data").Invoke(getPacket, null), getSendCompressFileByte.Count());
|
|
|
|
setHeader.uiBodyLength = (uint)iBodySize;
|
|
setHeader.uiPacketLength = (uint)(iHeaderSize + iBodySize);
|
|
|
|
byte[] SendHeadBuffer = SystemXNetSerialization.RawSerialize(setHeader, Marshal.SizeOf(setHeader));
|
|
|
|
byte[] SendBodyBuffer = SystemXNetSerialization.RawSerialize(getPacket, Marshal.SizeOf(getPacket));
|
|
|
|
ucGetStreamBytes = HeadTailMake(setHeader.uiPacketLength, SendHeadBuffer, SendBodyBuffer);
|
|
|
|
//string strMessage = Encoding.Unicode.GetString(ucGetFileBytes, 0, ucGetFileBytes.Length) + "\r\n";
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : SystemXNetCommons.ObjectToByteStream]");
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : SystemXNetCommons.ObjectToByteStream]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
;//Until unused
|
|
}
|
|
|
|
return ucGetStreamBytes;
|
|
}
|
|
public static List<byte[]> ObjectToByteStreamList(BASE_PROTOCOL SET_PROTOCOL, object refObj, CP_PACKET? getCPPacket = null,
|
|
ushort usPalletIdx = 0, params string[] strParameters)
|
|
{
|
|
List<byte[]> listStreamRawData = new List<byte[]>();
|
|
|
|
byte[] ucGetStreamBytes = new byte[1];
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
string refObjGetPos = string.Empty;
|
|
|
|
string strGetFileName = string.Empty;
|
|
string strGetExtension = string.Empty;
|
|
|
|
bool bCheckPos = true;
|
|
|
|
// 1 = File, 2 = DataSet
|
|
int iSelectType = 0;
|
|
if (refObj is string)
|
|
{
|
|
refObjGetPos = (string)refObj;
|
|
|
|
if (File.Exists(@refObjGetPos) == false)
|
|
{
|
|
bCheckPos = false;
|
|
|
|
//throw new Exception("The file cannot be found. " + refObjGetPos);
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"The file cannot be found. " + refObjGetPos + " [SystemX.Common : SystemXNetCommons.ObjectToByteStreamList]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
|
|
}
|
|
else
|
|
{
|
|
strGetFileName = Path.GetFileNameWithoutExtension(@refObjGetPos);
|
|
strGetExtension = Path.GetExtension(@refObjGetPos);
|
|
|
|
iSelectType = 1;
|
|
}
|
|
}
|
|
else if (refObj is DataSet)
|
|
{
|
|
strGetFileName = "";
|
|
strGetExtension = "";
|
|
|
|
iSelectType = 2;
|
|
}
|
|
else
|
|
bCheckPos = false;
|
|
|
|
if (bCheckPos)
|
|
{
|
|
var bytes = new byte[1];
|
|
|
|
switch (iSelectType)
|
|
{
|
|
case 1:
|
|
bytes = File.ReadAllBytes(@refObjGetPos);
|
|
break;
|
|
case 2:
|
|
bytes = XDataArchive.CompressDatasetToByte(refObj as DataSet);
|
|
break;
|
|
}
|
|
/*
|
|
try
|
|
{
|
|
Bitmap xBitmap = new Bitmap(@refObjGetPos);
|
|
|
|
using (var stream = new MemoryStream())
|
|
{
|
|
stream.Seek(0, SeekOrigin.Begin);
|
|
xBitmap.Save(stream, xBitmap.RawFormat);
|
|
bytes = stream.ToArray();
|
|
}
|
|
|
|
//ImageConverter _imageConverter = new ImageConverter();
|
|
//bytes = (byte[])_imageConverter.ConvertTo(xBitmap, typeof(byte[]));
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
bytes = File.ReadAllBytes(@refObjGetPos);
|
|
}
|
|
*/
|
|
|
|
var memoryStream = new MemoryStream(bytes);
|
|
//moryStream.Seek(0, SeekOrigin.Begin);
|
|
|
|
//byte[] getSendOrgFileByte = memoryStream.ToArray();
|
|
//byte[] getSendCompressFileByte = new byte[1];
|
|
//getSendCompressFileByte = XNetArchive.CompressGZipByteToByte(getSendOrgFileByte);
|
|
//getSendCompressFileByte = bytes;
|
|
|
|
if (iSelectType == 1)
|
|
{
|
|
byte[] getSendCompressFileByte = XDataArchive.CompressGZipByteToByte(memoryStream.ToArray());
|
|
memoryStream = new MemoryStream(getSendCompressFileByte);
|
|
}
|
|
|
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
|
|
|
/*
|
|
if (memoryStream.Length < SystemXNetSerialization.MAX_PACKET_SIZE)
|
|
{
|
|
//throw new Exception("The file use normal send mode. " + refObjGetPos);
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"The file use normal send mode. " + refObjGetPos + " [SystemX.Common : SystemXNetCommons.ObjectToByteStreamList]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
*/
|
|
|
|
int iFileSize = (int)memoryStream.Length;
|
|
int iRemainSize = (int)memoryStream.Length;
|
|
|
|
uint uiMakeCnt = (uint)(Math.Ceiling((double)((double)iFileSize / (double)SystemXNetSerialization.MAX_PACKET_SIZE)));
|
|
|
|
int iSendPos = 0;
|
|
|
|
for (uint i = 0; i < uiMakeCnt; i++)
|
|
{
|
|
byte[] ucSendData = null;
|
|
|
|
if (iRemainSize >= SystemXNetSerialization.MAX_PACKET_SIZE)
|
|
{
|
|
ucSendData = new byte[SystemXNetSerialization.MAX_PACKET_SIZE];
|
|
|
|
int iRead = memoryStream.Read(ucSendData, 0, SystemXNetSerialization.MAX_PACKET_SIZE);
|
|
|
|
//Array.Copy(getSendCompressFileByte, iSendPos, ucSendData, 0, SystemXNetSerialization.MAX_PACKET_SIZE);
|
|
|
|
iSendPos += SystemXNetSerialization.MAX_PACKET_SIZE;
|
|
iRemainSize -= SystemXNetSerialization.MAX_PACKET_SIZE;
|
|
}
|
|
else
|
|
{
|
|
ucSendData = new byte[iRemainSize];
|
|
|
|
int iRead = memoryStream.Read(ucSendData, 0, iRemainSize);
|
|
|
|
//Array.Copy(getSendCompressFileByte, iSendPos, ucSendData, 0, iRemainSize);
|
|
|
|
iSendPos += iRemainSize;
|
|
iRemainSize -= iRemainSize;
|
|
}
|
|
|
|
HEADER_PACKET setHeader = new HEADER_PACKET();
|
|
int iHeaderSize = Marshal.SizeOf(setHeader);
|
|
byte[] ucHeaderMake = new byte[iHeaderSize];
|
|
setHeader = (HEADER_PACKET)SystemXNetSerialization.RawDeSerialize(ucHeaderMake, setHeader.GetType());
|
|
iHeaderSize = Marshal.SizeOf(setHeader);
|
|
|
|
//Various Parameter
|
|
int nParamPos = 0;
|
|
foreach (string strParam in strParameters)
|
|
{
|
|
switch (nParamPos)
|
|
{
|
|
case 0: setHeader.objVarParam1[0].Data = strParam; break;
|
|
case 1: setHeader.objVarParam2[0].Data = strParam; break;
|
|
case 2: setHeader.objVarParam3[0].Data = strParam; break;
|
|
}
|
|
|
|
nParamPos++;
|
|
}
|
|
|
|
if (iSelectType == 1)
|
|
setHeader.usPalletIndex = usPalletIdx;
|
|
else if (iSelectType == 2)
|
|
setHeader.usPalletIndex = ushort.MaxValue;
|
|
|
|
setHeader.usCommand = SET_PROTOCOL.COMMAND;
|
|
setHeader.usSubCommand = SET_PROTOCOL.SUB_COMMAND;
|
|
setHeader.uiOptionCommand = SET_PROTOCOL.OPTION_COMMAND;
|
|
|
|
setHeader.uiHeaderLength = (uint)iHeaderSize;
|
|
setHeader.uiDataLength = (uint)ucSendData.Count();
|
|
|
|
if (getCPPacket == null)
|
|
{
|
|
setHeader.objCP_Packet[0].objStationName[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdNo_P[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdNo_C[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objTestType[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objTestCode[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objVersion[0].Data = "-";
|
|
setHeader.objCP_Packet[0].objProdCode[0].Data = "-";
|
|
setHeader.objCP_Packet[0].uiTestListNo = 0;
|
|
}
|
|
else
|
|
{
|
|
setHeader.objCP_Packet[0].objStationName[0].Data = getCPPacket.Value.objStationName[0].Data;
|
|
setHeader.objCP_Packet[0].objProdNo_P[0].Data = getCPPacket.Value.objProdNo_P[0].Data;
|
|
setHeader.objCP_Packet[0].objProdNo_C[0].Data = getCPPacket.Value.objProdNo_C[0].Data;
|
|
setHeader.objCP_Packet[0].objTestType[0].Data = getCPPacket.Value.objTestType[0].Data;
|
|
setHeader.objCP_Packet[0].objTestCode[0].Data = getCPPacket.Value.objTestCode[0].Data;
|
|
setHeader.objCP_Packet[0].objVersion[0].Data = getCPPacket.Value.objVersion[0].Data;
|
|
setHeader.objCP_Packet[0].objProdCode[0].Data = getCPPacket.Value.objProdCode[0].Data;
|
|
setHeader.objCP_Packet[0].uiTestListNo = getCPPacket.Value.uiTestListNo;
|
|
}
|
|
|
|
setHeader.objOptionName[0].Data = strGetFileName;
|
|
setHeader.objOptionExtension[0].Data = strGetExtension;
|
|
|
|
setHeader.uiSourDataNum = i + 1;
|
|
setHeader.uiDestDataNum = uiMakeCnt;
|
|
|
|
object getPacket = SystemXNetSerialization.SelectPacket(setHeader.uiDataLength);
|
|
if (getPacket == null) throw new Exception("SystemXNetSerialization.SelectPacket Failed.");
|
|
int iBodySize = Marshal.SizeOf(getPacket);
|
|
byte[] ucBodyArray = new byte[iBodySize];
|
|
getPacket = Convert.ChangeType(SystemXNetSerialization.RawDeSerialize(ucBodyArray, getPacket.GetType()), getPacket.GetType());
|
|
Array.Copy(ucSendData, (byte[])getPacket.GetType().GetMethod("Data").Invoke(getPacket, null), ucSendData.Count());
|
|
|
|
setHeader.uiBodyLength = (uint)iBodySize;
|
|
setHeader.uiPacketLength = (uint)(iHeaderSize + iBodySize);
|
|
|
|
byte[] SendHeadBuffer = SystemXNetSerialization.RawSerialize(setHeader, Marshal.SizeOf(setHeader));
|
|
|
|
byte[] SendBodyBuffer = SystemXNetSerialization.RawSerialize(getPacket, Marshal.SizeOf(getPacket));
|
|
|
|
ucGetStreamBytes = HeadTailMake(setHeader.uiPacketLength, SendHeadBuffer, SendBodyBuffer);
|
|
|
|
listStreamRawData.Add(ucGetStreamBytes);
|
|
}
|
|
//string strMessage = Encoding.Unicode.GetString(ucGetFileBytes, 0, ucGetFileBytes.Length) + "\r\n";
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw new CommonPacketMarshalException("General packet marshalling failed.[SystemX.Common : COMMON.ObjectToByteStreamList]");
|
|
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : COMMON.ObjectToByteStreamList]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
;//Until unused
|
|
}
|
|
|
|
return listStreamRawData;
|
|
}
|
|
}
|
|
}
|