示例#1
0
        protected override uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.IsProperty("MessageContent"))
            {
                //Field.ProAttribute.Length = (int)this.m_nSMMessageLength;
                if (m_nSMMessageLength <= 0)
                {
                    m_sMessageContent         = "";
                    Field.ProAttribute.Length = 0;
                }
                else
                {
                    byte[] buf = new byte[m_nSMMessageLength];
                    Array.Copy(Pack, Offset, buf, 0, m_nSMMessageLength);

                    if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                    {
                        m_sMessageContent = Encoding.BigEndianUnicode.GetString(buf, 0, buf.Length);
                    }
                    else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                    {
                        m_sMessageContent = Encoding.GetEncoding("gb2312").GetString(buf, 0, buf.Length);
                    }
                    else
                    {
                        m_sMessageContent = Encoding.ASCII.GetString(buf, 0, buf.Length);
                    }
                    Field.ProAttribute.Length = (int)m_nSMMessageLength;
                }
                Field.Build();
                return((uint)Field.ProAttribute.Length);
            }
            return(base.PackToField(Field, Pack, Offset));
        }
示例#2
0
        protected override uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.IsProperty("SMMessageLength"))
            {
                if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                {
                    m_nSMMessageLength = (uint)Encoding.BigEndianUnicode.GetByteCount(m_sMessageContent);
                }
                else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                {
                    m_nSMMessageLength = (uint)Encoding.GetEncoding("gb2312").GetByteCount(m_sMessageContent);
                }
                else
                {
                    m_nSMMessageLength = (uint)Encoding.ASCII.GetByteCount(m_sMessageContent);
                }
                Field.ProInfo.SetValue(this, m_nSMMessageLength, null);
                Field.Build();
            }
            else if (Field.IsProperty("MessageContent"))
            {
                //Field.ProAttribute.Length = (int)(System.Text.Encoding.Default.GetByteCount(null == m_sMessageContent ? "" : m_sMessageContent));
                byte[] buf;
                if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                {
                    buf = Encoding.BigEndianUnicode.GetBytes(m_sMessageContent);
                }
                else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                {
                    buf = Encoding.GetEncoding("gb2312").GetBytes(m_sMessageContent);
                }
                else
                {
                    buf = Encoding.ASCII.GetBytes(m_sMessageContent);
                }
                Array.Copy(buf, 0, Pack, Offset, buf.Length);
                Field.ProAttribute.Length = buf.Length;

                return((uint)buf.Length);
            }
            else if (Field.IsProperty("ChargeNumber"))
            {
                if (m_sChargeNumber != null && m_sChargeNumber.StartsWith("0000") == false &&
                    m_sChargeNumber.Length > 0 && m_sChargeNumber.StartsWith("86") == false)
                {
                    m_sChargeNumber = "86" + m_sChargeNumber;
                }
            }
            else if (Field.IsProperty("UserNumber"))
            {
                if (m_sUserNumber.StartsWith("86") == false)
                {
                    m_sUserNumber = "86" + m_sUserNumber;
                }
            }

            return(base.FieldToPack(Field, Pack, Offset));
        }
示例#3
0
        protected virtual uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            int nLength = Field.ProAttribute.Length;

            if (Field.DataType == SGIP_DataTypes.Uint)
            {
                uint nValue = 0;
                nValue ^= Pack[Offset + 0];
                nValue  = nValue << 8;
                nValue ^= Pack[Offset + 1];
                nValue  = nValue << 8;
                nValue ^= Pack[Offset + 2];
                nValue  = nValue << 8;
                nValue ^= Pack[Offset + 3];

                Field.ProInfo.SetValue(this, nValue, null);
            }
            else if (Field.DataType == SGIP_DataTypes.Byte)
            {
                byte value = Pack[Offset];
                Field.ProInfo.SetValue(this, value, null);
            }
            else
            {
                int    n   = 0;
                byte[] tmp = new byte[nLength];
                Array.Copy(Pack, Offset, tmp, 0, nLength);
                foreach (byte b in tmp)
                {
                    if (b == 0)
                    {
                        break;
                    }
                    n++;
                }
                string sValue = "";
                if (n != 0)
                {
                    byte[] tmp1 = new byte[n];
                    for (int i = 0; i < n && i < tmp.Length; i++)
                    {
                        tmp1[i] = tmp[i];
                    }

                    sValue = System.Text.Encoding.ASCII.GetString(tmp1);
                }
                Field.ProInfo.SetValue(this, sValue, null);
            }

            Field.Build();

            return((uint)nLength);
        }
示例#4
0
        protected virtual uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.DataType == SGIP_DataTypes.Uint)
            {
                byte[] aa     = BitConverter.GetBytes(Field.UIntValue);
                byte[] bArray = new byte[4];
                bArray[3] = (byte)(Field.UIntValue & 0xFF);
                bArray[2] = (byte)((Field.UIntValue >> 8) & 0xFF);
                bArray[1] = (byte)((Field.UIntValue >> 16) & 0xFF);
                bArray[0] = (byte)((Field.UIntValue >> 24) & 0xFF);
                Array.Copy(bArray, 0, Pack, Offset, 4);

                return(4);
            }
            else if (Field.DataType == SGIP_DataTypes.Byte)
            {
                Pack[Offset] = (byte)Field.UIntValue;

                return(1);
            }
            else
            {
                byte[] bStringArray = System.Text.Encoding.ASCII.GetBytes(Field.StringValue);
                for (int i = 0; i < Field.ProAttribute.Length; i++)
                {
                    if (i < bStringArray.Length)
                    {
                        Pack[Offset + i] = bStringArray[i];
                    }
                    else
                    {
                        Pack[Offset + i] = 0;
                    }
                }

                return((uint)Field.ProAttribute.Length);
            }
        }
示例#5
0
        protected virtual uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            int nLength = Field.ProAttribute.Length;
            if (Field.DataType == SGIP_DataTypes.Uint)
            {
                uint nValue = 0;
                nValue ^= Pack[Offset + 0];
                nValue = nValue << 8;
                nValue ^= Pack[Offset + 1];
                nValue = nValue << 8;
                nValue ^= Pack[Offset + 2];
                nValue = nValue << 8;
                nValue ^= Pack[Offset + 3];

                Field.ProInfo.SetValue(this, nValue, null);
            }
            else if (Field.DataType == SGIP_DataTypes.Byte)
            {
                byte value = Pack[Offset];
                Field.ProInfo.SetValue(this, value, null);
            }
            else
            {
                int n = 0;
                byte[] tmp = new byte[nLength];
                Array.Copy(Pack, Offset, tmp, 0, nLength);
                foreach (byte b in tmp)
                {
                    if (b == 0)
                    {
                        break;
                    }
                    n++;
                }
                string sValue = "";
                if (n != 0)
                {
                    byte[] tmp1 = new byte[n];
                    for (int i = 0; i < n && i < tmp.Length; i++)
                    {
                        tmp1[i] = tmp[i];
                    }

                    sValue = System.Text.Encoding.ASCII.GetString(tmp1);
                }
                Field.ProInfo.SetValue(this, sValue, null);
            }

            Field.Build();

            return (uint)nLength;
        }
示例#6
0
        protected virtual uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.DataType == SGIP_DataTypes.Uint)
            {
                byte[] aa = BitConverter.GetBytes(Field.UIntValue);
                byte[] bArray = new byte[4];
                bArray[3] = (byte)(Field.UIntValue & 0xFF);
                bArray[2] = (byte)((Field.UIntValue >> 8) & 0xFF);
                bArray[1] = (byte)((Field.UIntValue >> 16) & 0xFF);
                bArray[0] = (byte)((Field.UIntValue >> 24) & 0xFF);
                Array.Copy(bArray, 0, Pack, Offset, 4);

                return 4;
            }
            else if (Field.DataType == SGIP_DataTypes.Byte)
            {
                Pack[Offset] = (byte)Field.UIntValue;

                return 1;
            }
            else
            {
                byte[] bStringArray = System.Text.Encoding.ASCII.GetBytes(Field.StringValue);
                for (int i = 0; i < Field.ProAttribute.Length; i++)
                {
                    if (i < bStringArray.Length)
                    {
                        Pack[Offset + i] = bStringArray[i];
                    }
                    else
                    {
                        Pack[Offset + i] = 0;
                    }
                }

                return (uint)Field.ProAttribute.Length;
            }
        }
示例#7
0
        protected override uint PackToField(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.IsProperty("MessageContent"))
            {
                //Field.ProAttribute.Length = (int)m_nSMMessageLength;

                byte[] buf = new byte[m_nSMMessageLength];
                Array.Copy(Pack, Offset, buf, 0, m_nSMMessageLength);

                if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                {
                    m_sMessageContent = Encoding.BigEndianUnicode.GetString(buf, 0, buf.Length);
                }
                else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                {
                    m_sMessageContent = Encoding.GetEncoding("gb2312").GetString(buf, 0, buf.Length);
                }
                else
                {
                    m_sMessageContent = Encoding.ASCII.GetString(buf, 0, buf.Length);
                }
                Field.ProAttribute.Length = buf.Length;
                Field.Build();

                return (uint)buf.Length;
            }
            return base.PackToField(Field, Pack, Offset);
        }
示例#8
0
        protected override uint FieldToPack(SGIP_Field Field, byte[] Pack, uint Offset)
        {
            if (Field.IsProperty("SMMessageLength"))
            {
                if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                {
                    m_nSMMessageLength = (uint)Encoding.BigEndianUnicode.GetByteCount(m_sMessageContent);
                }
                else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                {
                    m_nSMMessageLength = (uint)Encoding.GetEncoding("gb2312").GetByteCount(m_sMessageContent);
                }
                else
                {
                    m_nSMMessageLength = (uint)Encoding.ASCII.GetByteCount(m_sMessageContent);
                }
                Field.ProInfo.SetValue(this, m_nSMMessageLength, null);
                Field.Build();
            }
            else if (Field.IsProperty("MessageContent"))
            {
                //Field.ProAttribute.Length = (int)(System.Text.Encoding.Default.GetByteCount(null == m_sMessageContent ? "" : m_sMessageContent));
                byte[] buf;
                if (m_nMessageCoding == SGIP_MessageCodings.Ucs2)
                {
                    buf = Encoding.BigEndianUnicode.GetBytes(m_sMessageContent);
                }
                else if (m_nMessageCoding == SGIP_MessageCodings.Gbk)
                {
                    buf = Encoding.GetEncoding("gb2312").GetBytes(m_sMessageContent);
                }
                else
                {
                    buf = Encoding.ASCII.GetBytes(m_sMessageContent);
                }
                Array.Copy(buf, 0, Pack, Offset, buf.Length);
                Field.ProAttribute.Length = buf.Length;

                return (uint)buf.Length;
            }
            else if (Field.IsProperty("ChargeNumber"))
            {
                if (m_sChargeNumber != null && m_sChargeNumber.StartsWith("0000") == false
                    && m_sChargeNumber.Length > 0 && m_sChargeNumber.StartsWith("86") == false)
                {
                    m_sChargeNumber = "86" + m_sChargeNumber;
                }
            }
            else if (Field.IsProperty("UserNumber"))
            {
                if (m_sUserNumber.StartsWith("86") == false)
                {
                    m_sUserNumber = "86" + m_sUserNumber;
                }
            }

            return base.FieldToPack(Field, Pack, Offset);
        }