using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using Newtonsoft.Json; namespace WebManager { public class WebResult { #region /// /// 数据定义 /// private String webServer_IP = ""; private String webServer_Port = ""; private String webServer_Path = ""; private String Url = ""; private const String Post = "Post"; private const String Content_Type= "Content-Type:application/json"; #endregion /// /// 构造函数 /// /// WebServer的IP地址 /// WebServer的端口号 public WebResult(String ws_ip,String ws_port) { this.webServer_IP = ws_ip; this.webServer_Port = ws_port; //更新Web网址 Update_Url(); } /// /// 更新Web网址 /// private void Update_Url() { this.webServer_Path = "/" + this.webServer_Path; this.Url = "http://" + this.webServer_IP + ":" + this.webServer_Port + this.webServer_Path; } /// /// WebServer的IP地址 /// public String WebServer_IP { //get { return this.webServer_IP; } set { this.webServer_IP = value; } } /// /// WebServer的端口号 /// public String WebServer_Port { //get { return this.webServer_IP; } set { this.webServer_Port = value; } } /// /// 向WebServer请求数据及返回结果 /// /// 请求数据的JSON /// 返回结果的JSON private String RequestString(String postString) { try { String res = HttpRequestHelper.DoRequest(this.Url, Post, Content_Type, postString); return res; } catch { return ""; } } /// /// 计算原始图像偏移角度及方向 /// /// 图片路径 /// json字符串 public void Img_OffsetAngle_Direction(String imagePath, out double degree, out int direction, out int state) { this.webServer_Path = "test1"; Update_Url(); JObject json = new JObject(); json.Add("img_path", imagePath); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret= (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_name") != null && jret.Property("img_name").ToString() != "") { JObject jname = JObject.Parse(jret["img_name"].ToString()); degree = Convert.ToDouble(jname["degree"].ToString()); direction = Convert.ToInt32(jname["direction"].ToString()); state = Convert.ToInt32(jname["state"].ToString()); } else { state = 0; direction = 0; degree = 0; } } /// /// 计算切割点位置 /// /// 图片路径 /// json字符串 public void Img_Cut_Position(String imagePath, out double offsetx, out double offsety, out int state) { this.webServer_Path = "test2"; Update_Url(); JObject json = new JObject(); json.Add("img_path", imagePath); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_name") != null && jret.Property("img_name").ToString() != "") { JObject jname = JObject.Parse(jret["img_name"].ToString()); JArray jlocation = JArray.Parse(jname["location"].ToString()); offsetx = Convert.ToDouble(jlocation[0].ToString()); offsety = Convert.ToDouble(jlocation[1].ToString()); state = Convert.ToInt32(jname["state"].ToString()); } else { state = 0; offsetx = 0; offsety = 0; } } /// /// 是否切割成功验证 /// /// 切割前图像路径 /// 切割后图像路径 /// json字符串 public void Img_Cut_Success(String imageBefore, String imageAfter, out int state) { this.webServer_Path = "test3"; Update_Url(); JObject json = new JObject(); json.Add("img_before_path", imageBefore); json.Add("img_after_path", imageAfter); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("state") != null && jret.Property("state").ToString() != "") { state = Convert.ToInt32(jret["state"].ToString()); } else { state = 0; } } /// /// 计算切割后图像梯形区域上边中心点坐标 /// /// 图片路径 /// json字符串 public void Img_Trapezoid_Top_Center_Position(String imagePath, out double offsetx, out double offsety, out int state) { this.webServer_Path = "test4"; Update_Url(); JObject json = new JObject(); json.Add("img_path", imagePath); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_name") != null && jret.Property("img_name").ToString() != "") { JObject jname = JObject.Parse(jret["img_name"].ToString()); JArray jlocation = JArray.Parse(jname["top_center"].ToString()); offsetx = Convert.ToDouble(jlocation[0].ToString()); offsety = Convert.ToDouble(jlocation[1].ToString()); state = Convert.ToInt32(jname["state"].ToString()); } else { state = 0; offsetx = 0; offsety = 0; } } /// /// 自动对焦 /// /// 一组图片路径 /// json字符串 public String Img_Auto_Focus(List imagePath) { this.webServer_Path = "test5"; Update_Url(); JObject json = new JObject(); for(int i=0;i /// 自动消像散 /// /// 一组图片路径 /// json字符串 public String Img_Auto_Stigmatic(List imagePath) { this.webServer_Path = "test6"; Update_Url(); JObject json = new JObject(); for (int i = 0; i < imagePath.Count; i++) { json.Add("img_path" + i.ToString(), imagePath[i]); } String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_path") != null && jret.Property("img_path").ToString() != "") { return jret["img_path"].ToString(); } else { return ""; } } /// /// 计算切割面区域中心坐标,以及偏移角度及方向 /// /// 图片路径 /// json字符串 public void Img_Center_Position_OffsetAngle_Direction(String imagePath, out double offsetx, out double offsety, out double degree, out int direction, out int state) { this.webServer_Path = "test7"; Update_Url(); JObject json = new JObject(); json.Add("img_path", imagePath); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_name") != null && jret.Property("img_name").ToString() != "") { JObject jname = JObject.Parse(jret["img_name"].ToString()); JArray jlocation = JArray.Parse(jname["center"].ToString()); offsetx = Convert.ToDouble(jlocation[0].ToString()); offsety = Convert.ToDouble(jlocation[1].ToString()); state = Convert.ToInt32(jname["state"].ToString()); degree = Convert.ToDouble(jname["degree"].ToString()); direction = Convert.ToInt32(jname["direction"].ToString()); } else { state = 0; direction = 0; degree = 0; offsetx = 0; offsety = 0; } } /// /// 测量尺寸 /// /// 图片路径 /// 放大倍数 /// 一像素代表**mm/um /// json字符串 public void Img_Measure_Size(String imagePath, String ratio, String size, out int state) { this.webServer_Path = "test8"; Update_Url(); JObject json = new JObject(); json.Add("img_path", imagePath); json.Add("ratio", ratio); json.Add("size", size); String res = RequestString(JsonConvert.SerializeObject(json)); JObject jret = (JObject)JsonConvert.DeserializeObject(res); if (jret != null && jret.Property("img_name") != null && jret.Property("img_name").ToString() != "") { JObject jstate = JObject.Parse(jret["img_name"].ToString()); state = Convert.ToInt32(jstate["state"].ToString()); } else { state = 0; } } } }