private String GetText(WaitObject waitObject) { return(" " + r_manager.GetValue(waitObject.Address) + " Type: " + ((WaitObjectType)waitObject.ObjectType).ToString() + " Handle: " + r_manager.GetValue(waitObject.Handle) + " Name: " + waitObject.Name); }
public static double GetCCT(IDataTable <DataRow> data, string a, string b, WaitObject flag) { int count = data.RowCount; double xyS = 0; double xS = 0; double yS = 0; double x2S = 0; double y2S = 0; double tempx = 0; double tempy = 0; DataRow temprow; flag.Flags = new int[1]; flag.Max = count; for (int i = 0; i < count; i++) { temprow = data[i]; tempx = temprow[a].ConvertToDouble(); tempy = temprow[b].ConvertToDouble(); xyS += tempx * tempy; xS += tempx; yS += tempy; x2S += tempx * tempx; y2S += tempy * tempy; flag.Flags[0]++; } return((xyS * count - xS * yS) / (Math.Pow((x2S * count - xS * xS), 0.5) * Math.Pow((y2S * count - yS * yS), 0.5))); }
public KMeans(CancellationTokenSource canceltoken, IDataTable <DataRow> data, string[] properties, int maxcount, int minclustercount, int maxclustercount, double[] mean, double[] v, WaitObject wt, int initialmode, int methodmode, int maxthread) { this.Data = data; this.Properties = properties; this.MaxCount = maxcount; this.DataCount = data.RowCount; this.ParaCount = properties.Length; this.Distences = new double[this.DataCount, this.ParaCount]; this.MaxClusterCount = maxclustercount; this.MinClusterCount = minclustercount; this.WaitObj = wt; this.InitialMode = initialmode; this.MethodMode = methodmode; this.Mean = mean; this.Stdev = v; this.MaxThreadCount = maxthread; this.Distences = new double[DataCount, DataCount]; this.cancelToken = canceltoken; Parallel.For(0, this.DataCount - 1, new Action <int>((i) => { for (int j = i + 1; j < this.DataCount; j++) { var temp = Assess.GetEdistence(this.Data, i, j, this.Properties, this.ParaCount); this.Distences[i, j] = temp; this.Distences[j, i] = temp; } })); }
private String GetUnownedObjectText(WaitObject unownedObject) { return " " + r_manager.GetValue(unownedObject.Address) + " Type: " + r_manager.GetValue(unownedObject.ObjectType) + " Handle: " + r_manager.GetValue(unownedObject.Handle) + " Name: " + unownedObject.Name; }
private String GetText(WaitObject waitObject) { return " " + r_manager.GetValue(waitObject.Address) + " Type: " + ((WaitObjectType)waitObject.ObjectType).ToString() + " Handle: " + r_manager.GetValue(waitObject.Handle) + " Name: " + waitObject.Name; }
private String GetUnownedObjectText(WaitObject unownedObject) { return(" " + r_manager.GetValue(unownedObject.Address) + " Type: " + r_manager.GetValue(unownedObject.ObjectType) + " Handle: " + r_manager.GetValue(unownedObject.Handle) + " Name: " + unownedObject.Name); }
/// <summary> /// Asynchronously expects <see langword="event"/> until they occur or until canceled <br/> /// <![CDATA[Version: 1.0.0.2]]> <br/> /// <![CDATA[Dependency: WaitObject]]> <br/> /// </summary> /// <param name="value"></param> /// <param name="eventName"></param> /// <param name="cancellationToken"></param> /// <typeparam name="T">EventArgs type</typeparam> /// <exception cref="ArgumentNullException"></exception> /// <exception cref="ArgumentException"></exception> /// <exception cref="InvalidOperationException"></exception> /// <exception cref="OperationCanceledException"></exception> /// <returns></returns> public static async Task <T> WaitEventAsync <T>(this object value, string eventName, CancellationToken cancellationToken = default) { value = value ?? throw new ArgumentNullException(nameof(value)); eventName = eventName ?? throw new ArgumentNullException(nameof(eventName)); var eventInfo = value.GetType().GetEvent(eventName) ?? throw new ArgumentException($"Event \"{eventName}\" is not found"); var taskCompletionSource = new TaskCompletionSource <T>(); using var registration = cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()); var waitObject = new WaitObject <T> { Source = taskCompletionSource, }; var method = waitObject.GetType().GetMethod(nameof(WaitObject <int> .HandleEvent)) ?? throw new InvalidOperationException("HandleEvent method is not found"); // ReSharper disable once ConstantNullCoalescingCondition var eventHandlerType = eventInfo.EventHandlerType ?? throw new InvalidOperationException("Event Handler Type is null"); var delegateObject = Delegate.CreateDelegate(eventHandlerType, waitObject, method, true); try { eventInfo.AddEventHandler(value, delegateObject); return(await taskCompletionSource.Task.ConfigureAwait(false)); } finally { eventInfo.RemoveEventHandler(value, delegateObject); } }
public static double GetCCT(IDataTable<DataRow> data, string a, string b, WaitObject flag) { int count = data.RowCount; double xyS = 0; double xS = 0; double yS = 0; double x2S = 0; double y2S = 0; double tempx = 0; double tempy = 0; DataRow temprow; flag.Flags = new int[1]; flag.Max = count; for (int i = 0; i < count; i++) { temprow = data[i]; tempx = temprow[a].ConvertToDouble(); tempy = temprow[b].ConvertToDouble(); xyS += tempx * tempy; xS += tempx; yS += tempy; x2S += tempx * tempx; y2S += tempy * tempy; flag.Flags[0]++; } return (xyS * count - xS * yS) / (Math.Pow((x2S * count - xS * xS), 0.5) * Math.Pow((y2S * count - yS * yS), 0.5)); }
private static void CallVCoverService_ReadData(WaitObject @object) { Task.Factory.StartNew((o) => { WaitObject obj = (WaitObject)o; m_WaitObjects[obj.Key] = obj; List <FileInfo> files = (List <FileInfo>)obj.Value; try { StringBuilder b = new StringBuilder(); b.Append(obj.Key); b.Append(";"); foreach (FileInfo info in files) { b.Append(info.FullName); b.Append(";"); } NamedPipes.SendMessage("VCOVER", b.ToString()); } catch (Exception ex) { obj.Err = ex; } }, @object); }
public void Invalidate(int wait_ms) { isValid = false; // SignalMeasurement wait = new SignalMeasurement(); // waitThread = new Thread(wait.waitToValidate); // waitThread.Start(wait_ms); WaitObject wait = new WaitObject(wait_ms, this); waitThread = new Thread(wait.waitToValidate); waitThread.Start(); }
internal ThreadStackOwnedNode(ThreadStackNodeManager manager, TreeNode threadStackNode, int index, WaitObject waitObject) { if (threadStackNode == null) throw new ArgumentNullException("r_threadStackNode"); if (manager == null) throw new ArgumentNullException("manager"); r_manager = manager; r_threadStackNode = threadStackNode; r_ownedNode = r_threadStackNode.Nodes.Insert(index, GetText(waitObject)); r_ownedNode.ImageKey = "key.png"; r_ownedNode.SelectedImageKey = r_ownedNode.ImageKey; r_ownedNode.Tag = this; }
public static double[] GetCCTs(IDataTable<DataRow> data, string target, string[] f,WaitObject flag) { int count = data.RowCount; int length = f.Length; double[] fs = new double[length]; double[] xfs = new double[length]; double[] f2s = new double[length]; double[] result = new double[length]; double xS = 0; double x2S = 0; int j = 0; double tempx = 0; double tempy = 0; DataRow temprow; flag.Flags = new int[1]; flag.Max = count * length; for (int i = 0; i < count; i++) { temprow = data[i]; tempx = temprow[target].ConvertToDouble(); xS += tempx; x2S += tempx * tempx; for(j=0;j<length;j++) { tempy = temprow[f[j]].ConvertToDouble(); xfs[j] += tempx * tempy; fs[j] += tempy; f2s[j] += tempy * tempy; flag.Flags[0]++; } } double down; for (j = 0; j < length; j++) { down = (Math.Pow((x2S * count - xS * xS), 0.5) * Math.Pow((f2s[j] * count - fs[j] * fs[j]), 0.5)); if (down != 0) result[j] = (xfs[j] * count - xS * fs[j]) / down; else if (x2S == 0) result[j] = 1; else result[j] = 0; } return result; }
internal UnownedObjectNode(ThreadStackNodeManager manager, TreeNode unownedObjectsNode, WaitObject unownedObject) { if (unownedObjectsNode == null) throw new ArgumentNullException("unownedObjectsNode"); if (manager == null) throw new ArgumentNullException("manager"); if (unownedObject == null) throw new ArgumentNullException("unownedObject"); r_manager = manager; r_unownedObjectsNode = unownedObjectsNode; String text = GetUnownedObjectText(unownedObject); r_unownedObjectNode = r_unownedObjectsNode.Nodes.Add(text); r_unownedObjectNode.ImageKey = "arrow_branch.png"; r_unownedObjectNode.SelectedImageKey = r_unownedObjectNode.ImageKey; r_unownedObjectNode.Tag = this; }
private string NamedPipes_ReceivedData(string data) { WaitObject obj = null; Guid id = Guid.Empty; try { var strs = data.FromStr(); id = Guid.Parse(strs[0]); obj = (WaitObject)m_WaitObjects[id]; if (obj == null) { throw new ApplicationException("Cannot find key " + id); } List <FileInfo> files = (List <FileInfo>)obj.Value; files.AddRange(strs.Skip(1).Where(s => !string.IsNullOrWhiteSpace(s)).ToList().ConvertAll <FileInfo>(s => new FileInfo(s))); return(string.Empty); } catch (Exception ex) { if (obj != null) { obj.Err = ex; } return(string.Empty); } finally { if (obj != null) { obj.Signal(); } m_WaitObjects.Remove(id); } }
private void RefreshOwnedObjects(ThreadStack threadStack) { List <WaitObject> newOwnedNodes = new List <WaitObject>(threadStack.OwnedObjects.Values); int indexDelta = r_waitedNodes.Count; int countOld = r_ownedNodes.Count; int countNew = newOwnedNodes.Count; int to = countNew; if (countNew < countOld) { for (int i = countNew; i < countOld; ++i) { r_ownedNodes[countNew].Remove(); r_ownedNodes.RemoveAt(countNew); } } else if (countOld < countNew) { to = countOld; int index = countOld; for (int i = 0; i < (countNew - countOld); ++i) { WaitObject objectAddress = newOwnedNodes[index]; ThreadStackOwnedNode ownedNode = new ThreadStackOwnedNode(r_manager, r_threadStackNode, index + indexDelta, objectAddress); r_ownedNodes.Add(ownedNode); ++index; } } for (int i = 0; i < to; ++i) { r_ownedNodes[i].Refresh(newOwnedNodes[i]); } }
public void Refresh(WaitObject unownedObject) { String text = GetUnownedObjectText(unownedObject); r_unownedObjectNode.Text = text; }
internal void Refresh(WaitObject waitObject) { r_ownedNode.Text = GetText(waitObject); }
public static DataSet StartCluster(CancellationTokenSource cancelToken, IDataTable <DataRow> data, string[] properties, int maxCount, int minClusterCount, int maxClusterCount, double m, double s, WaitObject wt, int initialmode, int methodmode, int maxthread) { minClusterCount = minClusterCount < 2 ? 2 : minClusterCount; maxClusterCount = maxClusterCount < 2 ? (int)Math.Pow(data.RowCount, 0.5) : maxClusterCount; maxCount = maxCount < 2 ? 20 : maxCount; maxthread = maxthread < 1 ? 1 : maxthread; int paracount = properties.Length; int i, j, k; double[] mean; double[] std; if (!double.IsNaN(m)) { mean = new double[paracount]; for (i = 0; i < paracount; i++) { mean[i] = m; } } else { mean = data.Avg(properties); } if (!double.IsNaN(s)) { std = new double[paracount]; for (i = 0; i < paracount; i++) { std[i] = s; } } else { std = data.Stdev(properties, mean); } var temp = new KMeans(cancelToken, data, properties, maxCount, minClusterCount, maxClusterCount, mean, std, wt, initialmode, methodmode, maxthread); var clusterreport = temp.ParallelStart(); var report = new DataSet(); DataTable overview = new DataTable("OverView"); overview.Columns.Add(new DataColumn("序号", typeof(int))); overview.Columns.Add(new DataColumn("分类数", typeof(int))); overview.Columns.Add(new DataColumn("AvgBWP", typeof(double))); overview.Columns.Add(new DataColumn("耗时", typeof(double))); overview.Columns.Add(new DataColumn("循环次数", typeof(int))); DataTable centers = new DataTable("Centers"); int len = properties.Length; centers.Columns.Add(new DataColumn("序号", typeof(int))); centers.Columns.Add(new DataColumn("类标号", typeof(int))); for (i = 0; i < len; i++) { centers.Columns.Add(new DataColumn(properties[i], typeof(double))); } DataTable results = new DataTable("Results"); results.Columns.Add(new DataColumn("序号", typeof(int))); results.Columns.Add(new DataColumn("行号", typeof(int))); results.Columns.Add(new DataColumn("类标号", typeof(int))); results.Columns.Add(new DataColumn("BWP", typeof(double))); results.Columns.Add(new DataColumn("B", typeof(double))); results.Columns.Add(new DataColumn("W", typeof(double))); report.Tables.Add(overview); report.Tables.Add(centers); report.Tables.Add(results); report.Relations.Add(new DataRelation("OverView_Centers", overview.Columns[0], centers.Columns[0])); int count = clusterreport.HisResult.Count; int datacount = data.RowCount; for (i = 0; i < count; i++) { var tempresult = clusterreport.HisResult[i]; var tempreport = clusterreport.HisReport[i]; overview.Rows.Add(i, tempresult.cCount, tempreport.AvgBWP, tempresult.CostTime, tempresult.LoopCount); for (j = 0; j < tempresult.cCount; j++) { var temprow = centers.NewRow(); temprow[0] = i; temprow[1] = j; for (k = 0; k < len; k++) { temprow[k + 2] = tempresult.Centers[j, k]; } centers.Rows.Add(temprow); } for (j = 0; j < datacount; j++) { results.Rows.Add(i, j, tempresult.ClassNumbers[j], tempreport.BWP[j], tempreport.B[j], tempreport.W[j]); } } return(report); }
internal ThreadStackOwnedNode(ThreadStackNodeManager manager, TreeNode threadStackNode, int index, WaitObject waitObject) { if (threadStackNode == null) { throw new ArgumentNullException("r_threadStackNode"); } if (manager == null) { throw new ArgumentNullException("manager"); } r_manager = manager; r_threadStackNode = threadStackNode; r_ownedNode = r_threadStackNode.Nodes.Insert(index, GetText(waitObject)); r_ownedNode.ImageKey = "key.png"; r_ownedNode.SelectedImageKey = r_ownedNode.ImageKey; r_ownedNode.Tag = this; }
public static double[] GetCCTs(IDataTable <DataRow> data, string target, string[] f, WaitObject flag) { int count = data.RowCount; int length = f.Length; double[] fs = new double[length]; double[] xfs = new double[length]; double[] f2s = new double[length]; double[] result = new double[length]; double xS = 0; double x2S = 0; int j = 0; double tempx = 0; double tempy = 0; DataRow temprow; flag.Flags = new int[1]; flag.Max = count * length; for (int i = 0; i < count; i++) { temprow = data[i]; tempx = temprow[target].ConvertToDouble(); xS += tempx; x2S += tempx * tempx; for (j = 0; j < length; j++) { tempy = temprow[f[j]].ConvertToDouble(); xfs[j] += tempx * tempy; fs[j] += tempy; f2s[j] += tempy * tempy; flag.Flags[0]++; } } double down; for (j = 0; j < length; j++) { down = (Math.Pow((x2S * count - xS * xS), 0.5) * Math.Pow((f2s[j] * count - fs[j] * fs[j]), 0.5)); if (down != 0) { result[j] = (xfs[j] * count - xS * fs[j]) / down; } else if (x2S == 0) { result[j] = 1; } else { result[j] = 0; } } return(result); }
internal UnownedObjectNode(ThreadStackNodeManager manager, TreeNode unownedObjectsNode, WaitObject unownedObject) { if (unownedObjectsNode == null) { throw new ArgumentNullException("unownedObjectsNode"); } if (manager == null) { throw new ArgumentNullException("manager"); } if (unownedObject == null) { throw new ArgumentNullException("unownedObject"); } r_manager = manager; r_unownedObjectsNode = unownedObjectsNode; String text = GetUnownedObjectText(unownedObject); r_unownedObjectNode = r_unownedObjectsNode.Nodes.Add(text); r_unownedObjectNode.ImageKey = "arrow_branch.png"; r_unownedObjectNode.SelectedImageKey = r_unownedObjectNode.ImageKey; r_unownedObjectNode.Tag = this; }
public static void ReadDataCallback(IAsyncResult asyncResult) { BytesRead = Tap.EndRead(asyncResult); WaitObject.Set(); }
public static void ReadDataCallback(IAsyncResult asyncResult) { BytesRead = Tap.EndRead(asyncResult); // Console.WriteLine("Read "+ BytesRead.ToString()); WaitObject.Set(); }
public Action <TaskProcessOrganizer <string> .TaskItem> GetAction() { return(new Action <TaskProcessOrganizer <string> .TaskItem>((o) => { var fullFilePath = o.Item; Bitmap bmp = null; StateManager.VoucherItem item = (StateManager.VoucherItem)StateManager.Default.ProcessItem_Begin(true); try { var info = new FileInfo(fullFilePath); if (info.Exists && !info.IsReadOnly(TRIES)) { Global.IgnoreList.Add(fullFilePath); // ".tif" var ext = Path.GetExtension(info.FullName); if (ext.EqualNoCase(".pdf")) { var helper = new PDFFileHelper(); var finfo = helper.Run(info, item); fullFilePath = (finfo != null) ? finfo.FullName : ""; } bmp = ((Bitmap)Bitmap.FromFile(fullFilePath)); var useCrop = StateSaver.Default.Get <bool>(Strings.CROPIMAGE); if (useCrop) { bmp = bmp.Crop2(); } item.FileInfoList.Add(new FileInfo(fullFilePath)); // Scanned Image item.FullFileName = fullFilePath; StateManager.VoucherItem vitem = (StateManager.VoucherItem)item; #if DRAW_ON_VOUCHER bmp.DrawOnImage((gr) => { var str = string.Format("{0:dd-MM-yyyy hh:mm}", DateTime.Now); ///string user = Program.currentUser.ToString(); var an = StateSaver.Default.Get <AssemblyName>(Strings.VERSION); using (var font = new Font(FontFamily.GenericSansSerif, 10f, FontStyle.Regular)) { gr.DrawString(str, font, Brushes.Black, new PointF(10, 10)); gr.DrawString(an.Name, font, Brushes.Black, new PointF(10, 25)); gr.DrawString(an.Version.ToString(), font, Brushes.Black, new PointF(10, 40)); } }); #endif #if COVER_CCD var coverArea = StateSaver.Default.Get <Rectangle>(Strings.VOUCHERCOVERREGION); if (!coverArea.IsEmpty) { var size = StateSaver.Default.Get <int>(Strings.PIXELSIZE, 5); bmp.Pixellate(coverArea); } #endif string site; int location; if (!VPrinting.Common.CommonTools.ParseSiteCode(info.Name, out site, out location)) { throw new Exception("Wrong sitecode"); } var vinfo = ServiceDataAccess.Instance.FindVoucherTRSBySiteCode(site, location); if (vinfo == null || !vinfo.IsValid) { vinfo = ServiceDataAccess.Instance.FindVoucherPRBySiteCode(site, location); if (!vinfo.IsValid) { throw new Exception("Cannot find voucher by sitecode"); } } item.CountryID = vinfo.IsoId; vitem.RetailerID = vinfo.RetailerId; vitem.VoucherID = vinfo.VoucherId; vitem.Barcode = ""; vitem.SiteCode = string.Concat(site, location); if (item.CountryID == 0) { item.CountryID = MainForm.ms_DefaultCountryId; } #if SAVE_VOUCHER if (!ext.EqualNoCase(".tif")) { bmp.Save(fullFilePath, ImageFormat.Jpeg); } #endif if (item.Thumbnail == null) { item.Thumbnail = bmp.GetThumbnailImage(45, 45, () => false, IntPtr.Zero); } if (StateSaver.Default.Get <bool>(Strings.USE_VCOVER)) { using (WaitObject obj = new WaitObject(item.FileInfoList)) { var ptr = StateSaver.Default.Get <IntPtr>(Strings.VCOVER_FUNC); var time = StateSaver.Default.Get <TimeSpan>(Strings.VCOVER_TIMEOUT, TimeSpan.FromMinutes(10)); var dlg = ptr.GetDelegate <CallVCoverService_ReadDataDelegate>(); dlg.DynamicInvoke(obj); if (!obj.WaitOne(time)) { throw new ApplicationException("VCover timeout"); } if (obj.Err != null) { throw obj.Err; } } } var certificateSigning = StateSaver.Default.Get <bool>(Strings.CERTIFICATE_SIGNING_AVAILABLE); if (certificateSigning) { var crInfo = new PdfCreationInfo() { Title = string.Concat("Voucher ", vitem.VoucherID), Subject = string.Concat("Retailer ", vitem.RetailerID), Author = string.Concat("PTF ", StateSaver.Default.Get <string>(Strings.Certigicate_COUNTRY)), Creator = string.Concat("PTF ", StateSaver.Default.Get <string>(Strings.Certigicate_LOCATION)), }; var signInfo = new PdfSignInfo() { pfxFilePath = StateSaver.Default.Get <string>(Strings.COUNTRY_CERTIFICATE_PATH), pfxKeyPass = StateSaver.Default.Get <string>(Strings.COUNTRY_CERTIFICATE_PASS), DocPass = null, SignImagePath = StateSaver.Default.Get <string>(Strings.PTFLogoFileFullPath), ReasonForSigning = string.Concat("Signing electronic copy of voucher ", vitem.Barcode), Location = StateSaver.Default.Get <string>(Strings.Certigicate_LOCATION) }; var prtGetMetaData = StateSaver.Default.Get <IntPtr>(Strings.Certigicate_METADATA_FUNC); if (prtGetMetaData != IntPtr.Zero) { crInfo.MetaData = signInfo.MetaData = prtGetMetaData.GetDelegate <GetMetaDataDelegate>().DynamicInvoke(this, vinfo.IsoId, 0, vinfo.RetailerId).cast <ArrayList>(); var str = string.Format("{0:dd-MM-yyyy hh:mm}", DateTime.Now); var an = StateSaver.Default.Get <AssemblyName>(Strings.VERSION); crInfo.MetaData.Insert(0, new Tuple <string, string>("", "")); crInfo.MetaData.Insert(0, new Tuple <string, string>("Voucher number", vinfo.VoucherId.ToString())); crInfo.MetaData.Add(new Tuple <string, string>("", "")); crInfo.MetaData.Add(new Tuple <string, string>("Operator", Program.currentUser.Username)); crInfo.MetaData.Add(new Tuple <string, string>("App.name", an.Name)); crInfo.MetaData.Add(new Tuple <string, string>("App.version", an.Version.ToString())); crInfo.MetaData.Add(new Tuple <string, string>("Create at", str)); } var pdfFileName = pdfFileAccess.Instance.CreateSignPdf(bmp, vitem.Barcode, vitem.RetailerID, vitem.VoucherID, crInfo, signInfo); item.FileInfoList.Add(new FileInfo(pdfFileName)); // Signed Image } item.State = StateManager.eState.OK; item.Message = ""; StateManager.Default.CompleteItem(item); } } catch (Exception ex) { item.State = StateManager.eState.Err; item.Message = ex.Message; int count = StateManager.Default.SetItemWithErr(); DelegateHelper.PostShowItemsWithErrCallback(count); DelegateHelper.FireError(this, ex); } finally { bmp.DisposeSf(); DelegateHelper.PostItemScannedCallback(item); try { if (!item.IsSetup) { using (var mngr = new AsyncFormManager <RetailerForm>("Enter voucher details")) { mngr.Result = item; mngr.RunWait(); if (!item.IsSetup) { throw new ApplicationException("Cannot find barcode."); } item.State = StateManager.eState.OK; } } StateManager.Default.AddNewItem(item); } catch (Exception ex0) { item.State = StateManager.eState.Err; item.Message = ex0.Message; DelegateHelper.FireError(this, ex0); } } })); }