Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 89 → Rev 90

/Microsoft Robotics Studio/MSRS Service/RoboBoardService/RoboBoardForm.cs
0,0 → 1,200
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using winforms = System.Windows.Forms;
using Microsoft.Ccr.Core;
using Microsoft.Dss.ServiceModel.Dssp;
 
 
namespace Robotics.RoboBoard
{
partial class RoboBoardForm : Form
{
RoboBoardEvents _eventsPort;
 
enum PanelState { Idle, GPS, MKSensor, ExtenderBoard, RawData, Control };
public Int16[] MK_analog = new Int16[32];
public string[] Mk_analog_name = new string[32];
public Int16 Control_alt;
public Int16 Control_roll;
public Int16 Control_nick;
public Int16 Control_gier;
public Int16 Control_gas;
 
 
int panelstate = (int)PanelState.Idle;
public RoboBoardForm(RoboBoardEvents EventsPort)
 
{
_eventsPort = EventsPort;
InitializeComponent();
// UpdateStatus("<unknown>");
}
 
public void UpdateStatus(string Status) {
toolStripStatusLabel1.Text = Status;
}
 
/// <summary>
/// posts the instace of the form to the main process
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RoboBoardForm_Load(object sender, EventArgs e)
{
_eventsPort.Post(new OnLoad(this));
}
 
/// <summary>
/// Invalidate the Panel area and trigger a repaint
/// </summary>
/// <param name="Command"></param>
public void MonitorCommand(string Command)
{
MainPanel.Invalidate();
}
 
/// <summary>
/// update data value
/// </summary>
/// <param name="index"></param>
/// <param name="value"></param>
/// <param name="name"></param>
public void MonitorMKSensor(int index, Int16 value, string name)
{
if (index > 31) return;
MK_analog[index] = value;
if (name == "") return;
Mk_analog_name[index] = name;
}
 
public void MonitorMKSensorUpdate()
{
MainPanel.Invalidate();
}
 
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainPanel_Paint(object sender, PaintEventArgs e)
{
int i;
Graphics dc = e.Graphics;
 
Font stdFont = new Font("Arial", 10);
SolidBrush stdBrush = new SolidBrush(Color.Green);
Font sensorFont = new Font("Arial", 8);
SolidBrush sensorBrush = new SolidBrush(Color.Black);
 
switch (panelstate)
{
case (int)PanelState.Control:
dc.DrawString("Control Data Monitor", stdFont, stdBrush, 2, 2);
dc.DrawString("Nick", sensorFont, sensorBrush, 10, 14);
dc.DrawString(Control_nick.ToString(), sensorFont, sensorBrush, 200, 14);
dc.DrawString("Roll", sensorFont, sensorBrush, 10, 24);
dc.DrawString(Control_roll.ToString(), sensorFont, sensorBrush, 200, 24);
dc.DrawString("Gier", sensorFont, sensorBrush, 10, 34);
dc.DrawString(Control_gier.ToString(), sensorFont, sensorBrush, 200, 34);
dc.DrawString("Gas", sensorFont, sensorBrush, 10, 44);
dc.DrawString(Control_gas.ToString(), sensorFont, sensorBrush, 200, 44);
dc.DrawString("Altitute", sensorFont, sensorBrush, 10, 54);
dc.DrawString(Control_alt.ToString(), sensorFont, sensorBrush, 200, 54);
break;
case (int)PanelState.RawData:
dc.DrawString("Raw Data", stdFont, stdBrush, 2, 2);
break;
case (int)PanelState.ExtenderBoard:
dc.DrawString("Extender Board Data", stdFont, stdBrush, 2, 2);
break;
case (int)PanelState.GPS:
dc.DrawString("GPS Data", stdFont, stdBrush, 10, 10);
break;
case (int)PanelState.MKSensor:
dc.DrawString("Mikrokopter Sensors", stdFont, stdBrush, 2, 2);
for (i = 0; i < 32; i++)
{
if (Mk_analog_name[i] == null)
{
dc.DrawString("<unknown>", sensorFont, sensorBrush, 10, (float)(14 + (i * 10)));
}
else
{
dc.DrawString(Mk_analog_name[i], sensorFont, sensorBrush, 10, (float)(14 + (i * 10)));
}
dc.DrawString(MK_analog[i].ToString(), sensorFont, sensorBrush, 200, (float)(14 + (i * 10)));
}
break;
case (int)PanelState.Idle:
dc.DrawString("Select Mode (no mode selected)", stdFont, stdBrush, 2, 2);
break;
default:
dc.DrawString("Select Mode", stdFont, stdBrush, 2, 2);
break;
}
}
 
private void toolStripButton1_Click(object sender, EventArgs e)
{
panelstate = (int)PanelState.GPS;
MainPanel.Invalidate();
}
 
private void toolStripButton2_Click(object sender, EventArgs e)
{
panelstate = (int)PanelState.MKSensor;
MainPanel.Invalidate();
}
 
private void toolStripButton3_Click(object sender, EventArgs e)
{
panelstate = (int)PanelState.Control;
MainPanel.Invalidate();
}
 
}
class RoboBoardEvents:PortSet <OnLoad,OnClosed>
{
}
 
class RoboBoardEvent
{
private RoboBoardForm _rbForm;
 
public RoboBoardForm RoboBoardForm
{
get { return _rbForm; }
set { _rbForm = value; }
}
 
public RoboBoardEvent(RoboBoardForm rbForm)
{
_rbForm = rbForm;
}
}
 
class OnLoad : RoboBoardEvent
{
public OnLoad(RoboBoardForm form)
: base(form)
{
}
}
 
class OnClosed : RoboBoardEvent
{
public OnClosed(RoboBoardForm form)
: base(form)
{
}
}
 
}