private void UpdateSensorDisplay(Sensors s) { SensorPacketGroup spg = (SensorPacketGroup)sensorGroupList.SelectedItem; sensorTextBox.Clear(); for (int i = 0; i < spg.numItems; i++) { sensorTextBox.AppendText(Sensors.sd[spg.offsetInSensorDesc + i].name + ": " + s.GetValue((Sensors.SensorID)(spg.offsetInSensorDesc + i)) + Environment.NewLine); } // drawing update canvas1.rotateRoomba(s.GetValue(Sensors.SensorID.Angle)); canvas1.moveRoomba(s.GetValue(Sensors.SensorID.Distance)); }
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { //textExpected = true; if (textExpected) { //read data waiting in the buffer string msg = serialPort.ReadExisting(); Log(msg, Color.DarkBlue); //textExpected = false; } else // read binary data { //Thread.Sleep(10); // wait for complete packet WaitForCompletePacket((currentSpg == null) ? 0 : currentSpg.numBytes); Log("Reading " + serialPort.BytesToRead + " bytes" + Environment.NewLine); byte[] buf = new byte[serialPort.BytesToRead]; serialPort.Read(buf, 0, buf.Length); //Log(buf, Color.Chocolate); Sensors s = new Sensors(buf, roomba.lastPacketRequested()); if (s.IsValid()) { Object[] args = new Object[] { s }; try { this.Invoke(UpdateSensorsDelegate, args); } catch (Exception) { //Log("\nException in delegete call\n", Color.Red); } //Log("."); //Log(s.ToString(), Color.Chocolate); } } }