?? form1.cs
字號:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;
using CyUSB;
using System.Runtime.InteropServices;
namespace Screamer
{
public class Form1 : System.Windows.Forms.Form
{
bool bVista;
private System.Diagnostics.PerformanceCounter CpuCounter;
USBDeviceList usbDevices; CyUSBDevice MyDevice;
CyUSBEndPoint EndPoint;
DateTime t1,t2; TimeSpan elapsed; double XferBytes; long xferRate;
int BufSz;
int QueueSz;
int PPX;
int IsoPktBlockSize;
int Successes;
int Failures;
Thread tListen;
bool bRunning;
// These 2 needed for ListenThread to update the UI
delegate void UpdateUICallback();
UpdateUICallback updateUI;
// These 2 needed to close the app from the ListenThread (exception handling)
delegate void ExceptionCallback();
ExceptionCallback handleException;
public Form1()
{
bVista = (Environment.OSVersion.Version.Major == 6);
// Required for Windows Form Designer support
InitializeComponent();
// Late setup of the CPU monitor - (Bails-out if in Vista)
InitializePeformanceMonitor();
// Hide the CPU load monitor if running in Windows Vista
// Detecting the CPU load is a security violation in Vista
CPULoadBox.Visible = !bVista;
// Setup the callback routine for updating the UI
updateUI = new UpdateUICallback(StatusUpdate);
// Setup the callback routine for NullReference exception handling
handleException = new ExceptionCallback(ThreadException);
// Create the list of USB devices attached to the CyUSB.sys driver.
usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB, new App_PnP_Callback(PnP_Event_Handler)); SetDevice(); }
public void PnP_Event_Handler(IntPtr pnpEvent, IntPtr hRemovedDevice) { if (pnpEvent.Equals(CyConst.DBT_DEVICEREMOVECOMPLETE)) { usbDevices.Remove(hRemovedDevice);
MyDevice = null;
EndPoint = null; SetDevice(); } if (pnpEvent.Equals(CyConst.DBT_DEVICEARRIVAL)) { usbDevices.Add(); SetDevice(); } } private void SetDevice() { USBDevice dev = usbDevices[0x04B4,0x1003];
if (dev != null)
{
MyDevice = (CyUSBDevice)dev;
GetEndpointsOfNode(MyDevice.Tree);
if (EndPointsComboBox.Items.Count > 0)
{
EndPointsComboBox.SelectedIndex = 0;
StartBtn.Enabled = true;
}
}
else
{
StartBtn.Enabled = false;
EndPointsComboBox.Items.Clear();
EndPointsComboBox.Text = "";
}
}
// Recursive routine populates EndPointsComboBox with strings
// representing all the endpoints in the device.
private void GetEndpointsOfNode(TreeNode devTree)
{
foreach (TreeNode node in devTree.Nodes)
{
if (node.Nodes.Count > 0)
GetEndpointsOfNode(node);
else
{
CyUSBEndPoint ept = node.Tag as CyUSBEndPoint;
if (!node.Text.Contains("Control"))
{
CyUSBInterface ifc = node.Parent.Tag as CyUSBInterface;
string s = string.Format("ALT-{0}, {1} Byte, {2}", ifc.bAlternateSetting, ept.MaxPktSize, node.Text);
EndPointsComboBox.Items.Add(s);
}
}
}
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializePeformanceMonitor()
{
// This isn't allowed in Vista.
if (bVista) return;
CpuCounter = new System.Diagnostics.PerformanceCounter();
((System.ComponentModel.ISupportInitialize)(CpuCounter)).BeginInit();
CpuCounter.CategoryName = "Processor";
CpuCounter.CounterName = "% Processor Time";
CpuCounter.InstanceName = "_Total";
((System.ComponentModel.ISupportInitialize)(CpuCounter)).EndInit();
}
#region Windows Form Designer generated code
private System.Windows.Forms.MainMenu mainMenu;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem ExitItem;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.MenuItem AboutItem;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox PpxBox;
private System.Windows.Forms.ComboBox QueueBox;
private System.Windows.Forms.TextBox SuccessBox;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.ProgressBar ProgressBar;
private System.Windows.Forms.Button StartBtn;
private System.Windows.Forms.Label ThroughputLabel;
private System.Windows.Forms.TextBox FailuresBox;
private ComboBox EndPointsComboBox;
private Label label5;
private GroupBox CPULoadBox;
private Label CpuLabel;
private ProgressBar CpuBar;
private System.Windows.Forms.Timer PerfTimer;
private IContainer components;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.mainMenu = new System.Windows.Forms.MainMenu(this.components);
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.ExitItem = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.AboutItem = new System.Windows.Forms.MenuItem();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.PpxBox = new System.Windows.Forms.ComboBox();
this.QueueBox = new System.Windows.Forms.ComboBox();
this.SuccessBox = new System.Windows.Forms.TextBox();
this.FailuresBox = new System.Windows.Forms.TextBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.ThroughputLabel = new System.Windows.Forms.Label();
this.ProgressBar = new System.Windows.Forms.ProgressBar();
this.StartBtn = new System.Windows.Forms.Button();
this.EndPointsComboBox = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.CPULoadBox = new System.Windows.Forms.GroupBox();
this.CpuLabel = new System.Windows.Forms.Label();
this.CpuBar = new System.Windows.Forms.ProgressBar();
this.PerfTimer = new System.Windows.Forms.Timer(this.components);
this.groupBox1.SuspendLayout();
this.CPULoadBox.SuspendLayout();
this.SuspendLayout();
//
// mainMenu
//
this.mainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1,
this.menuItem3});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2,
this.ExitItem});
this.menuItem1.Text = "File";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "-";
//
// ExitItem
//
this.ExitItem.Index = 1;
this.ExitItem.Text = "Exit";
this.ExitItem.Click += new System.EventHandler(this.ExitItem_Click);
//
// menuItem3
//
this.menuItem3.Index = 1;
this.menuItem3.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.AboutItem});
this.menuItem3.Text = "Help";
//
// AboutItem
//
this.AboutItem.Index = 0;
this.AboutItem.Text = "About";
this.AboutItem.Click += new System.EventHandler(this.AboutItem_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(16, 58);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(89, 16);
this.label1.TabIndex = 0;
this.label1.Text = "Packets per Xfer";
this.label1.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// label2
//
this.label2.Location = new System.Drawing.Point(16, 97);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(89, 17);
this.label2.TabIndex = 1;
this.label2.Text = "Xfers to Queue";
this.label2.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// label3
//
this.label3.Location = new System.Drawing.Point(215, 58);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(64, 17);
this.label3.TabIndex = 2;
this.label3.Text = "Successes";
this.label3.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// label4
//
this.label4.Location = new System.Drawing.Point(215, 99);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(64, 16);
this.label4.TabIndex = 3;
this.label4.Text = "Failures";
this.label4.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// PpxBox
//
this.PpxBox.Items.AddRange(new object[] {
"1",
"2",
"4",
"8",
"16",
"32",
"64",
"128"});
this.PpxBox.Location = new System.Drawing.Point(111, 58);
this.PpxBox.Name = "PpxBox";
this.PpxBox.Size = new System.Drawing.Size(64, 21);
this.PpxBox.TabIndex = 1;
this.PpxBox.Text = "8";
this.PpxBox.SelectedIndexChanged += new System.EventHandler(this.PpxBox_SelectedIndexChanged);
//
// QueueBox
//
this.QueueBox.Items.AddRange(new object[] {
"1",
"2",
"4",
"8",
"16",
"32",
"64",
"128"});
this.QueueBox.Location = new System.Drawing.Point(111, 97);
this.QueueBox.Name = "QueueBox";
this.QueueBox.Size = new System.Drawing.Size(64, 21);
this.QueueBox.TabIndex = 2;
this.QueueBox.Text = "16";
//
// SuccessBox
//
this.SuccessBox.Location = new System.Drawing.Point(279, 58);
this.SuccessBox.Name = "SuccessBox";
this.SuccessBox.Size = new System.Drawing.Size(72, 20);
this.SuccessBox.TabIndex = 6;
this.SuccessBox.TabStop = false;
this.SuccessBox.Text = "0";
this.SuccessBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
//
// FailuresBox
//
this.FailuresBox.Location = new System.Drawing.Point(279, 98);
this.FailuresBox.Name = "FailuresBox";
this.FailuresBox.Size = new System.Drawing.Size(72, 20);
this.FailuresBox.TabIndex = 7;
this.FailuresBox.TabStop = false;
this.FailuresBox.Text = "0";
this.FailuresBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.ThroughputLabel);
this.groupBox1.Controls.Add(this.ProgressBar);
this.groupBox1.Location = new System.Drawing.Point(19, 172);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(330, 60);
this.groupBox1.TabIndex = 8;
this.groupBox1.TabStop = false;
this.groupBox1.Text = " Throughput (KB/s) ";
//
// ThroughputLabel
//
this.ThroughputLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ThroughputLabel.Location = new System.Drawing.Point(114, 38);
this.ThroughputLabel.Name = "ThroughputLabel";
this.ThroughputLabel.Size = new System.Drawing.Size(100, 16);
this.ThroughputLabel.TabIndex = 1;
this.ThroughputLabel.Text = "0";
this.ThroughputLabel.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// ProgressBar
//
this.ProgressBar.ForeColor = System.Drawing.SystemColors.HotTrack;
this.ProgressBar.Location = new System.Drawing.Point(16, 25);
this.ProgressBar.Maximum = 40000;
this.ProgressBar.Name = "ProgressBar";
this.ProgressBar.Size = new System.Drawing.Size(294, 10);
this.ProgressBar.TabIndex = 0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -