VB.NET代码:
Public Class Form1
Dim x As PtzProtocol.PtzProtocol
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
x.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.comboBox1.Items.Add("Hikvision")
Me.comboBox1.Items.Add("PelcoD")
Me.comboBox1.Items.Add("PelcoP")
Me.comboBox1.Items.Add("Vicon")
Me.comboBox1.Items.Add("YAAN")
Me.comboBox1.SelectedIndex = 0
Dim sp As New IO.Ports.SerialPort("COM2")
With sp
.BaudRate = 9600
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.Parity = IO.Ports.Parity.None
End With
x = New PtzProtocol.Hikvision(sp, 2)
x.Open()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
x.Up()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
x.Down()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
x.Left()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
x.Right()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
x.Focus(PtzProtocol.PtzProtocol.DoAction.Additive)
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
x.Focus(PtzProtocol.PtzProtocol.DoAction.Subtraction)
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
x.Zoom(PtzProtocol.PtzProtocol.DoAction.Additive)
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
x.Zoom(PtzProtocol.PtzProtocol.DoAction.Subtraction)
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
x.IRIS(PtzProtocol.PtzProtocol.DoAction.Additive)
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
x.IRIS(PtzProtocol.PtzProtocol.DoAction.Subtraction)
End Sub
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
x.SetPresetPoint(2)
End Sub
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
x.GotoPresetPoint(2)
End Sub
Private Sub comboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.SelectedIndexChanged
Try
Dim sp As System.IO.Ports.SerialPort = New System.IO.Ports.SerialPort("COM2", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One)
x.Close()
Select (Me.comboBox1.SelectedIndex)
Case 0
x = New PtzProtocol.Hikvision(sp, 1, 40, 40)
x.Open()
Case 1
x = New PtzProtocol.PelcoD(sp, 1, 40, 40)
x.Open()
Case 2
x = New PtzProtocol.PelcoP(sp, 1, 40, 40)
x.Open()
Case 3
x = New PtzProtocol.Vicon(sp, 1, 40, 40)
x.Open()
Case 4
x = New PtzProtocol.YAAN(sp, 1, 40, 40)
x.Open()
End Select
Catch ex As Exception
End Try
End Sub
End Class
C#代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private PtzProtocol.PtzProtocol x;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Items.Add("Hikvision");
this.comboBox1.Items.Add("PelcoD");
this.comboBox1.Items.Add("PelcoP");
this.comboBox1.Items.Add("Vicon");
this.comboBox1.Items.Add("YAAN");
this.comboBox1.SelectedIndex = 0;
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort("COM2", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
x = new PtzProtocol.Hikvision(sp, 1, 40, 40);
x.Open();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
x.Close();
}
private void Button1_Click(object sender, EventArgs e)
{
x.Up(40);
}
private void Button2_Click(object sender, EventArgs e)
{
x.Down(40);
}
private void Button3_Click(object sender, EventArgs e)
{
x.Left(40);
}
private void Button4_Click(object sender, EventArgs e)
{
x.Right(40);
}
private void Button5_Click(object sender, EventArgs e)
{
x.Focus(PtzProtocol.PtzProtocol.DoAction.Additive );
}
private void Button6_Click(object sender, EventArgs e)
{
x.Focus(PtzProtocol.PtzProtocol.DoAction.Subtraction);
}
private void Button7_Click(object sender, EventArgs e)
{
x.Zoom(PtzProtocol.PtzProtocol.DoAction.Additive);
}
private void Button8_Click(object sender, EventArgs e)
{
x.Zoom(PtzProtocol.PtzProtocol.DoAction.Subtraction);
}
private void Button9_Click(object sender, EventArgs e)
{
x.IRIS(PtzProtocol.PtzProtocol.DoAction.Additive);
}
private void Button10_Click(object sender, EventArgs e)
{
x.IRIS(PtzProtocol.PtzProtocol.DoAction.Subtraction);
}
private void Button11_Click(object sender, EventArgs e)
{
x.SetPresetPoint(1);
}
private void Button12_Click(object sender, EventArgs e)
{
x.GotoPresetPoint(1);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort("COM2", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
x.Close();
switch (this.comboBox1.SelectedIndex)
{
case 0:
{
x = new PtzProtocol.Hikvision(sp, 1, 40, 40);
x.Open();
break;
}
case 1:
{
x = new PtzProtocol.PelcoD(sp, 1, 40, 40);
x.Open();
break;
}
case 2:
{
x = new PtzProtocol.PelcoP(sp, 1, 40, 40);
x.Open();
break;
}
case 3:
{
x = new PtzProtocol.Vicon (sp, 1, 40, 40);
x.Open();
break;
}
case 4:
{
x = new PtzProtocol.YAAN (sp, 1, 40, 40);
x.Open();
break;
}
}
}
catch (Exception ex)
{
}
}
}
}
事实证明,任何时候对某一类具有相同类型业务的合理抽象将会使后期代码的工作量大大减少,同样代码的可重用性将会增加。