using HalconDotNet; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web; using System.Xml; namespace LB_VisionProcesses.Processes { public class BaseProcess : IProcess { public override bool Run() { DateTime StartTime = DateTime.Now; InitRunParams(); //HOperatorSet.GenEmptyObj(out HObject EmptyObj); //OutputImage = EmptyObj; #region 运行逻辑 #endregion Result = true; RunTime = (DateTime.Now - StartTime).TotalMilliseconds; return false; } /// /// 加载算法 /// /// 完整路径带.json /// public override bool Load(string fullPath = null) { try { if (!fullPath.Contains(".json")) { Debug.WriteLine("文件路径不完整"); return false; } if (fullPath.StartsWith(".\\")) { // 判断原字符串长度是否大于等于2,避免越界 if (fullPath.Length >= 2) { // 替换开头两个字符 fullPath = Application.StartupPath + fullPath.Substring(2); Debug.WriteLine($"修改后的字符串: {fullPath}"); } } if (string.IsNullOrEmpty(fullPath) || fullPath.Trim() == "") { Debug.WriteLine("文件路径不完整"); return false; } // 获取不带文件名的目录路径 string directoryPath = Path.GetDirectoryName(fullPath); strProcessName = Path.GetFileNameWithoutExtension(fullPath); if (!File.Exists(fullPath)) { Debug.WriteLine("文件不存在创建空文件"); Save(directoryPath); return true; } string strJson = string.Empty; using (StreamReader streamReader = new StreamReader(fullPath, Encoding.UTF8)) { strJson = streamReader.ReadToEnd(); streamReader.Close(); } Params = JsonConvert.DeserializeObject(strJson); if (Params == null) return false; Params.FixDeserializedData(); return true; } catch { return false; } } /// /// 保存算法 /// /// 不带.json /// public override bool Save(string filePath = null) { try { if (string.IsNullOrEmpty(filePath) || filePath.Trim() == "") { Debug.WriteLine("文件路径不完整"); return false; } string strJson = string.Empty; var settings = new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, // 自定义缩进(4空格) ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }; strJson = JsonConvert.SerializeObject(Params, settings); //判断文件夹是否存在,防呆输入为文件名称 if (!Directory.Exists(filePath)) { try { Directory.CreateDirectory(filePath); } catch (Exception) { } } File.WriteAllText(filePath + "//" + strProcessName + ".json", strJson, Encoding.UTF8); return true; } catch { return false; } } public override void InitRunParams() { Result = true; Msg = string.Empty; if (Record != null) Record.Dispose(); } public override void Dispose() { return; } public override object Clone() { return MemberwiseClone(); } } public class TVInfo { public string ODF { get; set; } public string ProductName { get; set; } public string ProductCode { get; set; } } public class RootObject4 { public string Guid { get; set; } public string IsSuccess { get; set; } public string Msg { get; set; } public string UpdateUser { get; set; } } public class MaInfo { public string ODF { get; set; } public string BOM { get; set; } public string SCREEN { get; set; } public string SHIPPING { get; set; } public string SIZE { get; set; } public string Model { get; set; } } public class GetWebServer { public static string QueryGetWebService(String URL, String MethodName, Hashtable Pars) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + ParsToString(Pars)); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); return ReadXmlResponse(request.GetResponse()); } /// /// 获得产品信息 /// /// /// /// /// public static string GetTVInfo(String URL, String MethodName, string SN) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + "SN=" + Uri.EscapeDataString(SN)); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); return ReadXmlResponse(request.GetResponse()); } /// /// 获得下一工序代码 /// /// /// /// /// public static string GetNextProcessCode(String URL, String MethodName, string SN) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + "TVSN=" + Uri.EscapeDataString(SN)); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); return ReadXmlResponse(request.GetResponse()); } /// /// 上传条码扫描路线结果 /// /// /// /// /// /// /// /// /// /// /// public static string Scan(String URL, String MethodName, string SN, string LineCode, string PcProcessCode, string Host, string IP, string User, string UserName) { try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName + "?" + "TVSN=" + Uri.EscapeDataString(SN) + "&" + "LineCode=" + LineCode + "&" + "PcProcessCode=" + PcProcessCode + "&" + "Host=" + Host + "&" + "IP=" + IP + "&" + "User=" + User + "&" + "UserName=" + UserName + "&" + "PartStrs=" + ""); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); return ReadXmlResponse(request.GetResponse()); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return ""; } } private static void SetWebRequest(HttpWebRequest request) { request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = 50000; } private static string ReadXmlResponse(WebResponse response) { StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); String retXml = sr.ReadToEnd(); sr.Close(); XmlDocument doc = new XmlDocument(); return retXml; } private static String ParsToString(Hashtable Pars) { StringBuilder sb = new StringBuilder(); foreach (string k in Pars.Keys) { if (sb.Length > 0) { sb.Append("&"); } sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString())); } return sb.ToString(); } public static string PostXml(string url, string SN) { string text = ""; Stream stream = null; string text2 = "" + SN + ""; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = text2.Length; httpWebRequest.ContentType = "text/xml"; httpWebRequest.KeepAlive = false; httpWebRequest.Credentials = CredentialCache.DefaultCredentials; httpWebRequest.Timeout = 7000; Encoding encoding = Encoding.GetEncoding("UTF-8"); byte[] bytes = encoding.GetBytes(text2); try { stream = httpWebRequest.GetRequestStream(); } catch (Exception) { return "INT ERR"; } stream.Write(bytes, 0, text2.Length); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream())) { text = streamReader.ReadToEnd(); streamReader.Close(); } text = text.Substring(0, text.LastIndexOf("}") + 1); text = text.Substring(text.LastIndexOf("{") + 17); RootObject4 rootObject = JsonConvert.DeserializeObject(text); if (rootObject.IsSuccess == "true") { return rootObject.Msg; } return "error" + rootObject.Msg; } } }