using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace EPSON_SOCKET { public class EventArgsCmd : EventArgs { public String CmdType { get; set; } //$表示发送,#表示接收,!表示错误. public String Cmd { get; set; } //命令字,例如,execute,login public String Str { get; set; } public String[] Result { get; set; } public EventArgsCmd(String str) { // 解析返回命令,并清理返回数据内容格式. if (str == null) return; CmdType = str.Substring(0, 1); str = str.Substring(1); str = str.Replace("\"", ""); str = str.Replace(" ", ""); str = str.Replace("\r\n", ""); str = str.Replace(";", ","); //统一所有分隔符为, Str = str; Result = new string[0]; if (!string.IsNullOrEmpty(str)) { Result = str.Split(','); Cmd = Result[0]; } } // 从字符串中解析点位数据. public static Vector3d ParseVector3d(String str) { Vector3d vec3d = new Vector3d(); str = str.Replace("\"", ""); str = str.Replace(" ", ""); str = str.Replace("\r\n", ""); str = str.Replace(";", ","); String[] arr = str.Split(','); for (int i = 0; i < arr.Length; i++) { if (arr[i].IndexOf("=") >= 0) { String[] temp = arr[i].Split('='); if (temp.Length >= 2) { double val = Convert.ToDouble(temp[1]); temp[0] = temp[0].Trim(' '); switch (temp[0]) { case "x": vec3d.X = val; break; case "y": vec3d.Y = val; break; case "z": vec3d.Z = val; break; case "u": vec3d.U = val; break; } } } } //Cleanup: return vec3d; } } }