/// <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 }); }
/// <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); } }
/// <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)); }