Esempio n. 1
0
        private void btnWrite_Click(object sender, EventArgs e)
        {
            if (!File.Exists(txtWriteFileName.Text))
            {
                AppendConsoleText($"Error! Cannot read file \"{txtWriteFileName.Text}\"\r\n");
                return;
            }

            byte[] data;

            try
            {
                data = File.ReadAllBytes(txtWriteFileName.Text);
            }
            catch (Exception ex)
            {
                AppendConsoleText($"Error! Cannot read file \"{txtWriteFileName.Text}\". {ex.Message}\r\n");
                return;
            }

            int address = (int)numericWriteStartAddress.Value;

            UpdateBackgroundWorkerActive(true);

            WriteWorker writeWorker = new WriteWorker(_rtd, address, data, true);

            writeWorker.WorkerReportStatus  += AppendConsoleText;
            writeWorker.WriteWorkerFinished += WriteWorkerFinished;
            writeWorker.Start();
        }
Esempio n. 2
0
        private bool Run(CommandProcessorContext context, int writers, int readers, int events)
        {
            context.IsAsync();

            var created = new AutoResetEvent(false);
            var done    = new AutoResetEvent(false);

            var coordinator = new Coordinator(context, Producers, events, created, done);

            coordinator.Start();

            var verificationWorkers = new VerificationWorker[readers];

            for (int i = 0; i < verificationWorkers.Length; i++)
            {
                verificationWorkers[i] = new VerificationWorker(string.Format("verifier {0}", i),
                                                                coordinator,
                                                                context.Client.Options.ReadWindow);
            }
            var writerWrokers = new WriteWorker[writers];

            for (int i = 0; i < writerWrokers.Length; i++)
            {
                writerWrokers[i] = new WriteWorker(string.Format("writer {0}", i),
                                                   coordinator,
                                                   context.Client.Options.WriteWindow);
            }

            foreach (var worker in verificationWorkers)
            {
                worker.Start();
            }
            foreach (var worker in writerWrokers)
            {
                worker.Start();
            }

            created.WaitOne();
            done.WaitOne();

            foreach (var worker in verificationWorkers)
            {
                worker.Stop();
            }
            foreach (var worker in writerWrokers)
            {
                worker.Stop();
            }

            context.Success();
            return(true);
        }