//==========================================================================================
//
// OpenNETCF.Samples.RAPICSharp
// Copyright (c) 2003, OpenNETCF.org
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the OpenNETCF.org Shared Source License.
//
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the OpenNETCF.org Shared Source License
// for more details.
//
// You should have received a copy of the OpenNETCF.org Shared Source License
// along with this library; if not, email licensing@opennetcf.org to request a copy.
//
// If you wish to contact the OpenNETCF Advisory Board to discuss licensing, please
// email licensing@opennetcf.org.
//
// For general enquiries, email enquiries@opennetcf.org or visit our website at:
// http://www.opennetcf.org
//
//==========================================================================================
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using OpenNETCF.Desktop.Communication;
using System.IO;
namespace OpenNETCF.Samples
{
///
/// Summary description for Form1.
///
public class RAPICSharp : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button connectSync;
private System.Windows.Forms.Button connectAsync;
private System.Windows.Forms.Label connectStatus;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Button disconnect;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button copyTo;
private System.Windows.Forms.Button copyFrom;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.Label status;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.TextBox txtProfilePath;
private System.Windows.Forms.Button btnProfileEnable;
private System.Windows.Forms.Button btnProfileDisable;
private System.Windows.Forms.Button btnProfileStats;
private System.Windows.Forms.Button btnRun;
private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.Button readShortcut;
private System.Windows.Forms.Button createShortcut;
// global RAPI object
RAPI m_rapi;
EventArgs e;
public RAPICSharp()
{
string S;
InitializeComponent();
// create our global RAPI object
m_rapi = new RAPI();
// wire in some ActiveSync events
m_rapi.ActiveSync.Active += new ActiveHandler(ActiveSync_Active);
m_rapi.ActiveSync.Disconnect += new DisconnectHandler(ActiveSync_Disconnect);
m_rapi.ActiveSync.Listen += new ListenHandler(ActiveSync_Listen);
m_rapi.ActiveSync.Answer += new AnswerHandler(ActiveSync_Answer);
//connectAsync_Click(m_rapi);
connectSync_Click(m_rapi,e);
m_rapi.CopyFileToDevice("carcontrol.txt", "\\carcontrol.txt", true);
btnRun_Click(m_rapi,e);
Environment.Exit(0);
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.disconnect = new System.Windows.Forms.Button();
this.connectStatus = new System.Windows.Forms.Label();
this.connectSync = new System.Windows.Forms.Button();
this.connectAsync = new System.Windows.Forms.Button();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.copyFrom = new System.Windows.Forms.Button();
this.copyTo = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.status = new System.Windows.Forms.Label();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.btnRun = new System.Windows.Forms.Button();
this.btnProfileStats = new System.Windows.Forms.Button();
this.btnProfileDisable = new System.Windows.Forms.Button();
this.btnProfileEnable = new System.Windows.Forms.Button();
this.txtProfilePath = new System.Windows.Forms.TextBox();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.readShortcut = new System.Windows.Forms.Button();
this.createShortcut = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox4.SuspendLayout();
this.groupBox5.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.disconnect);
this.groupBox1.Controls.Add(this.connectStatus);
this.groupBox1.Controls.Add(this.connectSync);
this.groupBox1.Controls.Add(this.connectAsync);
this.groupBox1.Location = new System.Drawing.Point(8, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(212, 108);
this.groupBox1.TabIndex = 2;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Connect";
//
// disconnect
//
this.disconnect.Location = new System.Drawing.Point(12, 52);
this.disconnect.Name = "disconnect";
this.disconnect.Size = new System.Drawing.Size(192, 24);
this.disconnect.TabIndex = 5;
this.disconnect.Text = "Disconnect";
this.disconnect.Click += new System.EventHandler(this.button1_Click);
//
// connectStatus
//
this.connectStatus.Location = new System.Drawing.Point(12, 84);
this.connectStatus.Name = "connectStatus";
this.connectStatus.Size = new System.Drawing.Size(192, 20);
this.connectStatus.TabIndex = 4;
this.connectStatus.Text = "Not Connected";
this.connectStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// connectSync
//
this.connectSync.Location = new System.Drawing.Point(108, 20);
this.connectSync.Name = "connectSync";
this.connectSync.Size = new System.Drawing.Size(96, 28);
this.connectSync.TabIndex = 3;
this.connectSync.Text = "Synchronous";
this.connectSync.Click += new System.EventHandler(this.connectSync_Click);
//
// connectAsync
//
this.connectAsync.Location = new System.Drawing.Point(12, 20);
this.connectAsync.Name = "connectAsync";
this.connectAsync.Size = new System.Drawing.Size(96, 28);
this.connectAsync.TabIndex = 2;
this.connectAsync.Text = "Asynchronous";
//this.connectAsync.Click += new System.EventHandler(this.connectAsync_Click);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.copyFrom);
this.groupBox2.Controls.Add(this.copyTo);
this.groupBox2.Location = new System.Drawing.Point(8, 116);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(212, 56);
this.groupBox2.TabIndex = 4;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Copy File";
//
// copyFrom
//
this.copyFrom.Location = new System.Drawing.Point(108, 20);
this.copyFrom.Name = "copyFrom";
this.copyFrom.Size = new System.Drawing.Size(88, 28);
this.copyFrom.TabIndex = 5;
this.copyFrom.Text = "From Device";
this.copyFrom.Click += new System.EventHandler(this.copyFrom_Click);
//
// copyTo
//
this.copyTo.Location = new System.Drawing.Point(20, 20);
this.copyTo.Name = "copyTo";
this.copyTo.Size = new System.Drawing.Size(88, 28);
this.copyTo.TabIndex = 4;
this.copyTo.Text = "To Device";
this.copyTo.Click += new System.EventHandler(this.copyTo_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.status);
this.groupBox3.Location = new System.Drawing.Point(224, 4);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(212, 40);
this.groupBox3.TabIndex = 5;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "ActiveSync Status";
//
// status
//
this.status.Location = new System.Drawing.Point(24, 20);
this.status.Name = "status";
this.status.Size = new System.Drawing.Size(168, 16);
this.status.TabIndex = 0;
this.status.Text = "unknown";
//
// groupBox4
//
this.groupBox4.Controls.Add(this.btnRun);
this.groupBox4.Controls.Add(this.btnProfileStats);
this.groupBox4.Controls.Add(this.btnProfileDisable);
this.groupBox4.Controls.Add(this.btnProfileEnable);
this.groupBox4.Controls.Add(this.txtProfilePath);
this.groupBox4.Location = new System.Drawing.Point(224, 48);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(212, 64);
this.groupBox4.TabIndex = 6;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Profile App";
//
// btnRun
//
this.btnRun.Location = new System.Drawing.Point(172, 16);
this.btnRun.Name = "btnRun";
this.btnRun.Size = new System.Drawing.Size(32, 20);
this.btnRun.TabIndex = 4;
this.btnRun.Text = "run";
this.btnRun.Click += new System.EventHandler(this.btnRun_Click);
//
// btnProfileStats
//
this.btnProfileStats.Location = new System.Drawing.Point(140, 40);
this.btnProfileStats.Name = "btnProfileStats";
this.btnProfileStats.Size = new System.Drawing.Size(68, 20);
this.btnProfileStats.TabIndex = 3;
this.btnProfileStats.Text = "get stats";
this.btnProfileStats.Click += new System.EventHandler(this.btnProfileStats_Click);
//
// btnProfileDisable
//
this.btnProfileDisable.Location = new System.Drawing.Point(72, 40);
this.btnProfileDisable.Name = "btnProfileDisable";
this.btnProfileDisable.Size = new System.Drawing.Size(68, 20);
this.btnProfileDisable.TabIndex = 2;
this.btnProfileDisable.Text = "disable";
this.btnProfileDisable.Click += new System.EventHandler(this.btnProfileDisable_Click);
//
// btnProfileEnable
//
this.btnProfileEnable.Location = new System.Drawing.Point(4, 40);
this.btnProfileEnable.Name = "btnProfileEnable";
this.btnProfileEnable.Size = new System.Drawing.Size(68, 20);
this.btnProfileEnable.TabIndex = 1;
this.btnProfileEnable.Text = "enable";
this.btnProfileEnable.Click += new System.EventHandler(this.btnProfileEnable_Click);
//
// txtProfilePath
//
this.txtProfilePath.Location = new System.Drawing.Point(4, 16);
this.txtProfilePath.Name = "txtProfilePath";
this.txtProfilePath.Size = new System.Drawing.Size(164, 20);
this.txtProfilePath.TabIndex = 0;
this.txtProfilePath.Text = "";
//
// groupBox5
//
this.groupBox5.Controls.Add(this.readShortcut);
this.groupBox5.Controls.Add(this.createShortcut);
this.groupBox5.Location = new System.Drawing.Point(224, 116);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(212, 56);
this.groupBox5.TabIndex = 7;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "Shortcut";
//
// readShortcut
//
this.readShortcut.Location = new System.Drawing.Point(108, 20);
this.readShortcut.Name = "readShortcut";
this.readShortcut.Size = new System.Drawing.Size(88, 28);
this.readShortcut.TabIndex = 5;
this.readShortcut.Text = "Read Test";
this.readShortcut.Click += new System.EventHandler(this.readShortcut_Click);
//
// createShortcut
//
this.createShortcut.Location = new System.Drawing.Point(20, 20);
this.createShortcut.Name = "createShortcut";
this.createShortcut.Size = new System.Drawing.Size(88, 28);
this.createShortcut.TabIndex = 4;
this.createShortcut.Text = "Create Test";
this.createShortcut.Click += new System.EventHandler(this.createShortcut_Click);
//
// RAPICSharp
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(440, 177);
this.Controls.Add(this.groupBox5);
this.Controls.Add(this.groupBox4);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Name = "RAPICSharp";
this.Text = "OpenNETCF RAPI Sample";
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox4.ResumeLayout(false);
this.groupBox5.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new RAPICSharp());
}
//private void connectAsync_Click(object sender, System.EventArgs e)
private void connectAsync_Click(object sender)
{
m_rapi.RAPIConnected += new RAPIConnectedHandler(m_rapi_RAPIConnected);
m_rapi.RAPIDisconnected += new RAPIConnectedHandler(m_rapi_RAPIDisconnected);
m_rapi.Connect(false, -1);
}
private void m_rapi_RAPIConnected()
{
connectStatus.Text = "Connected";
connectAsync.Enabled = false;
connectSync.Enabled = false;
}
private void m_rapi_RAPIDisconnected()
{
connectStatus.Text = "Not Connected";
connectAsync.Enabled = true;
connectSync.Enabled = true;
}
private void button1_Click(object sender, System.EventArgs e)
{
m_rapi.Disconnect();
connectStatus.Text = "Not Connected";
connectAsync.Enabled = true;
connectSync.Enabled = true;
}
private void connectSync_Click(object sender, System.EventArgs e)
//private void connectSync_Click(object sender)
{
m_rapi.RAPIConnected += new RAPIConnectedHandler(m_rapi_RAPIConnected);
m_rapi.RAPIDisconnected += new RAPIConnectedHandler(m_rapi_RAPIDisconnected);
m_rapi.Connect(true);
}
private void copyTo_Click(object sender, System.EventArgs e)
{
// make sure we're connected
if(! m_rapi.Connected)
{
MessageBox.Show("Not connected!");
return;
}
// create a local file
byte[] buffer = new byte[14];
for(int c = 0 ; c < buffer.Length - 1 ; c++)
{
buffer[c] = BitConverter.GetBytes(("OpenNETCF.org").Substring(c,1)[0])[0];
}
FileStream fs = File.Create("C:\\rapitest.txt");
fs.Write(buffer, 0, buffer.Length);
fs.Close();
// copy it to the device
m_rapi.CopyFileToDevice("carcontrol.txt", "\\carcontrol.txt", true);
}
private void copyFrom_Click(object sender, System.EventArgs e)
{
// make sure we're connected
if(! m_rapi.Connected)
{
MessageBox.Show("Not connected!");
return;
}
m_rapi.CopyFileFromDevice("C:\\filefromdevice.txt", "\\devicerapifile.txt", true);
StreamReader sr = File.OpenText("C:\\filefromdevice.txt");
MessageBox.Show(sr.ReadToEnd(), "File contents");
}
private void ActiveSync_Active()
{
status.Text = "Connected";
}
private void ActiveSync_Disconnect()
{
status.Text = "Disconnected";
}
private void ActiveSync_Listen()
{
status.Text = "Not connected";
}
private void ActiveSync_Answer()
{
status.Text = "Connecting...";
}
private void btnProfileEnable_Click(object sender, System.EventArgs e)
{
m_rapi.CFPerformanceMonitor.EnableProfiling();
}
private void btnProfileDisable_Click(object sender, System.EventArgs e)
{
m_rapi.CFPerformanceMonitor.DisableProfiling();
}
private void btnProfileStats_Click(object sender, System.EventArgs e)
{
PerformanceStatistics stats = m_rapi.CFPerformanceMonitor.GetCurrentStatistics();
MessageBox.Show("Total stat count: " + stats.Count.ToString());
}
private void btnRun_Click(object sender, System.EventArgs e)
//private void btnRun_Click(object sender)
{
//m_rapi.CreateProcess(txtProfilePath.Text, "");
m_rapi.CreateProcess("serialComm.exe", "");
}
private void createShortcut_Click(object sender, System.EventArgs e)
{
// create a shortcut to the control panel on the desktop
m_rapi.CreateDeviceShortcut("\\Windows\\Desktop\\MyShortcut.lnk", "\\windows\\control.exe");
}
private void readShortcut_Click(object sender, System.EventArgs e)
{
MessageBox.Show(m_rapi.GetDeviceShortcutTarget("\\Windows\\Desktop\\MyShortcut.lnk"));
}
}
}