예제 #1
0
        /// <summary>
        /// 发送供水应急消息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="netType"></param>
        public void SendGSYJMsg(ICar car, string msg, string userName, byte netType = 0)
        {
            /// (car == null || msg == null) return;


            if (car == null || msg == null)
            {
                return;
            }
            string head    = "S01" + "01" + "01" + "!";
            string content = head + userName + '&' + msg + "###";
            int    length  = GbUnicode.GetGB2312Array(content).Length;

            if (length > 896)
            {
                length = 896;
            }

            SendMessage(CommandID.DOWN_MSG_GSYJ, car, new object[] { car.MAC.ToSendString(16), (ushort)length, content.ToSendString(length) });

            //string head = netType + "01" + "01" + "01" + "!";
            //string content = head + userName + '&' + msg + "###";

            //int len = -1;
            //byte[] bs = NetTools.HostToNetworkOrderToBytes(content, -1);
            //len = bs.Length;
            //SendMessage(CommandID.DOWN_MSG_GSYJ, car, new object[] { car.MAC.ToSendString(16), (short)len, bs });
        }
예제 #2
0
        /// <summary>
        /// 转换为网络字节序
        /// </summary>
        /// <returns></returns>
        public static byte[] HostToNetworkOrderToBytes(string _string, int length)
        {
            if (length < -1)
            {
                throw new ArgumentOutOfRangeException(nameof(length), "长度不正确");
            }

            byte[] strBytes = new byte[length > -1 ? length : 0];
            if (string.IsNullOrEmpty(_string))
            {
                return(strBytes);
            }
            byte[] array = GbUnicode.GetGB2312Array(_string);
            if (length > -1)
            {
                int tmplength = array.Length > length ? length : array.Length;
                for (var i = 0; i < tmplength; i++)
                {
                    strBytes[i] = array[i];
                }
                return(strBytes);
            }
            else
            {
                return(array);
            }
        }
예제 #3
0
 /// <summary>
 /// 转换为主机字节序
 /// </summary>
 /// <returns></returns>
 public static string NetworkToHostOrderFromBytesToString(byte[] value, int startIndex, int length)
 {
     if (value == null)
     {
         throw new ArgumentNullException(nameof(value), "数组不能为null");
     }
     if (startIndex < 0)
     {
         throw new ArgumentNullException(nameof(startIndex), "开始索引无效");
     }
     if (length < -1)
     {
         return(string.Empty);
     }
     if (length == -1)
     {//自动查找结尾\0结束
         for (int i = startIndex; i < value.Length; i++)
         {
             byte b = value[i];
             if (b == '\0')
             {
                 length = i + 1 - startIndex;
                 break;
             }
         }
     }
     //string str=Encoding.UTF8.GetString(value, startIndex, length);
     //return str;
     //List<char> charList = new List<char>();
     //for (int i = startIndex; i < startIndex + length; i++)
     //{
     //    charList.Add((char)value[i]);
     //}
     //return new string(charList.ToArray());
     byte[] tmpbs = new byte[length];
     Array.Copy(value, startIndex, tmpbs, 0, length);
     return(GbUnicode.GetUnicodeString(tmpbs));
 }