From 83b28f3eb0b5edd2924b5ffe0206221cd5d3f651 Mon Sep 17 00:00:00 2001 From: Viktor <35473052+viktorxda@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:10:43 +0100 Subject: [PATCH] Update .gitignore --- .github/workflows/build.yml | 2 +- .gitignore | 2 + ApplicationEvents.vb | 29 - Form1.Designer.vb => Configurator.Designer.vb | 1172 ++++++++--------- Form1.resx => Configurator.resx | 250 ++-- Form1.vb => Configurator.vb | 958 +++++++------- Extern.bat | 21 + My Project/Application.Designer.vb | 74 +- My Project/Application.myapp | 18 +- My Project/README.md | 1 - OpenIPC Configurator.sln | 50 +- OpenIPC Configurator.vbproj | 68 +- OpenIPC Configurator.vbproj.user | 14 +- .../OpenIPC Configurator.deps.json | 23 - OpenIPCConfigurator/OpenIPC Configurator.dll | Bin 24064 -> 0 bytes OpenIPCConfigurator/OpenIPC Configurator.exe | Bin 142848 -> 0 bytes OpenIPCConfigurator/OpenIPC Configurator.pdb | Bin 16820 -> 0 bytes .../OpenIPC Configurator.runtimeconfig.json | 18 - OpenIPCConfigurator/README.md | 19 - OpenIPCConfigurator/get.bat | 2 - OpenIPCConfigurator/send.bat | 2 - README.md | 24 +- 22 files changed, 1369 insertions(+), 1378 deletions(-) delete mode 100644 ApplicationEvents.vb rename Form1.Designer.vb => Configurator.Designer.vb (96%) rename Form1.resx => Configurator.resx (97%) rename Form1.vb => Configurator.vb (91%) mode change 100644 => 100755 create mode 100755 Extern.bat delete mode 100644 My Project/README.md delete mode 100644 OpenIPCConfigurator/OpenIPC Configurator.deps.json delete mode 100644 OpenIPCConfigurator/OpenIPC Configurator.dll delete mode 100644 OpenIPCConfigurator/OpenIPC Configurator.exe delete mode 100644 OpenIPCConfigurator/OpenIPC Configurator.pdb delete mode 100644 OpenIPCConfigurator/OpenIPC Configurator.runtimeconfig.json delete mode 100644 OpenIPCConfigurator/README.md delete mode 100644 OpenIPCConfigurator/get.bat delete mode 100644 OpenIPCConfigurator/send.bat diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1eb1a28..c7dae87 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - name: Build run: | dotnet build --configuration Release - Compress-Archive bin\Release\*\*.dll,bin\Release\*\*.exe,bin\Release\*\*.json OpenIPC-Configurator.zip + Compress-Archive bin\Release\*\*,*.bat OpenIPC-Configurator.zip - name: Upload uses: softprops/action-gh-release@v2 diff --git a/.gitignore b/.gitignore index eaa9902..c290a81 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,8 @@ ScaffoldingReadMe.txt StyleCopReport.xml # Files built by Visual Studio +bin +obj *_i.c *_p.c *_h.h diff --git a/ApplicationEvents.vb b/ApplicationEvents.vb deleted file mode 100644 index f9974e1..0000000 --- a/ApplicationEvents.vb +++ /dev/null @@ -1,29 +0,0 @@ -Imports Microsoft.VisualBasic.ApplicationServices - -Namespace My - ' The following events are available for MyApplication: - ' Startup: Raised when the application starts, before the startup form is created. - ' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally. - ' UnhandledException: Raised if the application encounters an unhandled exception. - ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. - ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected. - - ' **NEW** ApplyApplicationDefaults: Raised when the application queries default values to be set for the application. - - ' Example: - ' Private Sub MyApplication_ApplyApplicationDefaults(sender As Object, e As ApplyApplicationDefaultsEventArgs) Handles Me.ApplyApplicationDefaults - ' - ' ' Setting the application-wide default Font: - ' e.Font = New Font(FontFamily.GenericSansSerif, 12, FontStyle.Regular) - ' - ' ' Setting the HighDpiMode for the Application: - ' e.HighDpiMode = HighDpiMode.PerMonitorV2 - ' - ' ' If a splash dialog is used, this sets the minimum display time: - ' e.MinimumSplashScreenDisplayTime = 4000 - ' End Sub - - Partial Friend Class MyApplication - - End Class -End Namespace diff --git a/Form1.Designer.vb b/Configurator.Designer.vb similarity index 96% rename from Form1.Designer.vb rename to Configurator.Designer.vb index 839023c..35f2340 100644 --- a/Form1.Designer.vb +++ b/Configurator.Designer.vb @@ -1,586 +1,586 @@ - -Partial Class Form1 - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - - Private Sub InitializeComponent() - components = New ComponentModel.Container() - btnGet = New Button() - txtIP = New TextBox() - btnSend = New Button() - txtFrequency = New TextBox() - txtResolution = New TextBox() - txtFPS = New TextBox() - txtEncode = New TextBox() - txtBitrate = New TextBox() - txtExposure = New TextBox() - txtContrast = New TextBox() - txtHue = New TextBox() - txtSaturation = New TextBox() - txtLuminance = New TextBox() - txtPower = New TextBox() - txtSensor = New TextBox() - txtFreq24 = New TextBox() - txtMCS = New TextBox() - txtLDPC = New TextBox() - txtSTBC = New TextBox() - txtFECN = New TextBox() - txtFECK = New TextBox() - txtPower24 = New TextBox() - TabControl1 = New TabControl() - TabPage1 = New TabPage() - ComboBox9 = New ComboBox() - ComboBox8 = New ComboBox() - ComboBox7 = New ComboBox() - ComboBox6 = New ComboBox() - ComboBox5 = New ComboBox() - ComboBox4 = New ComboBox() - ComboBox3 = New ComboBox() - ComboBox2 = New ComboBox() - ComboBox1 = New ComboBox() - txtSaveFreq = New Button() - TabPage2 = New TabPage() - cmbLuminance = New ComboBox() - cmbSaturation = New ComboBox() - cmbHue = New ComboBox() - cmbContrast = New ComboBox() - cmbExposure = New ComboBox() - cmbBitrate = New ComboBox() - cmbCodec = New ComboBox() - cmbFPS = New ComboBox() - cmbResolution = New ComboBox() - txtSaveCam = New Button() - btnRead = New Button() - Label1 = New Label() - btnToolTip = New ToolTip(components) - TabControl1.SuspendLayout() - TabPage1.SuspendLayout() - TabPage2.SuspendLayout() - SuspendLayout() - ' - ' btnGet - ' - btnGet.Location = New Point(12, 408) - btnGet.Name = "btnGet" - btnGet.Size = New Size(60, 30) - btnGet.TabIndex = 0 - btnGet.Text = "1. Fetch" - btnToolTip.SetToolTip(btnGet, "Fetch the required files from the OpenIPC Camera") - btnGet.UseVisualStyleBackColor = True - ' - ' txtIP - ' - txtIP.Location = New Point(179, 381) - txtIP.Name = "txtIP" - txtIP.Size = New Size(124, 23) - txtIP.TabIndex = 1 - txtIP.Text = "192.168.0.4" - btnToolTip.SetToolTip(txtIP, "Type the OpenIPC Camera IP" & vbCrLf & "in a correct format XXX.XXX.XXX.XXX") - ' - ' btnSend - ' - btnSend.Location = New Point(142, 408) - btnSend.Name = "btnSend" - btnSend.Size = New Size(72, 30) - btnSend.TabIndex = 2 - btnSend.Text = "4. Upload" - btnToolTip.SetToolTip(btnSend, "Send the local files with the new " & vbCrLf & "settings to the OpenIPC camera") - btnSend.UseVisualStyleBackColor = True - ' - ' txtFrequency - ' - txtFrequency.Location = New Point(248, 20) - txtFrequency.Name = "txtFrequency" - txtFrequency.ReadOnly = True - txtFrequency.Size = New Size(191, 23) - txtFrequency.TabIndex = 3 - ' - ' txtResolution - ' - txtResolution.Location = New Point(248, 20) - txtResolution.Name = "txtResolution" - txtResolution.ReadOnly = True - txtResolution.Size = New Size(191, 23) - txtResolution.TabIndex = 4 - ' - ' txtFPS - ' - txtFPS.Location = New Point(248, 49) - txtFPS.Name = "txtFPS" - txtFPS.ReadOnly = True - txtFPS.Size = New Size(191, 23) - txtFPS.TabIndex = 5 - ' - ' txtEncode - ' - txtEncode.Location = New Point(248, 78) - txtEncode.Name = "txtEncode" - txtEncode.ReadOnly = True - txtEncode.Size = New Size(191, 23) - txtEncode.TabIndex = 6 - ' - ' txtBitrate - ' - txtBitrate.Location = New Point(248, 107) - txtBitrate.Name = "txtBitrate" - txtBitrate.ReadOnly = True - txtBitrate.Size = New Size(191, 23) - txtBitrate.TabIndex = 7 - ' - ' txtExposure - ' - txtExposure.Location = New Point(248, 136) - txtExposure.Name = "txtExposure" - txtExposure.ReadOnly = True - txtExposure.Size = New Size(191, 23) - txtExposure.TabIndex = 8 - ' - ' txtContrast - ' - txtContrast.Location = New Point(248, 165) - txtContrast.Name = "txtContrast" - txtContrast.ReadOnly = True - txtContrast.Size = New Size(191, 23) - txtContrast.TabIndex = 9 - ' - ' txtHue - ' - txtHue.Location = New Point(248, 194) - txtHue.Name = "txtHue" - txtHue.ReadOnly = True - txtHue.Size = New Size(191, 23) - txtHue.TabIndex = 10 - ' - ' txtSaturation - ' - txtSaturation.Location = New Point(248, 223) - txtSaturation.Name = "txtSaturation" - txtSaturation.ReadOnly = True - txtSaturation.Size = New Size(191, 23) - txtSaturation.TabIndex = 11 - ' - ' txtLuminance - ' - txtLuminance.Location = New Point(248, 252) - txtLuminance.Name = "txtLuminance" - txtLuminance.ReadOnly = True - txtLuminance.Size = New Size(191, 23) - txtLuminance.TabIndex = 12 - ' - ' txtPower - ' - txtPower.Location = New Point(248, 49) - txtPower.Name = "txtPower" - txtPower.ReadOnly = True - txtPower.Size = New Size(191, 23) - txtPower.TabIndex = 13 - ' - ' txtSensor - ' - txtSensor.Location = New Point(19, 281) - txtSensor.Name = "txtSensor" - txtSensor.ReadOnly = True - txtSensor.Size = New Size(420, 23) - txtSensor.TabIndex = 14 - ' - ' txtFreq24 - ' - txtFreq24.Location = New Point(248, 78) - txtFreq24.Name = "txtFreq24" - txtFreq24.ReadOnly = True - txtFreq24.Size = New Size(191, 23) - txtFreq24.TabIndex = 16 - ' - ' txtMCS - ' - txtMCS.Location = New Point(248, 136) - txtMCS.Name = "txtMCS" - txtMCS.ReadOnly = True - txtMCS.Size = New Size(191, 23) - txtMCS.TabIndex = 15 - ' - ' txtLDPC - ' - txtLDPC.Location = New Point(248, 194) - txtLDPC.Name = "txtLDPC" - txtLDPC.ReadOnly = True - txtLDPC.Size = New Size(191, 23) - txtLDPC.TabIndex = 18 - ' - ' txtSTBC - ' - txtSTBC.Location = New Point(248, 165) - txtSTBC.Name = "txtSTBC" - txtSTBC.ReadOnly = True - txtSTBC.Size = New Size(191, 23) - txtSTBC.TabIndex = 17 - ' - ' txtFECN - ' - txtFECN.Location = New Point(248, 252) - txtFECN.Name = "txtFECN" - txtFECN.ReadOnly = True - txtFECN.Size = New Size(191, 23) - txtFECN.TabIndex = 20 - ' - ' txtFECK - ' - txtFECK.Location = New Point(248, 223) - txtFECK.Name = "txtFECK" - txtFECK.ReadOnly = True - txtFECK.Size = New Size(191, 23) - txtFECK.TabIndex = 19 - ' - ' txtPower24 - ' - txtPower24.Location = New Point(248, 107) - txtPower24.Name = "txtPower24" - txtPower24.ReadOnly = True - txtPower24.Size = New Size(191, 23) - txtPower24.TabIndex = 21 - ' - ' TabControl1 - ' - TabControl1.Controls.Add(TabPage1) - TabControl1.Controls.Add(TabPage2) - TabControl1.Location = New Point(12, 12) - TabControl1.Name = "TabControl1" - TabControl1.SelectedIndex = 0 - TabControl1.Size = New Size(470, 367) - TabControl1.TabIndex = 22 - ' - ' TabPage1 - ' - TabPage1.BackColor = Color.WhiteSmoke - TabPage1.Controls.Add(ComboBox9) - TabPage1.Controls.Add(ComboBox8) - TabPage1.Controls.Add(ComboBox7) - TabPage1.Controls.Add(ComboBox6) - TabPage1.Controls.Add(ComboBox5) - TabPage1.Controls.Add(ComboBox4) - TabPage1.Controls.Add(ComboBox3) - TabPage1.Controls.Add(ComboBox2) - TabPage1.Controls.Add(ComboBox1) - TabPage1.Controls.Add(txtSaveFreq) - TabPage1.Controls.Add(txtFrequency) - TabPage1.Controls.Add(txtPower24) - TabPage1.Controls.Add(txtPower) - TabPage1.Controls.Add(txtFECN) - TabPage1.Controls.Add(txtMCS) - TabPage1.Controls.Add(txtFECK) - TabPage1.Controls.Add(txtFreq24) - TabPage1.Controls.Add(txtLDPC) - TabPage1.Controls.Add(txtSTBC) - TabPage1.Location = New Point(4, 24) - TabPage1.Name = "TabPage1" - TabPage1.Padding = New Padding(3) - TabPage1.Size = New Size(462, 339) - TabPage1.TabIndex = 0 - TabPage1.Text = "WFB Settings" - ' - ' ComboBox9 - ' - ComboBox9.FormattingEnabled = True - ComboBox9.Location = New Point(19, 252) - ComboBox9.Name = "ComboBox9" - ComboBox9.Size = New Size(214, 23) - ComboBox9.TabIndex = 34 - ' - ' ComboBox8 - ' - ComboBox8.FormattingEnabled = True - ComboBox8.Location = New Point(19, 223) - ComboBox8.Name = "ComboBox8" - ComboBox8.Size = New Size(214, 23) - ComboBox8.TabIndex = 33 - ' - ' ComboBox7 - ' - ComboBox7.FormattingEnabled = True - ComboBox7.Location = New Point(19, 194) - ComboBox7.Name = "ComboBox7" - ComboBox7.Size = New Size(214, 23) - ComboBox7.TabIndex = 32 - ' - ' ComboBox6 - ' - ComboBox6.FormattingEnabled = True - ComboBox6.Location = New Point(19, 165) - ComboBox6.Name = "ComboBox6" - ComboBox6.Size = New Size(214, 23) - ComboBox6.TabIndex = 31 - ' - ' ComboBox5 - ' - ComboBox5.FormattingEnabled = True - ComboBox5.Location = New Point(19, 136) - ComboBox5.Name = "ComboBox5" - ComboBox5.Size = New Size(214, 23) - ComboBox5.TabIndex = 30 - ' - ' ComboBox4 - ' - ComboBox4.FormattingEnabled = True - ComboBox4.Location = New Point(19, 106) - ComboBox4.Name = "ComboBox4" - ComboBox4.Size = New Size(214, 23) - ComboBox4.TabIndex = 29 - ' - ' ComboBox3 - ' - ComboBox3.FormattingEnabled = True - ComboBox3.Location = New Point(19, 77) - ComboBox3.Name = "ComboBox3" - ComboBox3.Size = New Size(214, 23) - ComboBox3.TabIndex = 28 - ' - ' ComboBox2 - ' - ComboBox2.FormattingEnabled = True - ComboBox2.Location = New Point(19, 48) - ComboBox2.Name = "ComboBox2" - ComboBox2.Size = New Size(214, 23) - ComboBox2.TabIndex = 27 - ' - ' ComboBox1 - ' - ComboBox1.FormattingEnabled = True - ComboBox1.Location = New Point(19, 20) - ComboBox1.Name = "ComboBox1" - ComboBox1.Size = New Size(214, 23) - ComboBox1.TabIndex = 26 - ' - ' txtSaveFreq - ' - txtSaveFreq.Location = New Point(140, 310) - txtSaveFreq.Name = "txtSaveFreq" - txtSaveFreq.Size = New Size(58, 23) - txtSaveFreq.TabIndex = 25 - txtSaveFreq.Text = "3. Save" - btnToolTip.SetToolTip(txtSaveFreq, "Save the WFB settings to the" & vbCrLf & "local wfb.conf file") - txtSaveFreq.UseVisualStyleBackColor = True - ' - ' TabPage2 - ' - TabPage2.BackColor = Color.WhiteSmoke - TabPage2.Controls.Add(cmbLuminance) - TabPage2.Controls.Add(cmbSaturation) - TabPage2.Controls.Add(cmbHue) - TabPage2.Controls.Add(cmbContrast) - TabPage2.Controls.Add(cmbExposure) - TabPage2.Controls.Add(cmbBitrate) - TabPage2.Controls.Add(cmbCodec) - TabPage2.Controls.Add(cmbFPS) - TabPage2.Controls.Add(cmbResolution) - TabPage2.Controls.Add(txtSaveCam) - TabPage2.Controls.Add(txtResolution) - TabPage2.Controls.Add(txtSensor) - TabPage2.Controls.Add(txtFPS) - TabPage2.Controls.Add(txtLuminance) - TabPage2.Controls.Add(txtEncode) - TabPage2.Controls.Add(txtSaturation) - TabPage2.Controls.Add(txtBitrate) - TabPage2.Controls.Add(txtHue) - TabPage2.Controls.Add(txtExposure) - TabPage2.Controls.Add(txtContrast) - TabPage2.Location = New Point(4, 24) - TabPage2.Name = "TabPage2" - TabPage2.Padding = New Padding(3) - TabPage2.Size = New Size(462, 339) - TabPage2.TabIndex = 1 - TabPage2.Text = "Camera Settings" - ' - ' cmbLuminance - ' - cmbLuminance.FormattingEnabled = True - cmbLuminance.Location = New Point(19, 252) - cmbLuminance.Name = "cmbLuminance" - cmbLuminance.Size = New Size(214, 23) - cmbLuminance.TabIndex = 43 - ' - ' cmbSaturation - ' - cmbSaturation.FormattingEnabled = True - cmbSaturation.Location = New Point(19, 223) - cmbSaturation.Name = "cmbSaturation" - cmbSaturation.Size = New Size(214, 23) - cmbSaturation.TabIndex = 42 - ' - ' cmbHue - ' - cmbHue.FormattingEnabled = True - cmbHue.Location = New Point(19, 194) - cmbHue.Name = "cmbHue" - cmbHue.Size = New Size(214, 23) - cmbHue.TabIndex = 41 - ' - ' cmbContrast - ' - cmbContrast.FormattingEnabled = True - cmbContrast.Location = New Point(19, 165) - cmbContrast.Name = "cmbContrast" - cmbContrast.Size = New Size(214, 23) - cmbContrast.TabIndex = 40 - ' - ' cmbExposure - ' - cmbExposure.FormattingEnabled = True - cmbExposure.Location = New Point(19, 136) - cmbExposure.Name = "cmbExposure" - cmbExposure.Size = New Size(214, 23) - cmbExposure.TabIndex = 39 - ' - ' cmbBitrate - ' - cmbBitrate.FormattingEnabled = True - cmbBitrate.Location = New Point(19, 106) - cmbBitrate.Name = "cmbBitrate" - cmbBitrate.Size = New Size(214, 23) - cmbBitrate.TabIndex = 38 - ' - ' cmbCodec - ' - cmbCodec.FormattingEnabled = True - cmbCodec.Location = New Point(19, 77) - cmbCodec.Name = "cmbCodec" - cmbCodec.Size = New Size(214, 23) - cmbCodec.TabIndex = 37 - ' - ' cmbFPS - ' - cmbFPS.FormattingEnabled = True - cmbFPS.Location = New Point(19, 48) - cmbFPS.Name = "cmbFPS" - cmbFPS.Size = New Size(214, 23) - cmbFPS.TabIndex = 36 - ' - ' cmbResolution - ' - cmbResolution.FormattingEnabled = True - cmbResolution.Location = New Point(19, 20) - cmbResolution.Name = "cmbResolution" - cmbResolution.Size = New Size(214, 23) - cmbResolution.TabIndex = 35 - ' - ' txtSaveCam - ' - txtSaveCam.Location = New Point(140, 310) - txtSaveCam.Name = "txtSaveCam" - txtSaveCam.Size = New Size(58, 23) - txtSaveCam.TabIndex = 26 - txtSaveCam.Text = "3. Save" - btnToolTip.SetToolTip(txtSaveCam, "Save the Majestic settings to the" & vbCrLf & "local file majestic.yaml file" & vbCrLf) - txtSaveCam.UseVisualStyleBackColor = True - ' - ' btnRead - ' - btnRead.Location = New Point(76, 408) - btnRead.Name = "btnRead" - btnRead.Size = New Size(60, 30) - btnRead.TabIndex = 23 - btnRead.Text = "2. Read" - btnToolTip.SetToolTip(btnRead, "Read the settings from the local files" & vbCrLf & "that was previously received from the camera") - btnRead.UseVisualStyleBackColor = True - ' - ' Label1 - ' - Label1.AutoSize = True - Label1.Location = New Point(14, 384) - Label1.Name = "Label1" - Label1.Size = New Size(159, 15) - Label1.TabIndex = 24 - Label1.Text = "OpenIPC Camera IP Address:" - ' - ' Form1 - ' - AutoScaleDimensions = New SizeF(7F, 15F) - AutoScaleMode = AutoScaleMode.Font - ClientSize = New Size(495, 450) - Controls.Add(Label1) - Controls.Add(btnRead) - Controls.Add(TabControl1) - Controls.Add(btnSend) - Controls.Add(txtIP) - Controls.Add(btnGet) - FormBorderStyle = FormBorderStyle.FixedSingle - MaximizeBox = False - Name = "Form1" - StartPosition = FormStartPosition.CenterScreen - Text = "OpenIPC Configurator" - TabControl1.ResumeLayout(False) - TabPage1.ResumeLayout(False) - TabPage1.PerformLayout() - TabPage2.ResumeLayout(False) - TabPage2.PerformLayout() - ResumeLayout(False) - PerformLayout() - End Sub - - Friend WithEvents btnGet As Button - Friend WithEvents txtIP As TextBox - Friend WithEvents btnSend As Button - Friend WithEvents txtFrequency As TextBox - Friend WithEvents txtResolution As TextBox - Friend WithEvents txtFPS As TextBox - Friend WithEvents txtEncode As TextBox - Friend WithEvents txtBitrate As TextBox - Friend WithEvents txtExposure As TextBox - Friend WithEvents txtContrast As TextBox - Friend WithEvents txtHue As TextBox - Friend WithEvents txtSaturation As TextBox - Friend WithEvents txtLuminance As TextBox - Friend WithEvents txtPower As TextBox - Friend WithEvents txtSensor As TextBox - Friend WithEvents txtFreq24 As TextBox - Friend WithEvents txtMCS As TextBox - Friend WithEvents txtLDPC As TextBox - Friend WithEvents txtSTBC As TextBox - Friend WithEvents txtFECN As TextBox - Friend WithEvents txtFECK As TextBox - Friend WithEvents txtPower24 As TextBox - Friend WithEvents TabControl1 As TabControl - Friend WithEvents TabPage1 As TabPage - Friend WithEvents TabPage2 As TabPage - Friend WithEvents txtSaveFreq As Button - Friend WithEvents txtSaveCam As Button - Friend WithEvents btnRead As Button - Friend WithEvents ComboBox1 As ComboBox - Friend WithEvents ComboBox2 As ComboBox - Friend WithEvents ComboBox4 As ComboBox - Friend WithEvents ComboBox3 As ComboBox - Friend WithEvents ComboBox9 As ComboBox - Friend WithEvents ComboBox8 As ComboBox - Friend WithEvents ComboBox7 As ComboBox - Friend WithEvents ComboBox6 As ComboBox - Friend WithEvents ComboBox5 As ComboBox - Friend WithEvents cmbLuminance As ComboBox - Friend WithEvents cmbSaturation As ComboBox - Friend WithEvents cmbHue As ComboBox - Friend WithEvents cmbContrast As ComboBox - Friend WithEvents cmbExposure As ComboBox - Friend WithEvents cmbBitrate As ComboBox - Friend WithEvents cmbCodec As ComboBox - Friend WithEvents cmbFPS As ComboBox - Friend WithEvents cmbResolution As ComboBox - Friend WithEvents Label1 As Label - Friend WithEvents btnToolTip As ToolTip - -End Class + +Partial Class Configurator + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + + Private Sub InitializeComponent() + components = New ComponentModel.Container() + btnGet = New Button() + txtIP = New TextBox() + btnSend = New Button() + txtFrequency = New TextBox() + txtResolution = New TextBox() + txtFPS = New TextBox() + txtEncode = New TextBox() + txtBitrate = New TextBox() + txtExposure = New TextBox() + txtContrast = New TextBox() + txtHue = New TextBox() + txtSaturation = New TextBox() + txtLuminance = New TextBox() + txtPower = New TextBox() + txtSensor = New TextBox() + txtFreq24 = New TextBox() + txtMCS = New TextBox() + txtLDPC = New TextBox() + txtSTBC = New TextBox() + txtFECN = New TextBox() + txtFECK = New TextBox() + txtPower24 = New TextBox() + TabControl1 = New TabControl() + TabPage1 = New TabPage() + ComboBox9 = New ComboBox() + ComboBox8 = New ComboBox() + ComboBox7 = New ComboBox() + ComboBox6 = New ComboBox() + ComboBox5 = New ComboBox() + ComboBox4 = New ComboBox() + ComboBox3 = New ComboBox() + ComboBox2 = New ComboBox() + ComboBox1 = New ComboBox() + txtSaveFreq = New Button() + TabPage2 = New TabPage() + cmbLuminance = New ComboBox() + cmbSaturation = New ComboBox() + cmbHue = New ComboBox() + cmbContrast = New ComboBox() + cmbExposure = New ComboBox() + cmbBitrate = New ComboBox() + cmbCodec = New ComboBox() + cmbFPS = New ComboBox() + cmbResolution = New ComboBox() + txtSaveCam = New Button() + btnRead = New Button() + Label1 = New Label() + btnToolTip = New ToolTip(components) + TabControl1.SuspendLayout() + TabPage1.SuspendLayout() + TabPage2.SuspendLayout() + SuspendLayout() + ' + ' btnGet + ' + btnGet.Location = New Point(12, 408) + btnGet.Name = "btnGet" + btnGet.Size = New Size(60, 30) + btnGet.TabIndex = 0 + btnGet.Text = "1. Fetch" + btnToolTip.SetToolTip(btnGet, "Fetch the required files from the OpenIPC Camera") + btnGet.UseVisualStyleBackColor = True + ' + ' txtIP + ' + txtIP.Location = New Point(179, 381) + txtIP.Name = "txtIP" + txtIP.Size = New Size(124, 23) + txtIP.TabIndex = 1 + txtIP.Text = "192.168.0.4" + btnToolTip.SetToolTip(txtIP, "Type the OpenIPC Camera IP" & vbCrLf & "in a correct format XXX.XXX.XXX.XXX") + ' + ' btnSend + ' + btnSend.Location = New Point(142, 408) + btnSend.Name = "btnSend" + btnSend.Size = New Size(72, 30) + btnSend.TabIndex = 2 + btnSend.Text = "4. Upload" + btnToolTip.SetToolTip(btnSend, "Send the local files with the new " & vbCrLf & "settings to the OpenIPC camera") + btnSend.UseVisualStyleBackColor = True + ' + ' txtFrequency + ' + txtFrequency.Location = New Point(248, 20) + txtFrequency.Name = "txtFrequency" + txtFrequency.ReadOnly = True + txtFrequency.Size = New Size(191, 23) + txtFrequency.TabIndex = 3 + ' + ' txtResolution + ' + txtResolution.Location = New Point(248, 20) + txtResolution.Name = "txtResolution" + txtResolution.ReadOnly = True + txtResolution.Size = New Size(191, 23) + txtResolution.TabIndex = 4 + ' + ' txtFPS + ' + txtFPS.Location = New Point(248, 49) + txtFPS.Name = "txtFPS" + txtFPS.ReadOnly = True + txtFPS.Size = New Size(191, 23) + txtFPS.TabIndex = 5 + ' + ' txtEncode + ' + txtEncode.Location = New Point(248, 78) + txtEncode.Name = "txtEncode" + txtEncode.ReadOnly = True + txtEncode.Size = New Size(191, 23) + txtEncode.TabIndex = 6 + ' + ' txtBitrate + ' + txtBitrate.Location = New Point(248, 107) + txtBitrate.Name = "txtBitrate" + txtBitrate.ReadOnly = True + txtBitrate.Size = New Size(191, 23) + txtBitrate.TabIndex = 7 + ' + ' txtExposure + ' + txtExposure.Location = New Point(248, 136) + txtExposure.Name = "txtExposure" + txtExposure.ReadOnly = True + txtExposure.Size = New Size(191, 23) + txtExposure.TabIndex = 8 + ' + ' txtContrast + ' + txtContrast.Location = New Point(248, 165) + txtContrast.Name = "txtContrast" + txtContrast.ReadOnly = True + txtContrast.Size = New Size(191, 23) + txtContrast.TabIndex = 9 + ' + ' txtHue + ' + txtHue.Location = New Point(248, 194) + txtHue.Name = "txtHue" + txtHue.ReadOnly = True + txtHue.Size = New Size(191, 23) + txtHue.TabIndex = 10 + ' + ' txtSaturation + ' + txtSaturation.Location = New Point(248, 223) + txtSaturation.Name = "txtSaturation" + txtSaturation.ReadOnly = True + txtSaturation.Size = New Size(191, 23) + txtSaturation.TabIndex = 11 + ' + ' txtLuminance + ' + txtLuminance.Location = New Point(248, 252) + txtLuminance.Name = "txtLuminance" + txtLuminance.ReadOnly = True + txtLuminance.Size = New Size(191, 23) + txtLuminance.TabIndex = 12 + ' + ' txtPower + ' + txtPower.Location = New Point(248, 49) + txtPower.Name = "txtPower" + txtPower.ReadOnly = True + txtPower.Size = New Size(191, 23) + txtPower.TabIndex = 13 + ' + ' txtSensor + ' + txtSensor.Location = New Point(19, 281) + txtSensor.Name = "txtSensor" + txtSensor.ReadOnly = True + txtSensor.Size = New Size(420, 23) + txtSensor.TabIndex = 14 + ' + ' txtFreq24 + ' + txtFreq24.Location = New Point(248, 78) + txtFreq24.Name = "txtFreq24" + txtFreq24.ReadOnly = True + txtFreq24.Size = New Size(191, 23) + txtFreq24.TabIndex = 16 + ' + ' txtMCS + ' + txtMCS.Location = New Point(248, 136) + txtMCS.Name = "txtMCS" + txtMCS.ReadOnly = True + txtMCS.Size = New Size(191, 23) + txtMCS.TabIndex = 15 + ' + ' txtLDPC + ' + txtLDPC.Location = New Point(248, 194) + txtLDPC.Name = "txtLDPC" + txtLDPC.ReadOnly = True + txtLDPC.Size = New Size(191, 23) + txtLDPC.TabIndex = 18 + ' + ' txtSTBC + ' + txtSTBC.Location = New Point(248, 165) + txtSTBC.Name = "txtSTBC" + txtSTBC.ReadOnly = True + txtSTBC.Size = New Size(191, 23) + txtSTBC.TabIndex = 17 + ' + ' txtFECN + ' + txtFECN.Location = New Point(248, 252) + txtFECN.Name = "txtFECN" + txtFECN.ReadOnly = True + txtFECN.Size = New Size(191, 23) + txtFECN.TabIndex = 20 + ' + ' txtFECK + ' + txtFECK.Location = New Point(248, 223) + txtFECK.Name = "txtFECK" + txtFECK.ReadOnly = True + txtFECK.Size = New Size(191, 23) + txtFECK.TabIndex = 19 + ' + ' txtPower24 + ' + txtPower24.Location = New Point(248, 107) + txtPower24.Name = "txtPower24" + txtPower24.ReadOnly = True + txtPower24.Size = New Size(191, 23) + txtPower24.TabIndex = 21 + ' + ' TabControl1 + ' + TabControl1.Controls.Add(TabPage1) + TabControl1.Controls.Add(TabPage2) + TabControl1.Location = New Point(12, 12) + TabControl1.Name = "TabControl1" + TabControl1.SelectedIndex = 0 + TabControl1.Size = New Size(470, 367) + TabControl1.TabIndex = 22 + ' + ' TabPage1 + ' + TabPage1.BackColor = Color.WhiteSmoke + TabPage1.Controls.Add(ComboBox9) + TabPage1.Controls.Add(ComboBox8) + TabPage1.Controls.Add(ComboBox7) + TabPage1.Controls.Add(ComboBox6) + TabPage1.Controls.Add(ComboBox5) + TabPage1.Controls.Add(ComboBox4) + TabPage1.Controls.Add(ComboBox3) + TabPage1.Controls.Add(ComboBox2) + TabPage1.Controls.Add(ComboBox1) + TabPage1.Controls.Add(txtSaveFreq) + TabPage1.Controls.Add(txtFrequency) + TabPage1.Controls.Add(txtPower24) + TabPage1.Controls.Add(txtPower) + TabPage1.Controls.Add(txtFECN) + TabPage1.Controls.Add(txtMCS) + TabPage1.Controls.Add(txtFECK) + TabPage1.Controls.Add(txtFreq24) + TabPage1.Controls.Add(txtLDPC) + TabPage1.Controls.Add(txtSTBC) + TabPage1.Location = New Point(4, 24) + TabPage1.Name = "TabPage1" + TabPage1.Padding = New Padding(3) + TabPage1.Size = New Size(462, 339) + TabPage1.TabIndex = 0 + TabPage1.Text = "WFB Settings" + ' + ' ComboBox9 + ' + ComboBox9.FormattingEnabled = True + ComboBox9.Location = New Point(19, 252) + ComboBox9.Name = "ComboBox9" + ComboBox9.Size = New Size(214, 23) + ComboBox9.TabIndex = 34 + ' + ' ComboBox8 + ' + ComboBox8.FormattingEnabled = True + ComboBox8.Location = New Point(19, 223) + ComboBox8.Name = "ComboBox8" + ComboBox8.Size = New Size(214, 23) + ComboBox8.TabIndex = 33 + ' + ' ComboBox7 + ' + ComboBox7.FormattingEnabled = True + ComboBox7.Location = New Point(19, 194) + ComboBox7.Name = "ComboBox7" + ComboBox7.Size = New Size(214, 23) + ComboBox7.TabIndex = 32 + ' + ' ComboBox6 + ' + ComboBox6.FormattingEnabled = True + ComboBox6.Location = New Point(19, 165) + ComboBox6.Name = "ComboBox6" + ComboBox6.Size = New Size(214, 23) + ComboBox6.TabIndex = 31 + ' + ' ComboBox5 + ' + ComboBox5.FormattingEnabled = True + ComboBox5.Location = New Point(19, 136) + ComboBox5.Name = "ComboBox5" + ComboBox5.Size = New Size(214, 23) + ComboBox5.TabIndex = 30 + ' + ' ComboBox4 + ' + ComboBox4.FormattingEnabled = True + ComboBox4.Location = New Point(19, 106) + ComboBox4.Name = "ComboBox4" + ComboBox4.Size = New Size(214, 23) + ComboBox4.TabIndex = 29 + ' + ' ComboBox3 + ' + ComboBox3.FormattingEnabled = True + ComboBox3.Location = New Point(19, 77) + ComboBox3.Name = "ComboBox3" + ComboBox3.Size = New Size(214, 23) + ComboBox3.TabIndex = 28 + ' + ' ComboBox2 + ' + ComboBox2.FormattingEnabled = True + ComboBox2.Location = New Point(19, 48) + ComboBox2.Name = "ComboBox2" + ComboBox2.Size = New Size(214, 23) + ComboBox2.TabIndex = 27 + ' + ' ComboBox1 + ' + ComboBox1.FormattingEnabled = True + ComboBox1.Location = New Point(19, 20) + ComboBox1.Name = "ComboBox1" + ComboBox1.Size = New Size(214, 23) + ComboBox1.TabIndex = 26 + ' + ' txtSaveFreq + ' + txtSaveFreq.Location = New Point(140, 310) + txtSaveFreq.Name = "txtSaveFreq" + txtSaveFreq.Size = New Size(58, 23) + txtSaveFreq.TabIndex = 25 + txtSaveFreq.Text = "3. Save" + btnToolTip.SetToolTip(txtSaveFreq, "Save the WFB settings to the" & vbCrLf & "local wfb.conf file") + txtSaveFreq.UseVisualStyleBackColor = True + ' + ' TabPage2 + ' + TabPage2.BackColor = Color.WhiteSmoke + TabPage2.Controls.Add(cmbLuminance) + TabPage2.Controls.Add(cmbSaturation) + TabPage2.Controls.Add(cmbHue) + TabPage2.Controls.Add(cmbContrast) + TabPage2.Controls.Add(cmbExposure) + TabPage2.Controls.Add(cmbBitrate) + TabPage2.Controls.Add(cmbCodec) + TabPage2.Controls.Add(cmbFPS) + TabPage2.Controls.Add(cmbResolution) + TabPage2.Controls.Add(txtSaveCam) + TabPage2.Controls.Add(txtResolution) + TabPage2.Controls.Add(txtSensor) + TabPage2.Controls.Add(txtFPS) + TabPage2.Controls.Add(txtLuminance) + TabPage2.Controls.Add(txtEncode) + TabPage2.Controls.Add(txtSaturation) + TabPage2.Controls.Add(txtBitrate) + TabPage2.Controls.Add(txtHue) + TabPage2.Controls.Add(txtExposure) + TabPage2.Controls.Add(txtContrast) + TabPage2.Location = New Point(4, 24) + TabPage2.Name = "TabPage2" + TabPage2.Padding = New Padding(3) + TabPage2.Size = New Size(462, 339) + TabPage2.TabIndex = 1 + TabPage2.Text = "Camera Settings" + ' + ' cmbLuminance + ' + cmbLuminance.FormattingEnabled = True + cmbLuminance.Location = New Point(19, 252) + cmbLuminance.Name = "cmbLuminance" + cmbLuminance.Size = New Size(214, 23) + cmbLuminance.TabIndex = 43 + ' + ' cmbSaturation + ' + cmbSaturation.FormattingEnabled = True + cmbSaturation.Location = New Point(19, 223) + cmbSaturation.Name = "cmbSaturation" + cmbSaturation.Size = New Size(214, 23) + cmbSaturation.TabIndex = 42 + ' + ' cmbHue + ' + cmbHue.FormattingEnabled = True + cmbHue.Location = New Point(19, 194) + cmbHue.Name = "cmbHue" + cmbHue.Size = New Size(214, 23) + cmbHue.TabIndex = 41 + ' + ' cmbContrast + ' + cmbContrast.FormattingEnabled = True + cmbContrast.Location = New Point(19, 165) + cmbContrast.Name = "cmbContrast" + cmbContrast.Size = New Size(214, 23) + cmbContrast.TabIndex = 40 + ' + ' cmbExposure + ' + cmbExposure.FormattingEnabled = True + cmbExposure.Location = New Point(19, 136) + cmbExposure.Name = "cmbExposure" + cmbExposure.Size = New Size(214, 23) + cmbExposure.TabIndex = 39 + ' + ' cmbBitrate + ' + cmbBitrate.FormattingEnabled = True + cmbBitrate.Location = New Point(19, 106) + cmbBitrate.Name = "cmbBitrate" + cmbBitrate.Size = New Size(214, 23) + cmbBitrate.TabIndex = 38 + ' + ' cmbCodec + ' + cmbCodec.FormattingEnabled = True + cmbCodec.Location = New Point(19, 77) + cmbCodec.Name = "cmbCodec" + cmbCodec.Size = New Size(214, 23) + cmbCodec.TabIndex = 37 + ' + ' cmbFPS + ' + cmbFPS.FormattingEnabled = True + cmbFPS.Location = New Point(19, 48) + cmbFPS.Name = "cmbFPS" + cmbFPS.Size = New Size(214, 23) + cmbFPS.TabIndex = 36 + ' + ' cmbResolution + ' + cmbResolution.FormattingEnabled = True + cmbResolution.Location = New Point(19, 20) + cmbResolution.Name = "cmbResolution" + cmbResolution.Size = New Size(214, 23) + cmbResolution.TabIndex = 35 + ' + ' txtSaveCam + ' + txtSaveCam.Location = New Point(140, 310) + txtSaveCam.Name = "txtSaveCam" + txtSaveCam.Size = New Size(58, 23) + txtSaveCam.TabIndex = 26 + txtSaveCam.Text = "3. Save" + btnToolTip.SetToolTip(txtSaveCam, "Save the Majestic settings to the" & vbCrLf & "local file majestic.yaml file" & vbCrLf) + txtSaveCam.UseVisualStyleBackColor = True + ' + ' btnRead + ' + btnRead.Location = New Point(76, 408) + btnRead.Name = "btnRead" + btnRead.Size = New Size(60, 30) + btnRead.TabIndex = 23 + btnRead.Text = "2. Read" + btnToolTip.SetToolTip(btnRead, "Read the settings from the local files" & vbCrLf & "that was previously received from the camera") + btnRead.UseVisualStyleBackColor = True + ' + ' Label1 + ' + Label1.AutoSize = True + Label1.Location = New Point(14, 384) + Label1.Name = "Label1" + Label1.Size = New Size(159, 15) + Label1.TabIndex = 24 + Label1.Text = "OpenIPC Camera IP Address:" + ' + ' Form1 + ' + AutoScaleDimensions = New SizeF(7.0F, 15.0F) + AutoScaleMode = AutoScaleMode.Font + ClientSize = New Size(495, 450) + Controls.Add(Label1) + Controls.Add(btnRead) + Controls.Add(TabControl1) + Controls.Add(btnSend) + Controls.Add(txtIP) + Controls.Add(btnGet) + FormBorderStyle = FormBorderStyle.FixedSingle + MaximizeBox = False + Name = "Form1" + StartPosition = FormStartPosition.CenterScreen + Text = "OpenIPC Configurator" + TabControl1.ResumeLayout(False) + TabPage1.ResumeLayout(False) + TabPage1.PerformLayout() + TabPage2.ResumeLayout(False) + TabPage2.PerformLayout() + ResumeLayout(False) + PerformLayout() + End Sub + + Friend WithEvents btnGet As Button + Friend WithEvents txtIP As TextBox + Friend WithEvents btnSend As Button + Friend WithEvents txtFrequency As TextBox + Friend WithEvents txtResolution As TextBox + Friend WithEvents txtFPS As TextBox + Friend WithEvents txtEncode As TextBox + Friend WithEvents txtBitrate As TextBox + Friend WithEvents txtExposure As TextBox + Friend WithEvents txtContrast As TextBox + Friend WithEvents txtHue As TextBox + Friend WithEvents txtSaturation As TextBox + Friend WithEvents txtLuminance As TextBox + Friend WithEvents txtPower As TextBox + Friend WithEvents txtSensor As TextBox + Friend WithEvents txtFreq24 As TextBox + Friend WithEvents txtMCS As TextBox + Friend WithEvents txtLDPC As TextBox + Friend WithEvents txtSTBC As TextBox + Friend WithEvents txtFECN As TextBox + Friend WithEvents txtFECK As TextBox + Friend WithEvents txtPower24 As TextBox + Friend WithEvents TabControl1 As TabControl + Friend WithEvents TabPage1 As TabPage + Friend WithEvents TabPage2 As TabPage + Friend WithEvents txtSaveFreq As Button + Friend WithEvents txtSaveCam As Button + Friend WithEvents btnRead As Button + Friend WithEvents ComboBox1 As ComboBox + Friend WithEvents ComboBox2 As ComboBox + Friend WithEvents ComboBox4 As ComboBox + Friend WithEvents ComboBox3 As ComboBox + Friend WithEvents ComboBox9 As ComboBox + Friend WithEvents ComboBox8 As ComboBox + Friend WithEvents ComboBox7 As ComboBox + Friend WithEvents ComboBox6 As ComboBox + Friend WithEvents ComboBox5 As ComboBox + Friend WithEvents cmbLuminance As ComboBox + Friend WithEvents cmbSaturation As ComboBox + Friend WithEvents cmbHue As ComboBox + Friend WithEvents cmbContrast As ComboBox + Friend WithEvents cmbExposure As ComboBox + Friend WithEvents cmbBitrate As ComboBox + Friend WithEvents cmbCodec As ComboBox + Friend WithEvents cmbFPS As ComboBox + Friend WithEvents cmbResolution As ComboBox + Friend WithEvents Label1 As Label + Friend WithEvents btnToolTip As ToolTip + +End Class diff --git a/Form1.resx b/Configurator.resx similarity index 97% rename from Form1.resx rename to Configurator.resx index e2b8317..c9d3ef0 100644 --- a/Form1.resx +++ b/Configurator.resx @@ -1,126 +1,126 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - 49 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 49 + \ No newline at end of file diff --git a/Form1.vb b/Configurator.vb old mode 100644 new mode 100755 similarity index 91% rename from Form1.vb rename to Configurator.vb index 2948edd..957d2da --- a/Form1.vb +++ b/Configurator.vb @@ -1,461 +1,497 @@ -Imports System.Windows.Forms.VisualStyles.VisualStyleElement - -Public Class Form1 - Private Sub btnGet_Click(sender As Object, e As EventArgs) Handles btnGet.Click - If IsValidIP(txtIP.Text) Then - With New Process() - .StartInfo.UseShellExecute = False - .StartInfo.FileName = "C:\OpenIPCConfigurator\get.bat" - .StartInfo.Arguments = String.Format("{0}", txtIP.Text) - .StartInfo.RedirectStandardOutput = True - .Start() - End With - Else - MsgBox("Please enter a valid IP address") - End If - End Sub - - Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click - If IsValidIP(txtIP.Text) Then - With New Process() - .StartInfo.UseShellExecute = False - .StartInfo.FileName = "C:\OpenIPCConfigurator\send.bat" - .StartInfo.Arguments = String.Format("{0}", txtIP.Text) - .StartInfo.RedirectStandardOutput = True - .Start() - End With - Else - MsgBox("Please enter a valid IP address") - End If - End Sub - - Public Function ReadLine(lineNumber As Integer, lines As List(Of String)) As String - Return lines(lineNumber - 1) - End Function - - Private Sub txtSaveFreq_Click(sender As Object, e As EventArgs) Handles txtSaveFreq.Click - Dim WFBfilePath As String = "C:\OpenIPCConfigurator\wfb.conf" - Dim lines = IO.File.ReadAllLines(WFBfilePath) - If lines(6).StartsWith("channel=") Then - lines(6) = txtFrequency.Text - End If - If lines(9).StartsWith("driver_txpower_override=") Then - lines(9) = txtPower.Text - End If - If lines(7).StartsWith("frequency=") Then - lines(7) = txtFreq24.Text - End If - If lines(8).StartsWith("txpower=") Then - lines(8) = txtPower24.Text - End If - If lines(11).StartsWith("stbc=") Then - lines(11) = txtSTBC.Text - End If - If lines(12).StartsWith("ldpc=") Then - lines(12) = txtLDPC.Text - End If - If lines(13).StartsWith("mcs_index=") Then - lines(13) = txtMCS.Text - End If - If lines(19).StartsWith("fec_k=") Then - lines(19) = txtFECK.Text - End If - If lines(20).StartsWith("fec_n=") Then - lines(20) = txtFECN.Text - End If - IO.File.WriteAllLines(WFBfilePath, lines) - End Sub - - Private Sub txtSaveCam_Click(sender As Object, e As EventArgs) Handles txtSaveCam.Click - Dim CamfilePath As String = "C:\OpenIPCConfigurator\majestic.yaml" - Dim lines = IO.File.ReadAllLines(CamfilePath) - If lines(7).StartsWith(" contrast: ") Then - lines(7) = txtContrast.Text - End If - If lines(8).StartsWith(" hue: ") Then - lines(8) = txtHue.Text - End If - If lines(9).StartsWith(" saturation:") Then - lines(9) = txtSaturation.Text - End If - If lines(10).StartsWith(" luminance: ") Then - lines(10) = txtLuminance.Text - End If - If lines(23).StartsWith(" bitrate: ") Then - lines(23) = txtBitrate.Text - End If - If lines(24).StartsWith(" codec: ") Then - lines(24) = txtEncode.Text - End If - If lines(27).StartsWith(" size: ") Then - lines(27) = txtResolution.Text - End If - If lines(28).StartsWith(" fps: ") Then - lines(28) = txtFPS.Text - End If - If lines(59).StartsWith(" sensorConfig: ") Then - lines(59) = txtSensor.Text - End If - If lines(60).StartsWith(" exposure: ") Then - lines(60) = txtExposure.Text - End If - IO.File.WriteAllLines(CamfilePath, lines) - End Sub - - Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click - Dim WFBreader As New IO.StreamReader("C:\OpenIPCConfigurator\wfb.conf") - Dim Camreader As New IO.StreamReader("C:\OpenIPCConfigurator\majestic.yaml") - Dim WFBallLines = New List(Of String) - Dim CamallLines = New List(Of String) - Do While Not WFBreader.EndOfStream - WFBallLines.Add(WFBreader.ReadLine) - Loop - WFBreader.Close() - txtFrequency.Text = ReadLine(7, WFBallLines) - txtPower.Text = ReadLine(10, WFBallLines) - txtFreq24.Text = ReadLine(8, WFBallLines) - txtPower24.Text = ReadLine(9, WFBallLines) - txtMCS.Text = ReadLine(14, WFBallLines) - txtSTBC.Text = ReadLine(12, WFBallLines) - txtLDPC.Text = ReadLine(13, WFBallLines) - txtFECK.Text = ReadLine(20, WFBallLines) - txtFECN.Text = ReadLine(21, WFBallLines) - - Do While Not Camreader.EndOfStream - CamallLines.Add(Camreader.ReadLine) - Loop - Camreader.Close() - txtResolution.Text = ReadLine(28, CamallLines) - txtFPS.Text = ReadLine(29, CamallLines) - txtEncode.Text = ReadLine(25, CamallLines) - txtBitrate.Text = ReadLine(24, CamallLines) - txtExposure.Text = ReadLine(61, CamallLines) - txtContrast.Text = ReadLine(8, CamallLines) - txtHue.Text = ReadLine(9, CamallLines) - txtSaturation.Text = ReadLine(10, CamallLines) - txtLuminance.Text = ReadLine(11, CamallLines) - txtSensor.Text = ReadLine(60, CamallLines) - End Sub - - Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load - - ComboBox1.Items.Clear() - ComboBox1.Items.Add("5180 MHz [36]") - ComboBox1.Items.Add("5200 MHz [40]") - ComboBox1.Items.Add("5220 MHz [44]") - ComboBox1.Items.Add("5240 MHz [48]") - ComboBox1.Items.Add("5260 MHz [52]") - ComboBox1.Items.Add("5280 MHz [56]") - ComboBox1.Items.Add("5300 MHz [60]") - ComboBox1.Items.Add("5320 MHz [64]") - ComboBox1.Items.Add("5500 MHz [100]") - ComboBox1.Items.Add("5520 MHz [104]") - ComboBox1.Items.Add("5540 MHz [108]") - ComboBox1.Items.Add("5560 MHz [112]") - ComboBox1.Items.Add("5580 MHz [116]") - ComboBox1.Items.Add("5600 MHz [120]") - ComboBox1.Items.Add("5620 MHz [124]") - ComboBox1.Items.Add("5640 MHz [128]") - ComboBox1.Items.Add("5660 MHz [132]") - ComboBox1.Items.Add("5680 MHz [136]") - ComboBox1.Items.Add("5700 MHz [140]") - ComboBox1.Items.Add("5720 MHz [144]") - ComboBox1.Items.Add("5745 MHz [149]") - ComboBox1.Items.Add("5765 MHz [153]") - ComboBox1.Items.Add("5785 MHz [157]") - ComboBox1.Items.Add("5805 MHz [161]") - ComboBox1.Items.Add("5825 MHz [165]") - ComboBox1.Items.Add("5845 MHz [169]") - ComboBox1.Items.Add("5865 MHz [173]") - ComboBox1.Items.Add("5885 MHz [177]") - ComboBox1.Text = "Select 5.8GHz Frequency" - - ComboBox2.Items.Clear() - ComboBox2.Items.Add("20") - ComboBox2.Items.Add("25") - ComboBox2.Items.Add("30") - ComboBox2.Items.Add("35") - ComboBox2.Items.Add("40") - ComboBox2.Items.Add("45") - ComboBox2.Items.Add("50") - ComboBox2.Items.Add("55") - ComboBox2.Items.Add("58") - ComboBox2.Text = "Select 5.8GHz TX Power" - - ComboBox3.Items.Clear() - ComboBox3.Items.Add("2412 MHz [1]") - ComboBox3.Items.Add("2417 MHz [2]") - ComboBox3.Items.Add("2422 MHz [3]") - ComboBox3.Items.Add("2427 MHz [4]") - ComboBox3.Items.Add("2432 MHz [5]") - ComboBox3.Items.Add("2437 MHz [6]") - ComboBox3.Items.Add("2442 MHz [7]") - ComboBox3.Items.Add("2447 MHz [8]") - ComboBox3.Items.Add("2452 MHz [9]") - ComboBox3.Items.Add("2457 MHz [10]") - ComboBox3.Items.Add("2462 MHz [11]") - ComboBox3.Items.Add("2467 MHz [12]") - ComboBox3.Items.Add("2472 MHz [13]") - ComboBox3.Items.Add("2484 MHz [14]") - ComboBox3.Text = "Select 2.4GHz Frequency" - - ComboBox4.Items.Clear() - ComboBox4.Items.Add("20") - ComboBox4.Items.Add("25") - ComboBox4.Items.Add("30") - ComboBox4.Items.Add("35") - ComboBox4.Items.Add("40") - ComboBox4.Items.Add("45") - ComboBox4.Items.Add("50") - ComboBox4.Items.Add("55") - ComboBox4.Items.Add("58") - ComboBox4.Text = "Select 2.4GHz TX Power" - - ComboBox5.Items.Clear() - ComboBox5.Items.Add("0") - ComboBox5.Items.Add("1") - ComboBox5.Items.Add("2") - ComboBox5.Items.Add("3") - ComboBox5.Items.Add("4") - ComboBox5.Items.Add("5") - ComboBox5.Items.Add("6") - ComboBox5.Items.Add("7") - ComboBox5.Items.Add("8") - ComboBox5.Items.Add("9") - ComboBox5.Text = "Select MCS INDEX" - - ComboBox6.Items.Clear() - ComboBox6.Items.Add("0") - ComboBox6.Items.Add("1") - ComboBox6.Text = "Select STBC" - - ComboBox7.Items.Clear() - ComboBox7.Items.Add("0") - ComboBox7.Items.Add("1") - ComboBox7.Text = "Select LDPC" - - ComboBox8.Items.Clear() - ComboBox8.Items.Add("1") - ComboBox8.Items.Add("2") - ComboBox8.Items.Add("3") - ComboBox8.Items.Add("4") - ComboBox8.Items.Add("5") - ComboBox8.Items.Add("6") - ComboBox8.Items.Add("7") - ComboBox8.Items.Add("8") - ComboBox8.Items.Add("9") - ComboBox8.Items.Add("10") - ComboBox8.Items.Add("11") - ComboBox8.Items.Add("12") - ComboBox8.Text = "Select FEC K" - - ComboBox9.Items.Clear() - ComboBox9.Items.Add("1") - ComboBox9.Items.Add("2") - ComboBox9.Items.Add("3") - ComboBox9.Items.Add("4") - ComboBox9.Items.Add("5") - ComboBox9.Items.Add("6") - ComboBox9.Items.Add("7") - ComboBox9.Items.Add("8") - ComboBox9.Items.Add("9") - ComboBox9.Items.Add("10") - ComboBox9.Items.Add("11") - ComboBox9.Items.Add("12") - ComboBox9.Text = "Select FEC N" - - cmbResolution.Items.Clear() - cmbResolution.Items.Add("1280x720") - cmbResolution.Items.Add("1920x1080") - cmbResolution.Items.Add("3200x1800") - cmbResolution.Items.Add("3840x2160") - cmbResolution.Text = "Select Resolution" - - cmbFPS.Items.Clear() - cmbFPS.Items.Add("20") - cmbFPS.Items.Add("30") - cmbFPS.Items.Add("50") - cmbFPS.Items.Add("60") - cmbFPS.Items.Add("90") - cmbFPS.Items.Add("100") - cmbFPS.Items.Add("110") - cmbFPS.Items.Add("120") - cmbFPS.Text = "Select FPS" - - cmbCodec.Items.Clear() - cmbCodec.Items.Add("h264") - cmbCodec.Items.Add("h265") - cmbCodec.Text = "Select Codec" - - cmbBitrate.Items.Clear() - cmbBitrate.Items.Add("1024") - cmbBitrate.Items.Add("2048") - cmbBitrate.Items.Add("3072") - cmbBitrate.Items.Add("4096") - cmbBitrate.Items.Add("5120") - cmbBitrate.Items.Add("6144") - cmbBitrate.Items.Add("7168") - cmbBitrate.Items.Add("8192") - cmbBitrate.Items.Add("9216") - cmbBitrate.Items.Add("10240") - cmbBitrate.Items.Add("11264") - cmbBitrate.Items.Add("12288") - cmbBitrate.Items.Add("13312") - cmbBitrate.Text = "Select Bitrate" - - cmbExposure.Items.Clear() - cmbExposure.Items.Add("1") - cmbExposure.Items.Add("5") - cmbExposure.Items.Add("10") - cmbExposure.Items.Add("20") - cmbExposure.Items.Add("30") - cmbExposure.Items.Add("40") - cmbExposure.Items.Add("50") - cmbExposure.Items.Add("60") - cmbExposure.Text = "Select Exposure" - - cmbContrast.Items.Clear() - cmbContrast.Items.Add("1") - cmbContrast.Items.Add("5") - cmbContrast.Items.Add("10") - cmbContrast.Items.Add("20") - cmbContrast.Items.Add("30") - cmbContrast.Items.Add("40") - cmbContrast.Items.Add("50") - cmbContrast.Items.Add("60") - cmbContrast.Items.Add("70") - cmbContrast.Items.Add("80") - cmbContrast.Items.Add("90") - cmbContrast.Items.Add("100") - cmbContrast.Text = "Select Contrast" - - cmbHue.Items.Clear() - cmbHue.Items.Add("1") - cmbHue.Items.Add("5") - cmbHue.Items.Add("10") - cmbHue.Items.Add("20") - cmbHue.Items.Add("30") - cmbHue.Items.Add("40") - cmbHue.Items.Add("50") - cmbHue.Items.Add("60") - cmbHue.Items.Add("70") - cmbHue.Items.Add("80") - cmbHue.Items.Add("90") - cmbHue.Items.Add("100") - cmbHue.Text = "Select Hue" - - cmbSaturation.Items.Clear() - cmbSaturation.Items.Add("1") - cmbSaturation.Items.Add("5") - cmbSaturation.Items.Add("10") - cmbSaturation.Items.Add("20") - cmbSaturation.Items.Add("30") - cmbSaturation.Items.Add("40") - cmbSaturation.Items.Add("50") - cmbSaturation.Items.Add("60") - cmbSaturation.Items.Add("70") - cmbSaturation.Items.Add("80") - cmbSaturation.Items.Add("90") - cmbSaturation.Items.Add("100") - cmbSaturation.Text = "Select Saturation" - - - cmbLuminance.Items.Clear() - cmbLuminance.Items.Add("1") - cmbLuminance.Items.Add("5") - cmbLuminance.Items.Add("10") - cmbLuminance.Items.Add("20") - cmbLuminance.Items.Add("30") - cmbLuminance.Items.Add("40") - cmbLuminance.Items.Add("50") - cmbLuminance.Items.Add("60") - cmbLuminance.Items.Add("70") - cmbLuminance.Items.Add("80") - cmbLuminance.Items.Add("90") - cmbLuminance.Items.Add("100") - cmbLuminance.Text = "Select Luminance" - End Sub - - Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged - Dim sInput = ComboBox1.SelectedItem.ToString - Dim last4Letter = sInput.Substring(sInput.Length - 4).Replace("]", "").Replace("[", "") - txtFrequency.Text = "channel=" & last4Letter - txtFreq24.Text = "frequency=" - End Sub - - Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged - txtPower.Text = "driver_txpower_override=" & ComboBox2.SelectedItem.ToString - End Sub - - Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged - Dim sInput = ComboBox3.SelectedItem.ToString - Dim last3Letter = sInput.Substring(sInput.Length - 3).Replace("]", "").Replace("[", "") - txtFrequency.Text = "channel=" - txtFreq24.Text = "frequency=" & last3Letter - End Sub - - Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox4.SelectedIndexChanged - txtPower24.Text = "txpower=" & ComboBox4.SelectedItem.ToString - End Sub - - Private Sub ComboBox5_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox5.SelectedIndexChanged - txtMCS.Text = "msc_index=" & ComboBox5.SelectedItem.ToString - End Sub - - Private Sub ComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox6.SelectedIndexChanged - txtSTBC.Text = "stbc=" & ComboBox6.SelectedItem.ToString - End Sub - - Private Sub ComboBox7_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox7.SelectedIndexChanged - txtLDPC.Text = "ldpc=" & ComboBox7.SelectedItem.ToString - End Sub - - Private Sub ComboBox8_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox8.SelectedIndexChanged - txtFECK.Text = "fec_k=" & ComboBox8.SelectedItem.ToString - End Sub - - Private Sub ComboBox9_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox9.SelectedIndexChanged - txtFECN.Text = "fec_n=" & ComboBox9.SelectedItem.ToString - End Sub - - Private Sub cmbResolution_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbResolution.SelectedIndexChanged - txtResolution.Text = " size: " & cmbResolution.SelectedItem.ToString - End Sub - - Private Sub cmbFPS_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFPS.SelectedIndexChanged - txtFPS.Text = " fps: " & cmbFPS.SelectedItem.ToString - End Sub - - Private Sub cmbCodec_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbCodec.SelectedIndexChanged - txtEncode.Text = " codec: " & cmbCodec.SelectedItem.ToString - End Sub - - Private Sub cmbBitrate_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbBitrate.SelectedIndexChanged - txtBitrate.Text = " bitrate: " & cmbBitrate.SelectedItem.ToString - End Sub - - Private Sub cmbExposure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbExposure.SelectedIndexChanged - txtExposure.Text = " exposure: " & cmbExposure.SelectedItem.ToString - End Sub - - Private Sub cmbContrast_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbContrast.SelectedIndexChanged - txtContrast.Text = " contrast: " & cmbContrast.SelectedItem.ToString - End Sub - - Private Sub cmbHue_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbHue.SelectedIndexChanged - txtHue.Text = " hue: " & cmbHue.SelectedItem.ToString - End Sub - - Private Sub cmbSaturation_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbSaturation.SelectedIndexChanged - txtSaturation.Text = " saturation: " & cmbSaturation.SelectedItem.ToString - End Sub - - Private Sub cmbLuminance_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbLuminance.SelectedIndexChanged - txtLuminance.Text = " luminance: " & cmbLuminance.SelectedItem.ToString - End Sub - - Function IsValidIP(ByVal ipAddress As String) As Boolean - Return System.Text.RegularExpressions.Regex.IsMatch(ipAddress, - "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$") - End Function -End Class +Imports System.Runtime.CompilerServices + +Public Class Configurator + Private Sub btnGet_Click(sender As Object, e As EventArgs) Handles btnGet.Click + Dim extern = "extern.bat" + If Not System.IO.File.Exists(extern) Then + MsgBox("File " + extern + " not found!") + Return + End If + + If IsValidIP(txtIP.Text) Then + With New Process() + .StartInfo.UseShellExecute = False + .StartInfo.FileName = extern + .StartInfo.Arguments = "dl " + String.Format("{0}", txtIP.Text) + .StartInfo.RedirectStandardOutput = False + .Start() + End With + Else + MsgBox("Please enter a valid IP address") + End If + End Sub + + Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click + Dim extern = "extern.bat" + If Not System.IO.File.Exists(extern) Then + MsgBox("File " + extern + " not found!") + Return + End If + + If IsValidIP(txtIP.Text) Then + With New Process() + .StartInfo.UseShellExecute = False + .StartInfo.FileName = extern + .StartInfo.Arguments = "ul " + String.Format("{0}", txtIP.Text) + .StartInfo.RedirectStandardOutput = False + .Start() + End With + Else + MsgBox("Please enter a valid IP address") + End If + End Sub + + Public Function ReadLine(lineNumber As Integer, lines As List(Of String)) As String + Return lines(lineNumber - 1) + End Function + + Private Sub txtSaveFreq_Click(sender As Object, e As EventArgs) Handles txtSaveFreq.Click + Dim wfbconf = "wfb.conf" + If Not System.IO.File.Exists(wfbconf) Then + MsgBox("File " + wfbconf + " not found!") + Return + End If + + Dim WFBfilePath As String = wfbconf + Dim lines = IO.File.ReadAllLines(WFBfilePath) + If lines(6).StartsWith("channel=") Then + lines(6) = txtFrequency.Text + End If + If lines(9).StartsWith("driver_txpower_override=") Then + lines(9) = txtPower.Text + End If + If lines(7).StartsWith("frequency=") Then + lines(7) = txtFreq24.Text + End If + If lines(8).StartsWith("txpower=") Then + lines(8) = txtPower24.Text + End If + If lines(11).StartsWith("stbc=") Then + lines(11) = txtSTBC.Text + End If + If lines(12).StartsWith("ldpc=") Then + lines(12) = txtLDPC.Text + End If + If lines(13).StartsWith("mcs_index=") Then + lines(13) = txtMCS.Text + End If + If lines(19).StartsWith("fec_k=") Then + lines(19) = txtFECK.Text + End If + If lines(20).StartsWith("fec_n=") Then + lines(20) = txtFECN.Text + End If + IO.File.WriteAllLines(WFBfilePath, lines) + End Sub + + Private Sub txtSaveCam_Click(sender As Object, e As EventArgs) Handles txtSaveCam.Click + Dim majestic = "majestic.yaml" + If Not System.IO.File.Exists(majestic) Then + MsgBox("File " + majestic + " not found!") + Return + End If + + Dim CamfilePath As String = majestic + Dim lines = IO.File.ReadAllLines(CamfilePath) + If lines(7).StartsWith(" contrast: ") Then + lines(7) = txtContrast.Text + End If + If lines(8).StartsWith(" hue: ") Then + lines(8) = txtHue.Text + End If + If lines(9).StartsWith(" saturation:") Then + lines(9) = txtSaturation.Text + End If + If lines(10).StartsWith(" luminance: ") Then + lines(10) = txtLuminance.Text + End If + If lines(23).StartsWith(" bitrate: ") Then + lines(23) = txtBitrate.Text + End If + If lines(24).StartsWith(" codec: ") Then + lines(24) = txtEncode.Text + End If + If lines(27).StartsWith(" size: ") Then + lines(27) = txtResolution.Text + End If + If lines(28).StartsWith(" fps: ") Then + lines(28) = txtFPS.Text + End If + If lines(59).StartsWith(" sensorConfig: ") Then + lines(59) = txtSensor.Text + End If + If lines(60).StartsWith(" exposure: ") Then + lines(60) = txtExposure.Text + End If + IO.File.WriteAllLines(CamfilePath, lines) + End Sub + + Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click + Dim wfbconf = "wfb.conf" + If Not System.IO.File.Exists(wfbconf) Then + MsgBox("File " + wfbconf + " not found!") + Return + End If + + Dim majestic = "majestic.yaml" + If Not System.IO.File.Exists(majestic) Then + MsgBox("File " + majestic + " not found!") + Return + End If + + Dim WFBreader As New IO.StreamReader(wfbconf) + Dim Camreader As New IO.StreamReader(majestic) + Dim WFBallLines = New List(Of String) + Dim CamallLines = New List(Of String) + Do While Not WFBreader.EndOfStream + WFBallLines.Add(WFBreader.ReadLine) + Loop + WFBreader.Close() + txtFrequency.Text = ReadLine(7, WFBallLines) + txtPower.Text = ReadLine(10, WFBallLines) + txtFreq24.Text = ReadLine(8, WFBallLines) + txtPower24.Text = ReadLine(9, WFBallLines) + txtMCS.Text = ReadLine(14, WFBallLines) + txtSTBC.Text = ReadLine(12, WFBallLines) + txtLDPC.Text = ReadLine(13, WFBallLines) + txtFECK.Text = ReadLine(20, WFBallLines) + txtFECN.Text = ReadLine(21, WFBallLines) + + Do While Not Camreader.EndOfStream + CamallLines.Add(Camreader.ReadLine) + Loop + Camreader.Close() + txtResolution.Text = ReadLine(28, CamallLines) + txtFPS.Text = ReadLine(29, CamallLines) + txtEncode.Text = ReadLine(25, CamallLines) + txtBitrate.Text = ReadLine(24, CamallLines) + txtExposure.Text = ReadLine(61, CamallLines) + txtContrast.Text = ReadLine(8, CamallLines) + txtHue.Text = ReadLine(9, CamallLines) + txtSaturation.Text = ReadLine(10, CamallLines) + txtLuminance.Text = ReadLine(11, CamallLines) + txtSensor.Text = ReadLine(60, CamallLines) + End Sub + + Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load + + ComboBox1.Items.Clear() + ComboBox1.Items.Add("5180 MHz [36]") + ComboBox1.Items.Add("5200 MHz [40]") + ComboBox1.Items.Add("5220 MHz [44]") + ComboBox1.Items.Add("5240 MHz [48]") + ComboBox1.Items.Add("5260 MHz [52]") + ComboBox1.Items.Add("5280 MHz [56]") + ComboBox1.Items.Add("5300 MHz [60]") + ComboBox1.Items.Add("5320 MHz [64]") + ComboBox1.Items.Add("5500 MHz [100]") + ComboBox1.Items.Add("5520 MHz [104]") + ComboBox1.Items.Add("5540 MHz [108]") + ComboBox1.Items.Add("5560 MHz [112]") + ComboBox1.Items.Add("5580 MHz [116]") + ComboBox1.Items.Add("5600 MHz [120]") + ComboBox1.Items.Add("5620 MHz [124]") + ComboBox1.Items.Add("5640 MHz [128]") + ComboBox1.Items.Add("5660 MHz [132]") + ComboBox1.Items.Add("5680 MHz [136]") + ComboBox1.Items.Add("5700 MHz [140]") + ComboBox1.Items.Add("5720 MHz [144]") + ComboBox1.Items.Add("5745 MHz [149]") + ComboBox1.Items.Add("5765 MHz [153]") + ComboBox1.Items.Add("5785 MHz [157]") + ComboBox1.Items.Add("5805 MHz [161]") + ComboBox1.Items.Add("5825 MHz [165]") + ComboBox1.Items.Add("5845 MHz [169]") + ComboBox1.Items.Add("5865 MHz [173]") + ComboBox1.Items.Add("5885 MHz [177]") + ComboBox1.Text = "Select 5.8GHz Frequency" + + ComboBox2.Items.Clear() + ComboBox2.Items.Add("20") + ComboBox2.Items.Add("25") + ComboBox2.Items.Add("30") + ComboBox2.Items.Add("35") + ComboBox2.Items.Add("40") + ComboBox2.Items.Add("45") + ComboBox2.Items.Add("50") + ComboBox2.Items.Add("55") + ComboBox2.Items.Add("58") + ComboBox2.Text = "Select 5.8GHz TX Power" + + ComboBox3.Items.Clear() + ComboBox3.Items.Add("2412 MHz [1]") + ComboBox3.Items.Add("2417 MHz [2]") + ComboBox3.Items.Add("2422 MHz [3]") + ComboBox3.Items.Add("2427 MHz [4]") + ComboBox3.Items.Add("2432 MHz [5]") + ComboBox3.Items.Add("2437 MHz [6]") + ComboBox3.Items.Add("2442 MHz [7]") + ComboBox3.Items.Add("2447 MHz [8]") + ComboBox3.Items.Add("2452 MHz [9]") + ComboBox3.Items.Add("2457 MHz [10]") + ComboBox3.Items.Add("2462 MHz [11]") + ComboBox3.Items.Add("2467 MHz [12]") + ComboBox3.Items.Add("2472 MHz [13]") + ComboBox3.Items.Add("2484 MHz [14]") + ComboBox3.Text = "Select 2.4GHz Frequency" + + ComboBox4.Items.Clear() + ComboBox4.Items.Add("20") + ComboBox4.Items.Add("25") + ComboBox4.Items.Add("30") + ComboBox4.Items.Add("35") + ComboBox4.Items.Add("40") + ComboBox4.Items.Add("45") + ComboBox4.Items.Add("50") + ComboBox4.Items.Add("55") + ComboBox4.Items.Add("58") + ComboBox4.Text = "Select 2.4GHz TX Power" + + ComboBox5.Items.Clear() + ComboBox5.Items.Add("0") + ComboBox5.Items.Add("1") + ComboBox5.Items.Add("2") + ComboBox5.Items.Add("3") + ComboBox5.Items.Add("4") + ComboBox5.Items.Add("5") + ComboBox5.Items.Add("6") + ComboBox5.Items.Add("7") + ComboBox5.Items.Add("8") + ComboBox5.Items.Add("9") + ComboBox5.Text = "Select MCS INDEX" + + ComboBox6.Items.Clear() + ComboBox6.Items.Add("0") + ComboBox6.Items.Add("1") + ComboBox6.Text = "Select STBC" + + ComboBox7.Items.Clear() + ComboBox7.Items.Add("0") + ComboBox7.Items.Add("1") + ComboBox7.Text = "Select LDPC" + + ComboBox8.Items.Clear() + ComboBox8.Items.Add("1") + ComboBox8.Items.Add("2") + ComboBox8.Items.Add("3") + ComboBox8.Items.Add("4") + ComboBox8.Items.Add("5") + ComboBox8.Items.Add("6") + ComboBox8.Items.Add("7") + ComboBox8.Items.Add("8") + ComboBox8.Items.Add("9") + ComboBox8.Items.Add("10") + ComboBox8.Items.Add("11") + ComboBox8.Items.Add("12") + ComboBox8.Text = "Select FEC K" + + ComboBox9.Items.Clear() + ComboBox9.Items.Add("1") + ComboBox9.Items.Add("2") + ComboBox9.Items.Add("3") + ComboBox9.Items.Add("4") + ComboBox9.Items.Add("5") + ComboBox9.Items.Add("6") + ComboBox9.Items.Add("7") + ComboBox9.Items.Add("8") + ComboBox9.Items.Add("9") + ComboBox9.Items.Add("10") + ComboBox9.Items.Add("11") + ComboBox9.Items.Add("12") + ComboBox9.Text = "Select FEC N" + + cmbResolution.Items.Clear() + cmbResolution.Items.Add("1280x720") + cmbResolution.Items.Add("1920x1080") + cmbResolution.Items.Add("3200x1800") + cmbResolution.Items.Add("3840x2160") + cmbResolution.Text = "Select Resolution" + + cmbFPS.Items.Clear() + cmbFPS.Items.Add("20") + cmbFPS.Items.Add("30") + cmbFPS.Items.Add("50") + cmbFPS.Items.Add("60") + cmbFPS.Items.Add("90") + cmbFPS.Items.Add("100") + cmbFPS.Items.Add("110") + cmbFPS.Items.Add("120") + cmbFPS.Text = "Select FPS" + + cmbCodec.Items.Clear() + cmbCodec.Items.Add("h264") + cmbCodec.Items.Add("h265") + cmbCodec.Text = "Select Codec" + + cmbBitrate.Items.Clear() + cmbBitrate.Items.Add("1024") + cmbBitrate.Items.Add("2048") + cmbBitrate.Items.Add("3072") + cmbBitrate.Items.Add("4096") + cmbBitrate.Items.Add("5120") + cmbBitrate.Items.Add("6144") + cmbBitrate.Items.Add("7168") + cmbBitrate.Items.Add("8192") + cmbBitrate.Items.Add("9216") + cmbBitrate.Items.Add("10240") + cmbBitrate.Items.Add("11264") + cmbBitrate.Items.Add("12288") + cmbBitrate.Items.Add("13312") + cmbBitrate.Text = "Select Bitrate" + + cmbExposure.Items.Clear() + cmbExposure.Items.Add("1") + cmbExposure.Items.Add("5") + cmbExposure.Items.Add("10") + cmbExposure.Items.Add("20") + cmbExposure.Items.Add("30") + cmbExposure.Items.Add("40") + cmbExposure.Items.Add("50") + cmbExposure.Items.Add("60") + cmbExposure.Text = "Select Exposure" + + cmbContrast.Items.Clear() + cmbContrast.Items.Add("1") + cmbContrast.Items.Add("5") + cmbContrast.Items.Add("10") + cmbContrast.Items.Add("20") + cmbContrast.Items.Add("30") + cmbContrast.Items.Add("40") + cmbContrast.Items.Add("50") + cmbContrast.Items.Add("60") + cmbContrast.Items.Add("70") + cmbContrast.Items.Add("80") + cmbContrast.Items.Add("90") + cmbContrast.Items.Add("100") + cmbContrast.Text = "Select Contrast" + + cmbHue.Items.Clear() + cmbHue.Items.Add("1") + cmbHue.Items.Add("5") + cmbHue.Items.Add("10") + cmbHue.Items.Add("20") + cmbHue.Items.Add("30") + cmbHue.Items.Add("40") + cmbHue.Items.Add("50") + cmbHue.Items.Add("60") + cmbHue.Items.Add("70") + cmbHue.Items.Add("80") + cmbHue.Items.Add("90") + cmbHue.Items.Add("100") + cmbHue.Text = "Select Hue" + + cmbSaturation.Items.Clear() + cmbSaturation.Items.Add("1") + cmbSaturation.Items.Add("5") + cmbSaturation.Items.Add("10") + cmbSaturation.Items.Add("20") + cmbSaturation.Items.Add("30") + cmbSaturation.Items.Add("40") + cmbSaturation.Items.Add("50") + cmbSaturation.Items.Add("60") + cmbSaturation.Items.Add("70") + cmbSaturation.Items.Add("80") + cmbSaturation.Items.Add("90") + cmbSaturation.Items.Add("100") + cmbSaturation.Text = "Select Saturation" + + + cmbLuminance.Items.Clear() + cmbLuminance.Items.Add("1") + cmbLuminance.Items.Add("5") + cmbLuminance.Items.Add("10") + cmbLuminance.Items.Add("20") + cmbLuminance.Items.Add("30") + cmbLuminance.Items.Add("40") + cmbLuminance.Items.Add("50") + cmbLuminance.Items.Add("60") + cmbLuminance.Items.Add("70") + cmbLuminance.Items.Add("80") + cmbLuminance.Items.Add("90") + cmbLuminance.Items.Add("100") + cmbLuminance.Text = "Select Luminance" + End Sub + + Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged + Dim sInput = ComboBox1.SelectedItem.ToString + Dim last4Letter = sInput.Substring(sInput.Length - 4).Replace("]", "").Replace("[", "") + txtFrequency.Text = "channel=" & last4Letter + txtFreq24.Text = "frequency=" + End Sub + + Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged + txtPower.Text = "driver_txpower_override=" & ComboBox2.SelectedItem.ToString + End Sub + + Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged + Dim sInput = ComboBox3.SelectedItem.ToString + Dim last3Letter = sInput.Substring(sInput.Length - 3).Replace("]", "").Replace("[", "") + txtFrequency.Text = "channel=" + txtFreq24.Text = "frequency=" & last3Letter + End Sub + + Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox4.SelectedIndexChanged + txtPower24.Text = "txpower=" & ComboBox4.SelectedItem.ToString + End Sub + + Private Sub ComboBox5_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox5.SelectedIndexChanged + txtMCS.Text = "msc_index=" & ComboBox5.SelectedItem.ToString + End Sub + + Private Sub ComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox6.SelectedIndexChanged + txtSTBC.Text = "stbc=" & ComboBox6.SelectedItem.ToString + End Sub + + Private Sub ComboBox7_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox7.SelectedIndexChanged + txtLDPC.Text = "ldpc=" & ComboBox7.SelectedItem.ToString + End Sub + + Private Sub ComboBox8_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox8.SelectedIndexChanged + txtFECK.Text = "fec_k=" & ComboBox8.SelectedItem.ToString + End Sub + + Private Sub ComboBox9_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox9.SelectedIndexChanged + txtFECN.Text = "fec_n=" & ComboBox9.SelectedItem.ToString + End Sub + + Private Sub cmbResolution_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbResolution.SelectedIndexChanged + txtResolution.Text = " size: " & cmbResolution.SelectedItem.ToString + End Sub + + Private Sub cmbFPS_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFPS.SelectedIndexChanged + txtFPS.Text = " fps: " & cmbFPS.SelectedItem.ToString + End Sub + + Private Sub cmbCodec_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbCodec.SelectedIndexChanged + txtEncode.Text = " codec: " & cmbCodec.SelectedItem.ToString + End Sub + + Private Sub cmbBitrate_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbBitrate.SelectedIndexChanged + txtBitrate.Text = " bitrate: " & cmbBitrate.SelectedItem.ToString + End Sub + + Private Sub cmbExposure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbExposure.SelectedIndexChanged + txtExposure.Text = " exposure: " & cmbExposure.SelectedItem.ToString + End Sub + + Private Sub cmbContrast_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbContrast.SelectedIndexChanged + txtContrast.Text = " contrast: " & cmbContrast.SelectedItem.ToString + End Sub + + Private Sub cmbHue_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbHue.SelectedIndexChanged + txtHue.Text = " hue: " & cmbHue.SelectedItem.ToString + End Sub + + Private Sub cmbSaturation_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbSaturation.SelectedIndexChanged + txtSaturation.Text = " saturation: " & cmbSaturation.SelectedItem.ToString + End Sub + + Private Sub cmbLuminance_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbLuminance.SelectedIndexChanged + txtLuminance.Text = " luminance: " & cmbLuminance.SelectedItem.ToString + End Sub + + Function IsValidIP(ByVal ipAddress As String) As Boolean + Return System.Text.RegularExpressions.Regex.IsMatch(ipAddress, + "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$") + End Function +End Class diff --git a/Extern.bat b/Extern.bat new file mode 100755 index 0000000..18e9003 --- /dev/null +++ b/Extern.bat @@ -0,0 +1,21 @@ +@echo off +set pw=12345 + +if not exist pscp.exe ( + echo pscp.exe not found! + goto end +) + +if "%1" == "dl" ( + echo y | pscp -scp -pw %pw% root@%2:/etc/majestic.yaml . + echo y | pscp -scp -pw %pw% root@%2:/etc/wfb.conf . +) + +if "%1" == "ul" ( + echo y | pscp -scp -pw %pw% majestic.yaml root@%2:/etc + echo y | pscp -scp -pw %pw% wfb.conf root@%2:/etc +) + +:end +echo. +pause \ No newline at end of file diff --git a/My Project/Application.Designer.vb b/My Project/Application.Designer.vb index eb33ae6..8d4bfcd 100644 --- a/My Project/Application.Designer.vb +++ b/My Project/Application.Designer.vb @@ -1,37 +1,37 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Namespace My - - 'NOTE: This file is auto-generated; do not modify it directly. To make changes, - ' or if you encounter build errors in this file, go to the Project Designer - ' (go to Project Properties or double-click the My Project node in - ' Solution Explorer), and make changes on the Application tab. - ' - Partial Friend Class MyApplication - - - Public Sub New() - MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) - Me.IsSingleInstance = False - Me.EnableVisualStyles = True - Me.SaveMySettingsOnExit = True - Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses - End Sub - - - Protected Overrides Sub OnCreateMainForm() - Me.MainForm = Form1 - End Sub - End Class -End Namespace +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Namespace My + + 'NOTE: This file is auto-generated; do not modify it directly. To make changes, + ' or if you encounter build errors in this file, go to the Project Designer + ' (go to Project Properties or double-click the My Project node in + ' Solution Explorer), and make changes on the Application tab. + ' + Partial Friend Class MyApplication + + + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = False + Me.EnableVisualStyles = True + Me.SaveMySettingsOnExit = True + Me.ShutdownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Configurator + End Sub + End Class +End Namespace diff --git a/My Project/Application.myapp b/My Project/Application.myapp index fbb5858..caf2d29 100644 --- a/My Project/Application.myapp +++ b/My Project/Application.myapp @@ -1,10 +1,10 @@ - - - true - Form1 - false - 0 - true - 0 - true + + + true + Configurator + true + 0 + true + 0 + true \ No newline at end of file diff --git a/My Project/README.md b/My Project/README.md deleted file mode 100644 index 8b13789..0000000 --- a/My Project/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/OpenIPC Configurator.sln b/OpenIPC Configurator.sln index fd4e055..2869aa2 100644 --- a/OpenIPC Configurator.sln +++ b/OpenIPC Configurator.sln @@ -1,25 +1,25 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.9.34701.34 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "OpenIPC Configurator", "OpenIPC Configurator.vbproj", "{D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {FBBB2934-8060-4A30-A019-7CA87921CDBF} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "OpenIPC Configurator", "OpenIPC Configurator.vbproj", "{D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D23EA7C6-0FFE-443B-AB1B-1383FDDD0483}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FBBB2934-8060-4A30-A019-7CA87921CDBF} + EndGlobalSection +EndGlobal diff --git a/OpenIPC Configurator.vbproj b/OpenIPC Configurator.vbproj index 0ee273b..b2d80a4 100644 --- a/OpenIPC Configurator.vbproj +++ b/OpenIPC Configurator.vbproj @@ -1,33 +1,37 @@ - - - - WinExe - net8.0-windows - OpenIPC_Configurator - Sub Main - true - WindowsForms - - - - - - - - - - - True - True - Application.myapp - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - + + + + WinExe + net8.0-windows + OpenIPC_Configurator + OpenIPC_Configurator.My.MyApplication + true + WindowsForms + + + + none + + + + + + + + + + + True + True + Application.myapp + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + \ No newline at end of file diff --git a/OpenIPC Configurator.vbproj.user b/OpenIPC Configurator.vbproj.user index 2cfee94..edf57a1 100644 --- a/OpenIPC Configurator.vbproj.user +++ b/OpenIPC Configurator.vbproj.user @@ -1,8 +1,8 @@ - - - - - Form - - + + + + + Form + + \ No newline at end of file diff --git a/OpenIPCConfigurator/OpenIPC Configurator.deps.json b/OpenIPCConfigurator/OpenIPC Configurator.deps.json deleted file mode 100644 index f47930d..0000000 --- a/OpenIPCConfigurator/OpenIPC Configurator.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "OpenIPC Configurator/1.0.0": { - "runtime": { - "OpenIPC Configurator.dll": {} - } - } - } - }, - "libraries": { - "OpenIPC Configurator/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/OpenIPCConfigurator/OpenIPC Configurator.dll b/OpenIPCConfigurator/OpenIPC Configurator.dll deleted file mode 100644 index 771366859805e52de29bcf45acfcca41a761e6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24064 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 Z6=&Ih;WLK49*S?l2Kj$J|NlkcKL8@U8GQf% diff --git a/OpenIPCConfigurator/OpenIPC Configurator.exe b/OpenIPCConfigurator/OpenIPC Configurator.exe deleted file mode 100644 index dc4ed2a093cf7a6f1c1fbf47ba825acce1e6d26f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142848 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 m31C=qzG;vofCI$Y(6^I~Y4dqdWYk-Twk`K=zaX diff --git a/OpenIPCConfigurator/OpenIPC Configurator.pdb b/OpenIPCConfigurator/OpenIPC Configurator.pdb deleted file mode 100644 index 1c6b14d679012e3b3b6b680461a4ce662bae0e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16820 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