📄 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 Streamer
{
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 are needed for Thread to update the UI
delegate void UpdateUICallback();
UpdateUICallback updateUI;
// These are needed to close the app from the Thread exception(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);
//Assign event handlers for device attachment and device removal.
usbDevices.DeviceAttached += new EventHandler(usbDevices_DeviceAttached);
usbDevices.DeviceRemoved += new EventHandler(usbDevices_DeviceRemoved);
//Set and search the device with VID-PID 04b4-1003 and if found, selects the end point
SetDevice();
}
/*Summary
This is the event handler for device removal. This method resets the device count and searches for the device with
VID-PID 04b4-1003
*/
void usbDevices_DeviceRemoved(object sender, EventArgs e)
{
MyDevice = null;
EndPoint = null;
SetDevice();
}
/*Summary
This is the event handler for device attachment. This method searches for the device with
VID-PID 04b4-1003
*/
void usbDevices_DeviceAttached(object sender, EventArgs e)
{
SetDevice();
}
/*Summary
Search the device with VID-PID 04b4-1003 and if found, select the end point
*/
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 = "";
}
}
/*Summary
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 (ept == null)
{
//return;
}
else 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.
*/
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
/*Summary
This method is used to do the initialization for detecting the CPU load
*/
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
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -