private void btnRun_Click(object sender, EventArgs e) { outputBox.Clear(); SimCore core = SimCore.GetSimCore(codeBox.Text); var result = core.Run(); if (result != null) { byte[][] bytes = core.GetBytes(); outputBox.Text += "Code: "; for (int i = 0; i < bytes.Length; i++) { for (int j = 0; j < bytes[i].Length; j++) { outputBox.Text += (bytes[i][j].ToString("x2") + " "); } } outputBox.Text += "\n"; if ((int)ptr != -1) { outputBox.Text += "Sending ...\n"; new Thread(new ThreadStart(() => { Report report; int index = 0; List <byte> buf = new List <byte>(); while (index < bytes.Length) { if (buf.Count + bytes[index].Length < BUF_SIZE) { buf.AddRange(bytes[index]); index += 1; if (index >= bytes.Length) { report = new Report(0x55, buf.ToArray()); hid.Write(report); buf.Clear(); break; } } else { report = new Report(0x55, buf.ToArray()); hid.Write(report); Thread.Sleep(500); buf.Clear(); } } })).Start(); } } }
public void RunTest() { const int RUNS = 10; int _numIt = RUNS; var _rnd = new Random(); int _exec = 0; SimCore target = SimCore_Accessor.Instance; // TODO: Initialize to an appropriate value for (int i = 0; i < _numIt; i++) { Event _event = new Event("test", _rnd.NextDouble() * 1000d); // TODO: Initialize to an appropriate value _event.OnEventExecutionPreEdges += (o, e) => { _exec++; }; //target.ScheduleEvent(_event); _event.Schedule(); } // Test edges int _numEvtFrom = RUNS; int _numEvtTo = RUNS; Event _eventTo = new Event("testWithEdge"); // TODO: Initialize to an appropriate value Event _eventFrom = new Event("testWithEdge", _rnd.NextDouble() * 1000d); // TODO: Initialize to an appropriate value Edge _edge = new Edge(_eventFrom, _eventTo); _edge.Distribution = new GenerateExponential(); _eventFrom.OnEventExecutionPostEdges += (o, e) => { _numEvtFrom++; }; _eventTo.OnEventExecutionPostEdges += (o, e) => { _numEvtTo++; }; //target.ScheduleEvent(_eventFrom); _eventFrom.Schedule(); target.Run(); Assert.IsTrue(_exec == _numIt); Assert.IsTrue(_numEvtFrom == _numEvtTo); // Test self edges int _numSelf = 0; Event _eventFromTo = new Event("testWithEdge", 0); // TODO: Initialize to an appropriate value Edge _edgeSelf = new Edge(_eventFromTo, _eventFromTo); _edge.Distribution = new GenerateNormal(20, 0.1); _eventFromTo.OnEventExecutionPreEdges += (o, e) => { _numSelf++; if (_numSelf > RUNS) { ((Event)o).Edges.Clear(); } }; //target.ScheduleEvent(_eventFromTo); _eventFromTo.Schedule(); target.Run(); Assert.IsTrue(_numSelf == RUNS + 1); }