├── B2SWindowPunch
├── B2SWindowPunch
│ ├── B2SWindowPunchCMD.ico
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── B2SWindowPunch.csproj
│ └── app.manifest
└── B2SWindowPunch.sln
├── b2sbackglassserver
├── b2sbackglassserver
│ ├── B2SBackglassServer.ico
│ ├── Resources
│ │ ├── EMReel.wav
│ │ └── camera1.wav
│ ├── B2SBackglassServerEXE.ico
│ ├── Plugin
│ │ ├── IDirectPluginFrontEnd.vb
│ │ ├── IDirectPlugin.vb
│ │ ├── PluginWindow.vb
│ │ └── PluginHost.vb
│ ├── My Project
│ │ ├── Settings.settings
│ │ ├── Application.Designer.vb
│ │ ├── Application.myapp
│ │ ├── AssemblyInfo.vb
│ │ ├── Settings.Designer.vb
│ │ ├── app.manifest
│ │ └── Resources.Designer.vb
│ ├── Classes
│ │ ├── B2SBackglassServerEXE.vb
│ │ ├── B2SLED.vb
│ │ ├── B2SVersionInfo.vb
│ │ ├── B2SCollectData.vb
│ │ ├── B2SStatistics.vb
│ │ └── B2SPlayer.vb
│ ├── Logging
│ │ ├── Log.vb
│ │ └── Statistics.vb
│ ├── app.config
│ ├── Controls
│ │ ├── B2SBaseBox.vb
│ │ └── B2SPictureBox.vb
│ ├── Forms
│ │ ├── Background.vb
│ │ ├── Background.Designer.vb
│ │ ├── formMode.vb
│ │ ├── formDMD.Designer.vb
│ │ ├── formBackglass.Designer.vb
│ │ ├── formDMD.vb
│ │ └── formMode.Designer.vb
│ ├── B2SInit.cmd
│ ├── moduleImageExtensions.vb
│ └── app.manifest
└── B2SBackglassServer.sln
├── b2s_screenresidentifier
├── b2s_screenresidentifier
│ ├── B2SScreenresidentifier_64.ico
│ ├── My Project
│ │ ├── Settings.settings
│ │ ├── Application.Designer.vb
│ │ ├── Application.myapp
│ │ ├── AssemblyInfo.vb
│ │ ├── Settings.Designer.vb
│ │ ├── app.manifest
│ │ └── Resources.Designer.vb
│ ├── app.config
│ ├── B2S_ScreenResIdentifier.vb
│ └── formDMD.resx
└── B2S_ScreenResIdentifier.sln
├── B2S_SetUp
├── App.config
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
├── B2S_SetUp.sln
└── B2S_SetUp.csproj
├── b2sbackglassserverregisterapp
├── b2sbackglassserverregisterapp
│ ├── B2SBackglassRegister_64.ico
│ ├── My Project
│ │ ├── Settings.settings
│ │ ├── Application.myapp
│ │ ├── AssemblyInfo.vb
│ │ ├── Application.Designer.vb
│ │ ├── Resources.Designer.vb
│ │ ├── Settings.Designer.vb
│ │ ├── app.manifest
│ │ └── Resources.resx
│ ├── app.config
│ └── formBackglassServerRegApp.Designer.vb
├── ScreenResTemplates.cmd
└── B2SBackglassServerRegisterApp.sln
├── leds
├── BetterLed
│ ├── My Project
│ │ ├── Settings.settings
│ │ ├── Application.myapp
│ │ ├── AssemblyInfo.vb
│ │ ├── Application.Designer.vb
│ │ ├── Resources.Designer.vb
│ │ ├── Settings.Designer.vb
│ │ └── Resources.resx
│ ├── app.config
│ └── BetterLed.sln
└── dream7segments
│ ├── My Project
│ ├── Settings.settings
│ ├── Application.Designer.vb
│ ├── Application.myapp
│ ├── AssemblyInfo.vb
│ ├── Resources.Designer.vb
│ ├── Settings.Designer.vb
│ └── Resources.resx
│ ├── Dream7Display.sln
│ └── Dream7Display.vbproj
├── .github
├── ISSUE_TEMPLATE
│ ├── feature-request.md
│ └── bug-report.md
└── workflows
│ └── prerelease.yml
├── Plugins.txt
├── ScreenResTemplates
└── ScreenResTemplates.txt
├── B2STools
├── directb2sReelSoundsONOFF.cmd
├── B2SRandom.cmd
├── B2STools.txt
├── directb2sReelSoundsONOFF.xsl
└── DmdDeviceIniScale.cmd
├── ScreenResTemplate.txt
├── license.txt
├── README.md
└── WhatIsWhat.txt
/B2SWindowPunch/B2SWindowPunch/B2SWindowPunchCMD.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/B2SWindowPunch/B2SWindowPunch/B2SWindowPunchCMD.ico
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/B2SBackglassServer.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/B2SBackglassServer.ico
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Resources/EMReel.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/Resources/EMReel.wav
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Resources/camera1.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/Resources/camera1.wav
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/B2SBackglassServerEXE.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/B2SBackglassServerEXE.ico
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/B2SScreenresidentifier_64.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2s_screenresidentifier/b2s_screenresidentifier/B2SScreenresidentifier_64.ico
--------------------------------------------------------------------------------
/B2S_SetUp/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/B2SBackglassRegister_64.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/B2SBackglassRegister_64.ico
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Plugin/IDirectPluginFrontEnd.vb:
--------------------------------------------------------------------------------
1 | Public Interface IDirectPluginFrontend
2 | Inherits IDirectPlugin
3 |
4 |
5 | Sub PluginShowFrontend()
6 |
7 |
8 |
9 | End Interface
10 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/ScreenResTemplates.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | set "restemplate=%~1"
3 | set B2SResFileEndingOverride=.res
4 | for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a
5 |
6 | set "resfile=%~dpn2%B2SResFileEndingOverride%"
7 |
8 | copy "%~dp0%restemplate%" "%resfile%"
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/B2S_SetUp/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace B2S_SetUp
5 | {
6 | static class Program
7 | {
8 | [STAThread]
9 | static void Main(string[] args)
10 | {
11 | Application.EnableVisualStyles();
12 | Application.SetCompatibleTextRenderingDefault(false);
13 | Application.Run(new Form1(args));
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SBackglassServerEXE.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Drawing
3 | Imports System.IO
4 | Imports System.Security.Principal
5 | Imports System.Windows.Forms
6 | Imports Microsoft.Win32
7 |
8 | Module B2SBackglassServerEXE
9 | Sub Main()
10 | Application.EnableVisualStyles()
11 | Application.SetCompatibleTextRenderingDefault(False)
12 | Application.Run(New formBackglass())
13 | End Sub
14 | End Module
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | frmBetterLed
5 | false
6 | 0
7 | true
8 | 0
9 | true
10 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | false
5 | 0
6 | true
7 | 0
8 | 1
9 | true
10 |
11 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | formBackglassServerRegApp
5 | false
6 | 0
7 | true
8 | 0
9 | true
10 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | false
5 | 0
6 | true
7 | 0
8 | 1
9 | true
10 | 0
11 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | formPlayfield
5 | false
6 | 0
7 | false
8 | 0
9 | 0
10 | true
11 | false
12 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: Suggest an idea for B2S Server
4 | title: ''
5 | labels: feature
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/B2S_SetUp/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyTitle("B2S_SetUp")]
5 | [assembly: AssemblyDescription("B2S ScreenRes Editor")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: AssemblyCompany("Visual Pinball")]
8 | [assembly: AssemblyProduct("B2S_SetUp")]
9 | [assembly: AssemblyCopyright("Copyright (c) 2025")]
10 | [assembly: AssemblyTrademark("A Herweh & B2S Team production")]
11 | [assembly: AssemblyCulture("")]
12 |
13 | [assembly: ComVisible(false)]
14 |
15 | [assembly: Guid("a5b5c7e7-7c5d-4c8b-8c2a-5c7b2c0d0c0d")]
16 |
17 | [assembly: AssemblyVersion("6.0.0")]
18 | [assembly: AssemblyFileVersion("6.0.0")]
19 | [assembly: AssemblyInformationalVersion("6.0.0")]
--------------------------------------------------------------------------------
/Plugins.txt:
--------------------------------------------------------------------------------
1 | ___ ___ ___ ___ _ _
2 | | _ )_ ) __| | _ \ |_ _ __ _(_)_ _ ___
3 | | _ \/ /\__ \ | _/ | || / _` | | ' \(_-<
4 | |___/___|___/ |_| |_|\_,_\__, |_|_||_/__/
5 | |___/
6 |
7 | There is now two folders for Plugins: one for x86 and one for x64 binaries.
8 |
9 | To activate DOF as a plugin:
10 |
11 | * Right-click in a blank area in the Plugins folder window
12 | * Click New > Shortcut in the context menu
13 | * Type the full path to your Direct Output folder into the box (e.g., C:\DirectOutput)
14 | * Click the Next button
15 | * Type DirectOutput for the name
16 | * Click the Finish button
17 | * Repeat the same for Plugins64
18 |
19 | Follow a similar procedure to activate other plugins like PinUp
--------------------------------------------------------------------------------
/ScreenResTemplates/ScreenResTemplates.txt:
--------------------------------------------------------------------------------
1 | ___ ___ ___ _____ _ _
2 | | _ )_ ) __| |_ _|__ _ __ _ __| |__ _| |_ ___ ___
3 | | _ \/ /\__ \ | |/ -_) ' \| '_ \ / _` | _/ -_|_-<
4 | |___/___|___/ |_|\___|_|_|_| .__/_\__,_|\__\___/__/
5 | |_|
6 |
7 | The `B2SBackglassServerRegisterApp.exe` now also "registers" right click menues for .vpx files (if wanted):
8 |
9 | When you select a tablename.vpx file, press right mouse and select `B2S Server copy Screenres template`
10 |
11 | -> each *.res file present in this folder will be available in the menu. The file.res file selected will be copied to tablename.res next to your tablename.vpx file.
12 |
13 | **You will have to add your own res files of preference to this folder**
14 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SLED.vb:
--------------------------------------------------------------------------------
1 | Imports System.Drawing
2 |
3 | Public Class B2SLED
4 |
5 | Public Enum eLEDType
6 | Undefined = 0
7 | LED8 = 1
8 | LED10 = 2
9 | LED14 = 3
10 | LED16 = 4
11 | End Enum
12 |
13 | #Region "constructor and startup"
14 |
15 | Public Sub New()
16 | ' nothing to do
17 | End Sub
18 |
19 | #End Region
20 |
21 | #Region "standard colors"
22 |
23 | Private ReadOnly Property LitLEDSegmentStandardColor() As Color
24 | Get
25 | Return Color.OrangeRed
26 | End Get
27 | End Property
28 | Private ReadOnly Property DarkLEDSegmentStandardColor() As Color
29 | Get
30 | Return Color.FromArgb(39, 34, 31)
31 | End Get
32 | End Property
33 |
34 | #End Region
35 |
36 | End Class
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SVersionInfo.vb:
--------------------------------------------------------------------------------
1 | ' Add VersionInfo class
2 |
3 | Public Class B2SVersionInfo
4 | Public Const B2S_VERSION_MAJOR = "2"
5 | Public Const B2S_VERSION_MINOR = "1"
6 | Public Const B2S_VERSION_REVISION = "5"
7 | Public Const B2S_VERSION_BUILD = "999"
8 | Public Const B2S_VERSION_HASH = "nonset"
9 | ' 2.5.0
10 | Public Const B2S_VERSION_STRING = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." & B2S_VERSION_REVISION
11 | ' 2.5.0.999
12 | Public Const B2S_BUILD_STRING = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." &
13 | B2S_VERSION_REVISION & "." & B2S_VERSION_BUILD
14 | ' 2.5.0.999-nonset Git hash
15 | Public Const B2S_BUILD_STRING_HASH = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." &
16 | B2S_VERSION_REVISION & "." & B2S_VERSION_BUILD & "-" & B2S_VERSION_HASH
17 | End Class
--------------------------------------------------------------------------------
/leds/dream7segments/Dream7Display.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dream7Display", "Dream7Display.vbproj", "{BF708B8E-D10A-4E73-9712-EA5941C27057}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/B2STools/directb2sReelSoundsONOFF.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | REM directb2sReelSoundsONOFF.cmd call xslt transformation to add or remove empty attributes for directb2s files
3 | setlocal
4 |
5 | set "xsltFilePath=%~dpn0.xsl"
6 |
7 | :loop
8 | call :transform "%~1"
9 |
10 | shift
11 | if not "%~1"=="" goto loop
12 |
13 | pause
14 | goto :EOF
15 | :transform
16 | set "xmlFilePath=%~1"
17 | set "outputFilePath=%~dpn1-updated.directb2s"
18 |
19 | echo Transforming "%xmlFilePath%"
20 | echo to "%outputFilePath%"
21 | if not "%~x1" == ".directb2s" echo This only support directb2s files not "%1"&goto :EOF
22 |
23 | powershell -Command ^
24 | $xmlFilePath = '%xmlFilePath%'; ^
25 | $xsltFilePath = '%xsltFilePath%'; ^
26 | $outputFilePath = '%outputFilePath%'; ^
27 | $xslt = New-Object System.Xml.Xsl.XslCompiledTransform; ^
28 | $xslt.Load($xsltFilePath); ^
29 | $xslt.Transform($xmlFilePath, $outputFilePath);
30 |
31 | if %ERRORLEVEL% GEQ 1 echo Transformation error!&goto :EOF
32 | echo Transformation complete.
33 |
34 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/B2S_ScreenResIdentifier.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Drawing
3 | Imports System.IO
4 | Imports System.Security.Principal
5 | Imports System.Windows.Forms
6 | Imports Microsoft.Win32
7 |
8 | Module B2S_ScreenResIdentifier
9 | Sub Main()
10 | If IsAdmin() Then
11 | MessageBox.Show("You should not start this as Administrator!", My.Resources.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop)
12 | ' Too much noice here if we would quit out...
13 | 'Exit Sub
14 | End If
15 |
16 | Application.EnableVisualStyles()
17 | Application.SetCompatibleTextRenderingDefault(False)
18 | Application.Run(New formPlayfield())
19 | End Sub
20 | Private Function IsAdmin() As Boolean
21 | Dim identity As WindowsIdentity = WindowsIdentity.GetCurrent()
22 | Dim principal As New WindowsPrincipal(identity)
23 | Return principal.IsInRole(WindowsBuiltInRole.Administrator)
24 | End Function
25 | End Module
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/B2SBackglassServerRegisterApp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServerRegisterApp", "B2SBackglassServerRegisterApp\B2SBackglassServerRegisterApp.vbproj", "{AB41802D-0DA1-4F9C-AA19-9007F5916623}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Logging/Log.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 |
3 | Public Class Log
4 |
5 | Private writeLog As Boolean = False
6 |
7 | Private filename As String = String.Empty
8 |
9 | Public Sub New(ByVal _filename As String)
10 | filename = _filename & ".txt"
11 | End Sub
12 |
13 | Public Property IsLogOn() As Boolean
14 | Get
15 | Return writeLog
16 | End Get
17 | Set(value As Boolean)
18 | writeLog = value
19 | End Set
20 | End Property
21 |
22 | Public Property LogPath() As String = B2SSettings.LogPath
23 |
24 | Public Sub WriteLogEntry(ByVal text As String)
25 | If writeLog AndAlso Not String.IsNullOrEmpty(LogPath) Then
26 | ' write to log file
27 | On Error Resume Next
28 | Dim log As IO.StreamWriter = New IO.StreamWriter(IO.Path.Combine(LogPath, filename), True)
29 | log.WriteLine(text)
30 | log.Flush()
31 | log.Close()
32 | End If
33 | End Sub
34 |
35 | End Class
36 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/B2S_ScreenResIdentifier.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2S_ScreenResIdentifier", "B2S_ScreenResIdentifier\B2S_ScreenResIdentifier.vbproj", "{DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|Any CPU.Build.0 = Release|Any CPU
16 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|x86.Build.0 = Release|x86
17 | EndGlobalSection
18 | GlobalSection(SolutionProperties) = preSolution
19 | HideSolutionNode = FALSE
20 | EndGlobalSection
21 | EndGlobal
22 |
--------------------------------------------------------------------------------
/B2S_SetUp/B2S_SetUp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.14.36310.24
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2S_SetUp", "B2S_SetUp.csproj", "{A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {3139FBEA-F578-464A-BB0C-ACA6FEBAE09B}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/B2SWindowPunch/B2SWindowPunch.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.4.33205.214
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2SWindowPunch", "B2SWindowPunch\B2SWindowPunch.csproj", "{FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {87706127-BB70-4179-A511-927C95205571}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ScreenResTemplate.txt:
--------------------------------------------------------------------------------
1 | # This is a ScreenRes file for the B2SBackglassServer.
2 | # From release 1.3.1.1 comment lines like this starting with a "#" are supported.
3 | # If you use tools not supporting comments (or old releases), you need to remove these lines or let B2S_ScreenResIdentifier do it for you!
4 | # Playfield Screen resolution width/height
5 | 1920
6 | 1080
7 | # Backglass width/height
8 | 800
9 | 600
10 | # Backglass Display Devicename screen number (\\.\DISPLAY)x for the Playfield or screen on position (@x) or screen index (=x)
11 | 1
12 | # Backglass x/y position relative to the upper left corner of the screen selected
13 | 0
14 | 0
15 | # width/height of the B2S (or Full) DMD area
16 | 600
17 | 130
18 | # DMD x/y position
19 | 700
20 | 300
21 | # Y-flip, flips the LED display upside down
22 | 0
23 | # Background x/y position
24 | 100
25 | 0
26 | # Background width/height
27 | 600
28 | 600
29 | # path to the background image (C:\path\Frame) or black if none selected
30 | C:\path\my_bezel_for_EM_or_grill_for_dual_screen.png
31 | # This line would turn off B2SWindowPunch if activated
32 | #B2SWindowPunch=off
33 | # These lines would change the B2SWindowPunch & cutter regular expressions
34 | #B2SWindowPunch=^different regular expression$
35 | #cutter=^another window$
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' Allgemeine Informationen über eine Assembly werden über die folgenden
6 | ' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
7 | ' die mit einer Assembly verknüpft sind.
8 |
9 | ' Die Werte der Assemblyattribute überprüfen
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
21 |
22 |
23 | ' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
24 | '
25 | ' Hauptversion
26 | ' Nebenversion
27 | ' Buildnummer
28 | ' Revision
29 | '
30 | ' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
31 | ' übernehmen, indem Sie "*" eingeben:
32 | '
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/leds/BetterLed/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' General Information about an assembly is controlled through the following
6 | ' set of attributes. Change these attribute values to modify the information
7 | ' associated with an assembly.
8 |
9 | ' Review the values of the assembly attributes
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
21 |
22 |
23 | ' Version information for an assembly consists of the following four values:
24 | '
25 | ' Major Version
26 | ' Minor Version
27 | ' Build Number
28 | ' Revision
29 | '
30 | ' You can specify all the values or you can default the Build and Revision Numbers
31 | ' by using the '*' as shown below:
32 | '
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/B2STools/B2SRandom.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | REM ___ ___ ___
3 | REM | _ )_ ) __|
4 | REM | _ \/ /\__ \
5 | REM |___/___|___/ Random
6 | REM
7 | REM This script can be used to randomize different backglasses before starting Visual Pinball
8 | REM
9 | REM To activate it, add the following line in the Popper Launch script
10 | REM CALL C:\vPinball\B2SServer\B2STools\B2SRandom.cmd "[GAMEFULLNAME]"
11 | REM
12 | REM If you start a table "table.vpx" in the folder "D:\vPinball\VisualPinball\Tables\" it will try to find
13 | REM D:\vPinball\VisualPinball\Tables\table-#.directb2s where # is a random number.
14 | REM If it is found, the file D:\vPinball\VisualPinball\Tables\table-#.directb2s is copied over D:\vPinball\VisualPinball\Tables\table.directb2s
15 |
16 | REM Extract path + name without extension
17 | set b2sfullname=%~dpn1
18 |
19 | REM Uncomment following line to log how this script was called.
20 | REM echo %0 %* >> %0.log
21 |
22 | REM Count the amount of b2sfullname-?.directb2s alt directb2s files there is.
23 | for /F %%i in ('dir /A:-D /B "%b2sfullname%-?.directb2s" 2^>nul ^| find /c /v ""') do set COUNT=%%i
24 |
25 | REM Step out if there is no alt directb2s files available
26 | if %COUNT% == 0 goto :EOF
27 |
28 | REM Generate random number between 1 and the %COUNT%
29 | set /a num=%random% %%%COUNT% + 1
30 |
31 | if not exist "%b2sfullname%-%num%.directb2s" goto :EOF
32 |
33 | copy /Y "%b2sfullname%-%num%.directb2s" "%b2sfullname%.directb2s"
34 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' General Information about an assembly is controlled through the following
6 | ' set of attributes. Change these attribute values to modify the information
7 | ' associated with an assembly.
8 |
9 | ' Review the values of the assembly attributes
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
21 |
22 |
23 | ' Version information for an assembly consists of the following four values:
24 | '
25 | ' Major Version
26 | ' Minor Version
27 | ' Build Number
28 | ' Revision
29 | '
30 | ' You can specify all the values or you can default the Build and Revision Numbers
31 | ' by using the '*' as shown below:
32 | '
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' General Information about an assembly is controlled through the following
6 | ' set of attributes. Change these attribute values to modify the information
7 | ' associated with an assembly.
8 |
9 | ' Review the values of the assembly attributes
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
21 |
22 |
23 | ' Version information for an assembly consists of the following four values:
24 | '
25 | ' Major Version
26 | ' Minor Version
27 | ' Build Number
28 | ' Revision
29 | '
30 | ' You can specify all the values or you can default the Build and Revision Numbers
31 | ' by using the '*' as shown below:
32 | '
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Controls/B2SBaseBox.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032
2 | Imports System
3 | Imports System.Drawing
4 | Imports System.Windows.Forms
5 |
6 | Public Class B2SBaseBox
7 |
8 | Inherits Control
9 | Implements System.ComponentModel.ISupportInitialize
10 |
11 | Public Enum eType
12 | NotDefined = 0
13 | OnBackglass = 1
14 | OnDMD = 2
15 | End Enum
16 | Public Property Type() As eType = eType.NotDefined
17 |
18 | Public Property ID() As Integer
19 | Public Property DisplayID() As Integer
20 |
21 | Public Property RomID() As Integer = 0
22 | Public Enum eRomIDType
23 | NotDefined = 0
24 | Lamp = 1
25 | Solenoid = 2
26 | GIString = 3
27 | Mech = 4
28 | End Enum
29 | Public Property RomIDType() As eRomIDType = eType.NotDefined
30 | Public Property RomIDValue() As Integer = 0
31 | Public Property RomInverted() As Boolean = False
32 |
33 | Public Property RectangleF As RectangleF = Nothing
34 |
35 | Public Property StartDigit() As Integer = 0
36 | Public Property Digits() As Integer = 0
37 |
38 | Public Property Hidden() As Boolean = False
39 |
40 | Public Sub BeginInit() Implements System.ComponentModel.ISupportInitialize.BeginInit
41 | ' nothing to do right now
42 | End Sub
43 |
44 | Public Sub EndInit() Implements System.ComponentModel.ISupportInitialize.EndInit
45 | ' nothing to do right now
46 | End Sub
47 |
48 | End Class
49 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System.Reflection
2 | Imports System.Runtime.InteropServices
3 |
4 | ' General Information about an assembly is controlled through the following
5 | ' set of attributes. Change these attribute values to modify the information
6 | ' associated with an assembly.
7 |
8 | ' Review the values of the assembly attributes
9 | #If B2S = "DLL" Then
10 |
11 |
12 | #Else
13 |
14 |
15 | #End If
16 |
17 |
18 |
19 |
20 |
21 |
22 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
23 |
24 |
25 | ' Version information for an assembly consists of the following four values:
26 | '
27 | ' Major Version
28 | ' Minor Version
29 | ' Build Number
30 | ' Revision
31 | '
32 | ' You can specify all the values or you can default the Build and Revision Numbers
33 | ' by using the '*' as shown below:
34 | '
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a report to help us improve B2S Server
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | *Note:* Are you sure there is a bug in the B2S Server and not anything related to configuration or other dependencies? If you are unsure please create a post on the [Virtual Pinball Chat Discord Server](https://discord.com/invite/YHcBrtT), channel `#db2s` or on [VPUniverse](https://vpuniverse.com/files/file/12024-b2s-backglass-server/) first.
14 |
15 | **To Reproduce**
16 | Steps to reproduce the behavior:
17 | 1. Go to '...'
18 | 2. Click on '....'
19 | 3. Scroll down to '....'
20 | 4. See error
21 |
22 | If the bug appears when playing a specific table and B2S backglass, give a link to a place where the exact version of the table and B2S file can be downloaded.
23 | Include the B2SBackglassServer.xml configuration file zipped as attachment.
24 |
25 | **Expected behavior**
26 | A clear and concise description of what you expected to happen.
27 |
28 | **Screenshots**
29 | If applicable, add screenshots to help explain your problem.
30 |
31 | **Log files**
32 | If it's about a crash, please see if there is any `B2SDebugLog.txt` available.
33 |
34 | **Versions & Settings**
35 | - VPX: [e.g. 1.7.0 Final Revision 367 (e242d7c), 32 bit - see *Help - About*]
36 | - VPM: [e.g. 3.5.217 v3.5-217-bd54096]
37 | - B2S: [e.g. 2.1.2-ba96798 See on the settings window or right click B2SBackglassServerEXE.exe + properties]
38 | - Windows version
39 |
40 | **Additional context**
41 | Add any other context about the problem here.
42 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
18 | ' or if you encounter build errors in this file, go to the Project Designer
19 | ' (go to Project Properties or double-click the My Project node in
20 | ' Solution Explorer), and make changes on the Application tab.
21 | '
22 | Partial Friend Class MyApplication
23 |
24 | _
25 | Public Sub New()
26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
27 | Me.IsSingleInstance = false
28 | Me.EnableVisualStyles = true
29 | Me.SaveMySettingsOnExit = true
30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
31 | End Sub
32 |
33 | _
34 | Protected Overrides Sub OnCreateMainForm()
35 | Me.MainForm = Global.BetterLed.frmBetterLed
36 | End Sub
37 | End Class
38 | End Namespace
39 |
--------------------------------------------------------------------------------
/B2SWindowPunch/B2SWindowPunch/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("B2SWindowPunch")]
9 | [assembly: AssemblyDescription("Punch holes in B2S or Visual Pinball forms")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Visual Pinball B2S Team")]
12 | [assembly: AssemblyProduct("B2SWindowPunch")]
13 | [assembly: AssemblyCopyright("Copyright © 2023-2024")]
14 | [assembly: AssemblyTrademark("A B2S Team production")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("aaabdda6-7d61-4445-8bc3-a090372f93d2")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0")]
37 | [assembly: AssemblyInformationalVersion("1.0.0")]
38 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
18 | ' or if you encounter build errors in this file, go to the Project Designer
19 | ' (go to Project Properties or double-click the My Project node in
20 | ' Solution Explorer), and make changes on the Application tab.
21 | '
22 | Partial Friend Class MyApplication
23 |
24 | _
25 | Public Sub New()
26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
27 | Me.IsSingleInstance = false
28 | Me.EnableVisualStyles = true
29 | Me.SaveMySettingsOnExit = true
30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
31 | End Sub
32 |
33 | _
34 | Protected Overrides Sub OnCreateMainForm()
35 | Me.MainForm = Global.B2SBackglassServerRegisterApp.formBackglassServerRegApp
36 | End Sub
37 | End Class
38 | End Namespace
39 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/Background.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Windows.Forms
3 |
4 | Public Class Background
5 | Private Const MA_NOACTIVATE As System.Int32 = 3
6 | Private Const WM_MOUSEACTIVATE As Integer = &H21
7 | #Region " Properties "
8 |
9 | Protected Overrides Sub WndProc(ByRef m As Message)
10 | 'Don't allow the window to be activated by swallowing the mouse event.
11 | If B2SSettings.FormNoFocus And m.Msg = WM_MOUSEACTIVATE Then
12 | m.Result = New IntPtr(MA_NOACTIVATE)
13 | Return
14 | End If
15 | MyBase.WndProc(m)
16 | End Sub
17 |
18 | Private Sub Background_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
19 |
20 | 'If B2SSettings.FormToFront And Me.TopMost = True Then
21 | ' ' We have TopMost set, so it is safe to send back!
22 | ' Me.SendToBack()
23 | ' Me.TopMost = True
24 | 'ElseIf Me.TopMost = False Then
25 | ' Me.BringToFront()
26 | 'End If
27 |
28 | End Sub
29 | #End Region 'Properties
30 | #Region "constructor"
31 |
32 | Public Sub New()
33 |
34 | InitializeComponent()
35 |
36 | ' set some styles
37 | 'Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
38 | Me.DoubleBuffered = True
39 |
40 | End Sub
41 |
42 | Private Sub Background_MouseClick(sender As Object, e As MouseEventArgs) Handles MyBase.MouseClick
43 |
44 | If e.Button = Windows.Forms.MouseButtons.Right Then
45 | B2SScreen.formBackglass.formBackglass_MouseClick(sender, e)
46 | End If
47 | End Sub
48 |
49 | #End Region
50 |
51 | End Class
--------------------------------------------------------------------------------
/b2sbackglassserver/B2SBackglassServer.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.4.33205.214
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServerEXE", "B2SBackglassServer\B2SBackglassServerEXE.vbproj", "{AC2E94BE-21CD-434A-9039-6551DF43698B}"
7 | EndProject
8 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServer", "b2sbackglassserver\B2SBackglassServer.vbproj", "{42A57D3D-5D76-4D46-9CF0-0909C7C799C4}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Release|Any CPU.ActiveCfg = Release|Any CPU
19 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Release|Any CPU.Build.0 = Release|Any CPU
20 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Release|Any CPU.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {5F9BB968-681A-4FB2-8074-C179F66DB0F2}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/B2SInit.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | echo %0 %* > "%~dp0B2SWindowPunch.log"
3 | setlocal EnableDelayedExpansion
4 | set B2SResFileEndingOverride=.res
5 | for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a
6 |
7 | set "resfile=%cd%\%~1%B2SResFileEndingOverride%"
8 | set "GameName=%~2"
9 |
10 | REM If started from explorer, quit
11 | if ["%GameName%"] == [""] echo %0 Exit when started from explorer >> "%~dp0B2SWindowPunch.log"&goto :EOF
12 |
13 | REM Cut holes in the destination "B2S Backglass Server" & "B2S DMD" forms
14 | set "B2SWindowPunch=^B2S Backglass$|^B2S Backglass Server$|^B2S DMD$"
15 |
16 | REM using "Virtual DMD", "Virtual Alphanumeric" and all "PUPSCREEN" forms as regular expressions
17 | set "cutter=^Virtual DMD$|^Virtual Alphanumeric Display$|^PUPSCREEN[0-9]+$|^VPinMAME:|^PROC:"
18 |
19 | REM Check if there is any table specific settings for B2SWindowPunch
20 | if exist "%resfile%" for /f "usebackq eol=# tokens=1,2 delims==" %%G in (`findstr /R "^[A-Za-z0-9][A-Za-z0-9]*=" "%resfile%"`) do set "%%G=%%H"
21 |
22 | echo B2SWindowPunch = "!B2SWindowPunch!" >> "%~dp0B2SWindowPunch.log"
23 | echo cutter = "!cutter!" >> "%~dp0B2SWindowPunch.log"
24 |
25 | if ["!B2SWindowPunch!"] == ["off"] echo %0 B2SWindowPunch turned off>> "%~dp0B2SWindowPunch.log"&goto :EOF
26 | REM Quit If no destination set
27 | if ["!B2SWindowPunch!"] == [""] echo %0 No destination set>> "%~dp0B2SWindowPunch.log"&goto :EOF
28 |
29 | REM Wait 10 seconds
30 | timeout /t 10 /nobreak > NUL
31 |
32 | REM Punch the holes
33 | echo "%~dp0B2SWindowPunch.exe" "!B2SWindowPunch!" "!cutter!" >> "%~dp0B2SWindowPunch.log"
34 | "%~dp0B2SWindowPunch.exe" "!B2SWindowPunch!" "!cutter!" >> "%~dp0B2SWindowPunch.log"
35 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/Background.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class Background
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Wird vom Windows Form-Designer benötigt.
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Background))
26 | Me.SuspendLayout()
27 | '
28 | 'Background
29 | '
30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
32 | Me.ClientSize = New System.Drawing.Size(284, 261)
33 | Me.ControlBox = False
34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
35 | Me.Name = "Background"
36 | Me.Text = "B2SServer"
37 | Me.ResumeLayout(False)
38 |
39 | End Sub
40 | End Class
41 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/formMode.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 |
3 | Public Class formMode
4 |
5 | Private Const stayInSeconds As Integer = 3
6 |
7 | Private fadeIn As Boolean = True
8 | Private Const fadeStep As Single = 0.02
9 | Private shutDownCounter As Integer = 0
10 |
11 | Private Sub formMode_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
12 |
13 | ' set info label
14 | lblInfo.Text = "Backglass mode is set to '" & If(B2SSettings.CurrentDualMode = B2SSettings.eDualMode.Fantasy, "FANTASY", "AUTHENTIC") & "'."
15 |
16 | ' set and start timers
17 | TimerShutDown.Interval = 1000
18 | TimerOpacity.Interval = 10
19 | TimerOpacity.Start()
20 |
21 | End Sub
22 |
23 | Private Sub TimerOpacity_Tick(sender As System.Object, e As System.EventArgs) Handles TimerOpacity.Tick
24 |
25 | If fadeIn Then
26 | Me.Opacity += fadeStep
27 | If Me.Opacity >= 1 Then
28 | TimerOpacity.Stop()
29 | TimerShutDown.Start()
30 | fadeIn = False
31 | End If
32 | Else
33 | Me.Opacity -= fadeStep
34 | If Me.Opacity <= 0 Then
35 | TimerOpacity.Stop()
36 | Try
37 | Me.Close()
38 | Me.Dispose()
39 | Catch
40 | End Try
41 | End If
42 | End If
43 |
44 | End Sub
45 |
46 | Private Sub TimerShutDown_Tick(sender As System.Object, e As System.EventArgs) Handles TimerShutDown.Tick
47 |
48 | shutDownCounter += 1
49 | If shutDownCounter >= stayInSeconds Then
50 | TimerShutDown.Stop()
51 | TimerOpacity.Start()
52 | End If
53 |
54 | End Sub
55 |
56 | End Class
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/formDMD.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class formDMD
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Wird vom Windows Form-Designer benötigt.
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formDMD))
26 | Me.SuspendLayout()
27 | '
28 | 'formDMD
29 | '
30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
32 | Me.ClientSize = New System.Drawing.Size(435, 251)
33 | Me.ControlBox = False
34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
35 | Me.MaximizeBox = False
36 | Me.MinimizeBox = False
37 | Me.Name = "formDMD"
38 | Me.Text = "formDMD"
39 | Me.ResumeLayout(False)
40 |
41 | End Sub
42 | End Class
43 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/formBackglassServerRegApp.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class formBackglassServerRegApp
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formBackglassServerRegApp))
26 | Me.SuspendLayout()
27 | '
28 | 'formBackglassServerRegApp
29 | '
30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
32 | Me.ClientSize = New System.Drawing.Size(303, 40)
33 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
35 | Me.MaximizeBox = False
36 | Me.MinimizeBox = False
37 | Me.Name = "formBackglassServerRegApp"
38 | Me.Text = "Register B2S Backglass Server"
39 | Me.ResumeLayout(False)
40 |
41 | End Sub
42 |
43 | End Class
44 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | Unless otherwise explicitly stated, all code in B2S is released under
2 | the following license (derived from the MAME license):
3 |
4 | Copyright Herweh and the B2S team
5 | All rights reserved.
6 |
7 | Redistribution and use of this code or any derivative works are permitted
8 | provided that the following conditions are met:
9 |
10 | * Redistributions may not be sold, nor may they be used in a commercial
11 | product or activity.
12 |
13 | * Redistributions that are modified from the original source must include the
14 | complete source code, including the source code for all components used by a
15 | binary built from the modified sources. However, as a special exception, the
16 | source code distributed need not include anything that is normally distributed
17 | (in either source or binary form) with the major components (compiler, kernel,
18 | and so on) of the operating system on which the executable runs, unless that
19 | component itself accompanies the executable.
20 |
21 | * Redistributions must reproduce the above copyright notice, this list of
22 | conditions and the following disclaimer in the documentation and/or other
23 | materials provided with the distribution.
24 |
25 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
29 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 | POSSIBILITY OF SUCH DAMAGE.
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # B2S (Backglass 2nd Screen) Server
2 |
3 | *System files to run `directB2S` backglasses.*
4 |
5 | See the [Changelog.txt](Changelog.txt) for recent changes.
6 |
7 | ## B2S.Backglass Server
8 |
9 | Full documentation including instruction videos is available in the [Wiki](https://github.com/vpinball/b2s-backglass/wiki) here in the Repo.
10 |
11 | ### Percent-Based Screen Resolution Values
12 |
13 | The `ScreenRes.txt` configuration file now supports percent-based values for more flexible screen sizing. This allows configurations to adapt to different screen resolutions automatically.
14 | For this to work the line #4 has to point to the backglass screen using "=#" where "#" is the screen number from left to right.
15 |
16 | **Example:**
17 | ```
18 | # Playfield Screen resolution width/height
19 | 100%
20 | 100%
21 | # Backglass width/height
22 | 50%
23 | 75%
24 | ```
25 |
26 | - **Playfield values** use the leftmost (primary) screen as reference
27 | - **Backglass, DMD, and Background values** use the selected backglass screen as reference
28 | - Percent values can include decimals (e.g., `33.5%`) for precise sizing
29 | - Absolute pixel values (e.g., `1920`) are still fully supported
30 | - Both formats can be mixed in the same file
31 |
32 | ## B2S.Tools
33 |
34 | See the [B2STools.txt](B2STools/B2STools.txt) for a description of the different tool scripts.
35 |
36 | ## B2S.Backglass Designer
37 |
38 | The **B2SBackglassDesigner** has moved away to it's own repository here [B2S.Designer](https://github.com/vpinball/b2s-designer)
39 |
40 | ## Developers
41 |
42 | To build either B2S.Server or B2S.Designer open the *.sln files in Visual Studio (any version from 2019 should work) and select **build**->**Build Solution** in the menu.
43 | Microsoft has VM's prepared which includes Windows 11 and Visual Studio in one bundle. The license for these normally lasts 3 months each. This is an easy way to test if it works out without having to install many different components.
44 |
--------------------------------------------------------------------------------
/.github/workflows/prerelease.yml:
--------------------------------------------------------------------------------
1 | name: prerelease
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | sha:
6 | description: "SHA (leave blank for HEAD)"
7 | required: false
8 |
9 | env:
10 | ACTIONS_API_URL: https://api.github.com/repos/${GITHUB_REPOSITORY}/actions
11 |
12 | jobs:
13 | version:
14 | runs-on: ubuntu-latest
15 | outputs:
16 | sha: ${{ steps.sha.outputs.sha }}
17 | sha7: ${{ steps.sha.outputs.sha7 }}
18 | steps:
19 | - id: sha
20 | run: |
21 | SHA=$(if [[ "${{ github.event.inputs.sha }}" ]]; then echo "${{ github.event.inputs.sha }}"; else echo "${GITHUB_SHA}"; fi)
22 | SHA7="${SHA::7}"
23 | echo "sha=${SHA}" >> $GITHUB_OUTPUT
24 | echo "sha7=${SHA7}" >> $GITHUB_OUTPUT
25 |
26 | prerelease:
27 | runs-on: ubuntu-latest
28 | needs: [ version ]
29 | steps:
30 | - id: download
31 | run: |
32 | curl -s "${{ env.ACTIONS_API_URL }}/runs" --output runs.json
33 | RUN_ID=$(jq -r --arg SHA "${{ needs.version.outputs.sha }}" --arg NAME "b2s-backglass" '.workflow_runs[] | select(.head_sha==$SHA and .name==$NAME) | .id' runs.json)
34 | echo "Downloading b2s-backglass artifact list ${RUN_ID}..."
35 | curl -s "${{ env.ACTIONS_API_URL }}/runs/${RUN_ID}/artifacts" --output artifacts.json
36 | ARTIFACTS=($(jq -r '.artifacts[] | .archive_download_url' artifacts.json))
37 | for url in ${ARTIFACTS[@]}
38 | do
39 | echo "Downloading artifact: ${url}..."
40 | curl -s -OJ -L -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" ${url}
41 | done
42 | rm *.json
43 | - id: create_release
44 | uses: ncipollo/release-action@v1
45 | with:
46 | prerelease: true
47 | name: "b2s-backglass-${{ needs.version.outputs.sha7 }}"
48 | tag: "b2s-backglass-${{ needs.version.outputs.sha7 }}"
49 | commit: ${{ needs.version.outputs.sha }}
50 | token: ${{ secrets.GITHUB_TOKEN }}
51 | artifacts: "*"
52 |
--------------------------------------------------------------------------------
/B2STools/B2STools.txt:
--------------------------------------------------------------------------------
1 | ___ ___ ___ _____ _
2 | | _ )_ ) __| |_ _|__ ___| |___
3 | | _ \/ /\__ \ | |/ _ \/ _ \ (_-<
4 | |___/___|___/ |_|\___/\___/_/__/
5 |
6 | - directb2sReelSoundsONOFF.cmd
7 |
8 | Older pinball machines used reels to display scores on the screen. B2S Server has built-in sounds for the reel movements. Some table authors do not like these sounds and want to control them from the table instead.
9 |
10 | The script directb2sReelSoundsONOFF.cmd will disable the sounds played by the server by telling the server that the sounds do not exist.
11 | What it technically does is add some "Sound1-6" attributes to the Score tags in the directb2s file:
12 |
13 |
14 |
15 | This will tell the B2S Server to keep quiet for these reels.
16 |
17 | - B2SRandom.cmd
18 |
19 | B2SRandom can be used to randomize different backglasses before starting Visual Pinball
20 |
21 | To activate it, add the following line in the Popper Launch script
22 |
23 | CALL C:\vPinball\B2SServer\B2STools\B2SRandom.cmd "[GAMEFULLNAME]"
24 |
25 | or you can activate it in VPinballX.starter, see https://vpuniverse.com/forums/topic/10374-vpinballxstarter-a-little-gem-of-a-tool/
26 |
27 | If you start a table "table.vpx" in the folder "D:\vPinball\VisualPinball\Tables\" it will try to find
28 | D:\vPinball\VisualPinball\Tables\table-#.directb2s where # is a random number.
29 | If it is found, the file D:\vPinball\VisualPinball\Tables\table-#.directb2s is copied over D:\vPinball\VisualPinball\Tables\table.directb2s
30 |
31 | - DmdDeviceIniScale.cmd
32 |
33 | When you change your Backglass screen or you change the screen scaling the DmdDevice.ini still use the coordinates from
34 | your earlier setup. DmdDeviceIniScale.cmd can recalculate the coordinates (position and size) of the DMD settings.
35 | You can "drop" a DmdDevice.ini file on the DmdDeviceIniScale.cmd, it asks for some parameters and it will make a copy of
36 | the file and then modify the original to your new settings.
--------------------------------------------------------------------------------
/B2STools/directb2sReelSoundsONOFF.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | This does not work yet
15 |
16 |
17 |
18 |
19 |
20 |
21 | Adding the Sound - attributes to Score ID=""
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | The sound attribute(s) already exists
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SCollectData.vb:
--------------------------------------------------------------------------------
1 | Public Class B2SCollectData
2 |
3 | Inherits Generic.Dictionary(Of Integer, CollectData)
4 |
5 | Private skipframes As Integer = 0
6 |
7 | Public Enum eCollectedDataType
8 | TopImage = 1
9 | SecondImage = 2
10 | Standard = 4
11 | Animation = 8
12 | End Enum
13 |
14 | Public Class CollectData
15 | Public State As Integer = 0
16 | Public Types As Integer = 0
17 | #If B2S = "DLL" Then
18 | Public EarlyOffMode As Boolean = False
19 | Public Sub New(_state As Integer, _type As eCollectedDataType, _earlyoffmode As Boolean)
20 | State = _state
21 | Types = _type
22 | EarlyOffMode = _earlyoffmode
23 | End Sub
24 |
25 | Public Sub New(_state As Integer, _type As eCollectedDataType)
26 | State = _state
27 | Types = _type
28 | End Sub
29 | #End If
30 | End Class
31 |
32 | Public Sub New(_skipframes As Integer)
33 | skipframes = _skipframes
34 | End Sub
35 |
36 | Public Shadows Function Add(key As Integer, value As CollectData) As Boolean
37 | Dim ret As Boolean = False
38 | If Me.ContainsKey(key) Then
39 | #If B2S = "DLL" Then
40 | If value.EarlyOffMode AndAlso Me(key).State = 0 AndAlso value.State = 0 Then
41 | Me(key).State = 2
42 | Else
43 | Me(key).State = value.State
44 | End If
45 | #Else
46 | Me(key).State = value.State
47 | #End If
48 | Me(key).Types = Me(key).Types Or value.Types
49 | ret = True
50 | Else
51 | MyBase.Add(key, value)
52 | End If
53 | Return ret
54 | End Function
55 |
56 | Public Sub DataAdded()
57 | skipframes -= 1
58 | End Sub
59 |
60 | Public ReadOnly Property ShowData() As Boolean
61 | Get
62 | Return (skipframes < 0)
63 | End Get
64 | End Property
65 |
66 | Public Sub ClearData(_skipframes As Integer)
67 | MyBase.Clear()
68 | If skipframes <= 0 Then skipframes = _skipframes
69 | End Sub
70 |
71 | End Class
72 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/formBackglass.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class formBackglass
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Wird vom Windows Form-Designer benötigt.
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formBackglass))
26 | Me.SuspendLayout()
27 | '
28 | 'formBackglass
29 | '
30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None
32 | Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None
33 | Me.ClientSize = New System.Drawing.Size(564, 594)
34 | Me.ControlBox = False
35 | Me.DoubleBuffered = True
36 | Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
37 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
38 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
39 | Me.MaximizeBox = False
40 | Me.MinimizeBox = False
41 | Me.Name = "formBackglass"
42 | Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
43 | Me.Text = "Backglass"
44 | Me.ResumeLayout(False)
45 |
46 | End Sub
47 | End Class
48 |
--------------------------------------------------------------------------------
/B2SWindowPunch/B2SWindowPunch/B2SWindowPunch.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}
8 | Exe
9 | B2SWindowPunch
10 | B2SWindowPunch
11 | v4.7.2
12 | 512
13 | true
14 | true
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 | B2SWindowPunchCMD.ico
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/B2S_SetUp/B2S_SetUp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}
8 | WinExe
9 | B2S_SetUp
10 | B2S_SetUp
11 | v4.8.1
12 | 512
13 | true
14 | true
15 | true
16 |
17 |
18 | AnyCPU
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | Form
51 |
52 |
53 | Form1.cs
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Plugin/IDirectPlugin.vb:
--------------------------------------------------------------------------------
1 |
2 |
3 | '''
4 | ''' Interface for plugins for the B2S Server.
5 | ''' All plugins must implement this interface to be recognized by the B2S Server.
6 | ''' In addition they also have to export the class implementing the interface using the following attribute [Export(typeof(B2S.IDirectPlugin))] in c# or <Export(GetType(B2S.IDirectPlugin))> for VB.net.
7 | ''' Dont forget to add a reference to the B2S Server and to import the System.ComponentModel.Composition namespace.
8 | ''' Be sure to handle all exceptions of your plugin, since the B2S Server will deactivate plugings throwing unhandled exceptions.
9 | ''' Please refer to the docu on the DirectOutput framework for more info on plugins.
10 | '''
11 | Public Interface IDirectPlugin
12 |
13 | '''
14 | ''' This method initalizes the plugin.
15 | ''' It is the first plugin method beeing called after the plugin has been instanciated.
16 | '''
17 | ''' The filename of the table.
18 | ''' Name of the rom.
19 | Sub PluginInit(TableFilename As String, RomName As String)
20 |
21 | '''
22 | ''' Finishes the plugin.
23 | ''' This is the last method called, before a plugin is discared. This method is also called, after a undhandled exception has occured in a plugin.
24 | '''
25 | Sub PluginFinish()
26 |
27 |
28 | '''
29 | ''' This method is called, when the Run method of PinMame gets called.
30 | '''
31 | Sub PinMameRun()
32 |
33 | '''
34 | ''' This method is called, when the property Pause of Pinmame gets set to true.
35 | '''
36 | Sub PinMamePause()
37 |
38 | '''
39 | ''' This method is called, when the property Pause of Pinmame gets set to false.
40 | '''
41 | Sub PinMameContinue()
42 |
43 | '''
44 | ''' This method is called, when the Stop method of Pinmame is called.
45 | '''
46 | Sub PinMameStop()
47 |
48 | '''
49 | ''' This method is called, when new data from Pinmame becomes available.
50 | '''
51 | ''' Char representing the table element type (S=Solenoid, W=Switch, L=Lamp, M=Mech, G=GI).
52 | ''' The number of the table element.
53 | ''' The value of the table element.
54 | Sub PinMameDataReceive(TableElementTypeChar As Char, Number As Integer, Value As Integer)
55 |
56 | '''
57 | ''' Gets the name of the plugin.
58 | '''
59 | '''
60 | ''' The name of the plugin.
61 | '''
62 | ReadOnly Property Name As String
63 |
64 |
65 |
66 | End Interface
67 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/formDMD.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Windows.Forms
3 |
4 | Public Class formDMD
5 | Private Const MA_NOACTIVATE As System.Int32 = 3
6 | Private Const WM_MOUSEACTIVATE As Integer = &H21
7 | #Region " Properties "
8 |
9 |
10 | Protected Overrides Sub WndProc(ByRef m As Message)
11 | 'Don't allow the window to be activated by swallowing the mouse event.
12 | If B2SSettings.FormNoFocus And m.Msg = WM_MOUSEACTIVATE Then
13 | m.Result = New IntPtr(MA_NOACTIVATE)
14 | Return
15 | End If
16 | MyBase.WndProc(m)
17 | End Sub
18 | #End Region 'Properties
19 |
20 | #Region "constructor"
21 |
22 | Public Sub New()
23 |
24 | InitializeComponent()
25 |
26 | ' set some styles
27 | 'Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
28 | Me.DoubleBuffered = True
29 |
30 | End Sub
31 |
32 | #End Region
33 |
34 | #Region "painting"
35 |
36 | Private Sub formDMD_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
37 |
38 | If B2SData.DMDIlluminations.Count > 0 Then
39 |
40 | If Not B2SData.UseDMDZOrder Then
41 |
42 | ' draw all standard images
43 | For Each illu As KeyValuePair(Of String, B2SPictureBox) In B2SData.DMDIlluminations
44 | If illu.Value.Visible Then
45 | e.Graphics.DrawImage(illu.Value.BackgroundImage, illu.Value.RectangleF)
46 | End If
47 | Next
48 |
49 | Else
50 |
51 | ' first of all draw zorderd images
52 | For Each illus As KeyValuePair(Of Integer, B2SPictureBox()) In B2SData.ZOrderDMDImages
53 | For Each illu As B2SPictureBox In illus.Value
54 | If illu.Visible Then
55 | e.Graphics.DrawImage(illu.BackgroundImage, illu.RectangleF)
56 | End If
57 | Next
58 | Next
59 | ' now draw all standard images
60 | For Each illu As KeyValuePair(Of String, B2SPictureBox) In B2SData.DMDIlluminations
61 | If illu.Value.Visible AndAlso illu.Value.ZOrder = 0 Then
62 | e.Graphics.DrawImage(illu.Value.BackgroundImage, illu.Value.RectangleF)
63 | End If
64 | Next
65 |
66 | End If
67 |
68 | End If
69 |
70 | End Sub
71 |
72 | Private Sub formDMD_MouseClick(sender As Object, e As MouseEventArgs) Handles MyBase.MouseClick
73 | If e.Button = Windows.Forms.MouseButtons.Right Then
74 | B2SScreen.formBackglass.formBackglass_MouseClick(sender, e)
75 | End If
76 | End Sub
77 |
78 | #End Region
79 |
80 | End Class
--------------------------------------------------------------------------------
/WhatIsWhat.txt:
--------------------------------------------------------------------------------
1 | The three main projects:
2 | - B2SBackglassDesigner: The Backglass Designer to generate directB2S-Backglasses (moved to https://github.com/vpinball/b2s-designer)
3 | - B2SBackglassServer: The COM-Server for the communication between VP and Backglass and the display of the Backglasses in the same process
4 | - B2SBackglassServerEXE: Backglass display as separate EXE (for performance reasons). Contains copied code of the server. Communication via the COM-Server and to large parts via the Registry
5 |
6 | In addition:
7 | - LEDs: Two projects on the topic of "LED-Display"
8 |
9 | Tools:
10 | - B2SBackglassServerRegisterApp: Register Backglass-COM-Server in the .NET-Environment.
11 | - B2S_ScreenResIdentifier: Tool to organize and to set B2S-Settings
12 | - B2SWindowPunch: Cut holes in forms overlapped by other smaller windows.
13 | - B2SInit.cmd: This bat file is called from B2SBackglassServer and then it calls B2SWindowPunch.
14 | - B2STools\directb2sReelSoundsONOFF.cmd: Small command to deactivate all built-in REEL sounds in directb2s files.
15 | - ScreenResTemplate.txt is an exemplary file how the .txt (res files) has to look like. From release 1.3.1.1 it supports comment lines starting with a "#".
16 | If you use tools not supporting comments, you need to remove these lines. PinballX has now been updated as well!
17 | Will be removed when unchecking the checkbox in ScreenResIdentifier.
18 |
19 |
20 | Additional info:
21 |
22 | - The code is all VB.net (The plugin code was my first VB.net code, since I'm more into C#).
23 | - The proxy implementation uses some tricks to ensure that all Pinmame data is available for the backglass and the plugins. There are 2 ways how data is fetched:
24 | For tables which call the Pinmame commands the get the latestest changes on the table elements, the B2S.Server simply intercepts those commands and passes the data which is returned by PinMame not only to VP, but also the backglass and to the plugins.
25 | For tables which dont call those PinMame commands, the B2S.Server calls those commands on its own at regular intervals. To detect if the B2S.Server has to do its own calls, there is some logic which will switch to this mode if the "changes" command is called within 50ms (not sure about that anymore) after the table has started.
26 | - Another bit of special logic in B2S.Server detects if the table is still active, so the B2S.Server can shut down on table exit. This is necessary since VP resp. VBA does not always properly release the B2S.Server com object.
27 | - I have only seen the preliminary code of the proxy implementation, so things might have changed since then, but I'm pretty sure that some cleanup to the code would make things much easier for future development.
28 | - The plugin code uses Microsoft MEF (https://msdn.microsoft.com/en-us/library/dd460648(v=vs.110).aspx) to detect and load plugins.
29 | - The B2S.Server to backglass communication uses the registry to transfer data. IMHO this should be changed.
30 |
31 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/moduleImageExtensions.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032
2 | Imports System
3 | Imports System.Drawing
4 |
5 | Module moduleImageExtensions
6 |
7 | _
8 | Public Function Resized(image As Image, size As Size, Optional ByVal disposeOriginal As Boolean = False) As Image
9 | If image Is Nothing Then Return Nothing
10 | If size.Width <= 0 OrElse size.Height <= 0 Then Return Nothing
11 | Dim ret As Bitmap = New Bitmap(size.Width, size.Height)
12 | Using gr As Graphics = Graphics.FromImage(ret)
13 | gr.PageUnit = GraphicsUnit.Pixel
14 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High
15 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
16 | gr.DrawImage(image, New Rectangle(0, 0, ret.Width, ret.Height))
17 | End Using
18 | If disposeOriginal Then
19 | image.Dispose()
20 | image = Nothing
21 | End If
22 | Return ret
23 | End Function
24 |
25 | _
26 | Public Function Rotated(image As Image, angle As Integer) As Image
27 | If image Is Nothing Then Return Nothing
28 | Dim ret As Bitmap = New Bitmap(image.Width, image.Height)
29 | Dim matrix As New System.Drawing.Drawing2D.Matrix
30 | Using gr As Graphics = Graphics.FromImage(ret)
31 | gr.PageUnit = GraphicsUnit.Pixel
32 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High
33 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
34 | matrix.RotateAt(angle * -1, New Point(CInt(image.Width / 2), CInt(image.Height / 2)))
35 | gr.Transform = matrix
36 | gr.DrawImage(image, New Rectangle(0, 0, image.Width, image.Height))
37 | End Using
38 | Return ret
39 | End Function
40 |
41 | _
42 | Public Function ResizedF(image As Image, sizeF As SizeF, Optional ByVal disposeOriginal As Boolean = False) As Image
43 | If image Is Nothing Then Return Nothing
44 | If sizeF.Width <= 0 OrElse sizeF.Height <= 0 Then Return Nothing
45 | Dim largesize As Size = New Size(CInt(sizeF.Width) + 1, CInt(sizeF.Height) + 1)
46 | Dim ret As Bitmap = New Bitmap(largesize.Width, largesize.Height)
47 | Using gr As Graphics = Graphics.FromImage(ret)
48 | gr.PageUnit = GraphicsUnit.Pixel
49 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High
50 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
51 | gr.DrawImage(image, New Rectangle(0, 0, sizeF.Width, sizeF.Height))
52 | End Using
53 | If disposeOriginal Then
54 | image.Dispose()
55 | image = Nothing
56 | End If
57 | Return ret
58 | End Function
59 |
60 | End Module
61 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("BetterLed.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 | End Module
63 | End Namespace
64 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Dream7Display.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 | End Module
63 | End Namespace
64 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Forms/formMode.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class formMode
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Me.components = New System.ComponentModel.Container()
26 | Me.lblInfo = New System.Windows.Forms.Label()
27 | Me.TimerOpacity = New System.Windows.Forms.Timer(Me.components)
28 | Me.TimerShutDown = New System.Windows.Forms.Timer(Me.components)
29 | Me.SuspendLayout()
30 | '
31 | 'lblInfo
32 | '
33 | Me.lblInfo.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
34 | Me.lblInfo.Location = New System.Drawing.Point(12, 20)
35 | Me.lblInfo.Name = "lblInfo"
36 | Me.lblInfo.Size = New System.Drawing.Size(338, 20)
37 | Me.lblInfo.TabIndex = 0
38 | Me.lblInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
39 | '
40 | 'TimerOpacity
41 | '
42 | '
43 | 'TimerShutDown
44 | '
45 | '
46 | 'formMode
47 | '
48 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
49 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
50 | Me.ClientSize = New System.Drawing.Size(362, 62)
51 | Me.Controls.Add(Me.lblInfo)
52 | Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
53 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
54 | Me.MaximizeBox = False
55 | Me.MinimizeBox = False
56 | Me.Name = "formMode"
57 | Me.Opacity = 0R
58 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
59 | Me.Text = "Backglass dual mode ..."
60 | Me.TopMost = True
61 | Me.ResumeLayout(False)
62 |
63 | End Sub
64 | Friend WithEvents lblInfo As System.Windows.Forms.Label
65 | Friend WithEvents TimerOpacity As System.Windows.Forms.Timer
66 | Friend WithEvents TimerShutDown As System.Windows.Forms.Timer
67 | End Class
68 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2SBackglassServerRegisterApp.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 | End Module
63 | End Namespace
64 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.BetterLed.My.MySettings
68 | Get
69 | Return Global.BetterLed.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.B2S.My.MySettings
68 | Get
69 | Return Global.B2S.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.B2S.My.MySettings
68 | Get
69 | Return Global.B2S.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.544
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.Dream7Display.My.MySettings
68 | Get
69 | Return Global.Dream7Display.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Plugin/PluginWindow.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032, BC42021
2 | Imports System.Windows.Forms
3 | Imports System.Drawing
4 |
5 | Public Class PluginWindow
6 |
7 | Sub New(Plugins As PluginList)
8 |
9 | InitializeComponent()
10 | Me.Plugins = Plugins
11 | End Sub
12 |
13 | Private _Plugins As PluginList = New PluginList()
14 | Public Property Plugins() As PluginList
15 | Get
16 | Return _Plugins
17 | End Get
18 | Private Set(ByVal value As PluginList)
19 | _Plugins = value
20 | Me.PluginDataGrid.DataSource = value
21 | Me.PluginDataGrid.Invalidate()
22 | End Set
23 | End Property
24 |
25 | Private Sub ExceptionContextMenu_ItemClicked(sender As System.Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ExceptionContextMenu.ItemClicked
26 | Select Case e.ClickedItem.Name
27 | Case "ShowExceptionDetails"
28 | MsgBox(Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException.ToString(), MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxSetForeground + MsgBoxStyle.OkOnly, "Exception details for plugin " & Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Name)
29 | Case "DiscardException"
30 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException = Nothing
31 | Case "DiscardExceptionAndActivate"
32 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException = Nothing
33 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Active
34 | End Select
35 |
36 |
37 | End Sub
38 |
39 | Private Sub PluginDataGrid_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellDoubleClick
40 | If e.RowIndex >= 0 AndAlso e.RowIndex <= Plugins.Count Then
41 | Plugins(e.RowIndex).PluginShowFrontEnd()
42 | End If
43 | End Sub
44 |
45 |
46 |
47 | Private Sub PluginDataGrid_CellMouseEnter(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellMouseEnter
48 | If e.ColumnIndex >= 0 AndAlso e.ColumnIndex < Me.PluginDataGrid.Columns.Count Then
49 | Me.StatusLabel.Text = Me.PluginDataGrid.Columns(e.ColumnIndex).ToolTipText
50 | End If
51 | End Sub
52 |
53 | Private Sub PluginDataGrid_CellMouseLeave(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellMouseLeave
54 | Me.StatusLabel.Text = "Doubleclick a entry to show the frontend of the plugin"
55 | End Sub
56 |
57 |
58 |
59 | Private Sub StatusContextMenu_ItemClicked(sender As System.Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles StatusContextMenu.ItemClicked
60 | Select Case e.ClickedItem.Name
61 | Case "ActivatePlugin"
62 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Active
63 | Case "DisablePlugin"
64 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Disabled
65 | End Select
66 |
67 | End Sub
68 | End Class
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.B2SBackglassServerRegisterApp.My.MySettings
68 | Get
69 | Return Global.B2SBackglassServerRegisterApp.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/leds/BetterLed/BetterLed.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BetterLed", "BetterLed.vbproj", "{38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}"
5 | EndProject
6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dream7Display", "..\Dream7Segments\Dream7Display.vbproj", "{BF708B8E-D10A-4E73-9712-EA5941C27057}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|Mixed Platforms = Debug|Mixed Platforms
12 | Debug|x86 = Debug|x86
13 | Debug|x64 = Debug|x64
14 | Release|Any CPU = Release|Any CPU
15 | Release|Mixed Platforms = Release|Mixed Platforms
16 | Release|x86 = Release|x86
17 | Release|x64 = Release|x64
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Any CPU.ActiveCfg = Debug|x86
21 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
22 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Mixed Platforms.Build.0 = Debug|x86
23 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x86.ActiveCfg = Debug|x86
24 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x86.Build.0 = Debug|x86
25 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x64.ActiveCfg = Debug|x64
26 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x64.Build.0 = Debug|x64
27 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Any CPU.ActiveCfg = Release|x86
28 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Mixed Platforms.ActiveCfg = Release|x86
29 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Mixed Platforms.Build.0 = Release|x86
30 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x86.ActiveCfg = Release|x86
31 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x86.Build.0 = Release|x86
32 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x64.ActiveCfg = Release|x64
33 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x64.Build.0 = Release|x64
34 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
37 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
38 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x86.ActiveCfg = Debug|Any CPU
39 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x86.Build.0 = Debug|Any CPU
40 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x64.ActiveCfg = Debug|Any CPU
41 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x64.Build.0 = Debug|Any CPU
42 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.ActiveCfg = Release|Any CPU
43 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.Build.0 = Release|Any CPU
44 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
45 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Mixed Platforms.Build.0 = Release|Any CPU
46 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x86.ActiveCfg = Release|Any CPU
47 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x86.Build.0 = Release|Any CPU
48 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x64.ActiveCfg = Release|Any CPU
49 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x64.Build.0 = Release|Any CPU
50 | EndGlobalSection
51 | GlobalSection(SolutionProperties) = preSolution
52 | HideSolutionNode = FALSE
53 | EndGlobalSection
54 | EndGlobal
55 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
57 |
58 |
59 | true/pm
60 |
61 |
62 |
63 |
64 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
57 |
58 |
59 | true/pm
60 | true
61 |
62 |
63 |
64 |
65 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/B2SWindowPunch/B2SWindowPunch/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
57 |
65 |
66 |
67 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
57 |
65 |
66 |
67 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Controls/B2SPictureBox.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Drawing
3 | Imports System.Windows.Forms
4 |
5 | Public Class B2SPictureBox
6 |
7 | Inherits B2SBaseBox
8 |
9 | Public Enum ePictureBoxType
10 | StandardImage = 0
11 | SelfRotatingImage = 1
12 | MechRotatingImage = 2
13 | End Enum
14 | Public Enum eSnippitRotationDirection
15 | Clockwise = 0
16 | AntiClockwise = 1
17 | End Enum
18 | Public Enum eSnippitRotationStopBehaviour
19 | SpinOff = 0
20 | StopImmediatelly = 1
21 | RunAnimationTillEnd = 2
22 | RunAnimationToFirstStep = 3
23 | End Enum
24 |
25 |
26 | Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
27 | ' rectangle area for painting
28 | Dim rect As Rectangle = New Rectangle(0, 0, Me.Width - 1, Me.Height - 1)
29 |
30 | ' draw dashed frame
31 | Dim pen As Pen = New Pen(Brushes.LightGray)
32 | pen.DashPattern = New Single() {3.0F, 3.0F}
33 | e.Graphics.DrawRectangle(pen, rect)
34 | pen.Dispose()
35 |
36 | ' draw text
37 | 'If Not String.IsNullOrEmpty(Me.Text) Then
38 | ' TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, rect, Color.White, TextFormatFlags.WordBreak Or TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter)
39 | 'End If
40 | End Sub
41 |
42 | Public Sub New()
43 | ' set some drawing styles
44 | Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
45 | 'Me.SetStyle(ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True)
46 | 'Me.DoubleBuffered = True
47 | Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
48 |
49 | ' backcolor needs to be transparent
50 | Me.BackColor = Color.Transparent
51 |
52 | ' do not show the control
53 | MyBase.Visible = False
54 | End Sub
55 |
56 | Public Property PictureBoxType() As ePictureBoxType = ePictureBoxType.StandardImage
57 |
58 | Public Property GroupName() As String = String.Empty
59 |
60 | Public Property Intensity() As Integer = 1
61 | Public Property InitialState() As Integer = 0
62 | Public Property DualMode() As B2SData.eDualMode = B2SData.eDualMode.Both
63 | Public Property ZOrder() As Integer = 0
64 |
65 | Public Property IsImageSnippit() As Boolean = False
66 | Public Property SnippitRotationStopBehaviour() As eSnippitRotationStopBehaviour = eSnippitRotationStopBehaviour.SpinOff
67 |
68 | Private _Visible As Boolean
69 | Public Shadows Property Visible(Optional ByVal _SetThruAnimation As Boolean = False) As Boolean
70 | Get
71 | Return _Visible
72 | End Get
73 | Set(ByVal value As Boolean)
74 | If _Visible <> value Then
75 | SetThruAnimation = _SetThruAnimation
76 | _Visible = value
77 | ' do a invalidate at the parent form
78 | If Me.Parent IsNot Nothing Then Me.Parent.Invalidate(Rectangle.Round(Me.RectangleF))
79 | End If
80 | End Set
81 | End Property
82 | Public Property SetThruAnimation() As Boolean = False
83 |
84 | Private _BackgroundImage As Image
85 | Public Shadows Property BackgroundImage() As Image
86 | Get
87 | Return _BackgroundImage
88 | End Get
89 | Set(ByVal value As Image)
90 | If _BackgroundImage Is Nothing OrElse Not _BackgroundImage.Equals(value) Then
91 | _BackgroundImage = value
92 | ' do a invalidate at the parent form
93 | If Me.Parent IsNot Nothing Then Me.Parent.Invalidate(Rectangle.Round(Me.RectangleF))
94 | End If
95 | End Set
96 | End Property
97 |
98 | Private _OffImage As Image
99 | Public Property OffImage() As Image
100 | Get
101 | Return _OffImage
102 | End Get
103 | Set(ByVal value As Image)
104 | _OffImage = value
105 | End Set
106 | End Property
107 |
108 | End Class
109 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
54 |
62 |
63 |
77 |
78 |
79 | true
80 | PerMonitorV2
81 |
82 |
83 |
--------------------------------------------------------------------------------
/B2STools/DmdDeviceIniScale.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | echo ___ ___ ___
4 | echo ^| _ ^)^_ ^) __^|
5 | echo ^| _ \/ /\__ \
6 | echo ^|___/___^|___/ DmdDeviceIniScale
7 | echo.
8 | echo This script is used to change the scaling and position of entries in a DmdDevice.ini file.
9 | REM
10 | REM Check if filename was given as first parameter
11 | if "%~1"=="" (
12 | echo.
13 | echo Usage^: DmdDeviceIniScale.cmd ^
14 | echo Drop a DmdDevice.ini file on this script in windows explorer.
15 | echo It will make a backup copy of your file and recalculate all positions and sizes on the basis of a entered scaling factor.
16 | echo It is also possible to move the positions using an offset horizontal and vertically.
17 | pause
18 | exit
19 | ) else (
20 | set INIFILE=%~n1
21 | set EXTENSION=%~x1
22 | )
23 | echo [33mAfter making a backup, your original file %INIFILE%%EXTENSION% will be overwritten with the new values.[0m
24 | pause
25 |
26 | for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
27 | set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
28 | set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
29 |
30 | set BACKUPFILE=%INIFILE%_%YYYY%%MM%%DD%_%HH%%Min%%Sec%%EXTENSION%
31 | set INIFILE=%INIFILE%%EXTENSION%
32 |
33 | echo Backup %INIFILE% to %BACKUPFILE%
34 | copy %INIFILE% %BACKUPFILE% > NUL
35 | REM Run PowerShell code directly
36 | powershell -NoProfile -ExecutionPolicy Bypass -Command ^
37 | "$BACKUPFILE='%BACKUPFILE%';" ^
38 | "$INIFILE='%INIFILE%';" ^
39 | "$iniLines = Get-Content $BACKUPFILE;" ^
40 | "$hasHeader = $false;" ^
41 | "$origScaling = 100;" ^
42 | "$origOffsetLeft = 0;" ^
43 | "$origOffsetTop = 0;" ^
44 | "foreach ($l in $iniLines) {" ^
45 | " if ($l -match '^\s*;\s*B2S DmdDeviceScale') { $hasHeader = $true }" ^
46 | " if ($l -match '^\s*;\s*screenScaling\s*=\s*(\d+)') { $origScaling = [int]$matches[1] }" ^
47 | " if ($l -match '^\s*;\s*offsetLeft\s*=\s*(-?\d+)') { $origOffsetLeft = [int]$matches[1] }" ^
48 | " if ($l -match '^\s*;\s*offsetTop\s*=\s*(-?\d+)') { $origOffsetTop = [int]$matches[1] }" ^
49 | "}" ^
50 | "$inputScaling = Read-Host ('What scaling percent was this file saved with? (default ' + $origScaling + ')');" ^
51 | "if ([string]::IsNullOrWhiteSpace($inputScaling)) { $inputScaling = $origScaling }" ^
52 | "$origScaling = [int]$inputScaling;" ^
53 | "$screenScaling = Read-Host ('Wanted scaling in percent (e.g. 150, default ' + $origScaling + ')'); if ([string]::IsNullOrWhiteSpace($screenScaling)) { $screenScaling = $origScaling }" ^
54 | "$offsetLeft = Read-Host ('Offset for left (e.g. 0, default ' + $origOffsetLeft + ')'); if ([string]::IsNullOrWhiteSpace($offsetLeft)) { $offsetLeft = $origOffsetLeft }" ^
55 | "$offsetTop = Read-Host ('Offset for top (e.g. 0, default ' + $origOffsetTop + ')'); if ([string]::IsNullOrWhiteSpace($offsetTop)) { $offsetTop = $origOffsetTop }" ^
56 | "$factor = [double]$origScaling / [double]$screenScaling;" ^
57 | "$newLines = @();" ^
58 | "$newLines += '; B2S DmdDeviceScale';" ^
59 | "$newLines += '; screenScaling = ' + $screenScaling;" ^
60 | "$newLines += '; offsetLeft=' + $offsetLeft;" ^
61 | "$newLines += '; offsetTop=' + $offsetTop;" ^
62 | "foreach ($line in $iniLines) {" ^
63 | " if ($line -match '^\s*;\s*B2S DmdDeviceScale') { continue }" ^
64 | " if ($line -match '^\s*;\s*screenScaling\s*=') { continue }" ^
65 | " if ($line -match '^\s*;\s*offsetLeft\s*=') { continue }" ^
66 | " if ($line -match '^\s*;\s*offsetTop\s*=') { continue }" ^
67 | " if ($line -match '(?i)padding') { $newLines += $line; continue }" ^
68 | " if ($line.Trim().StartsWith(';') -or $line.Trim() -eq '') { $newLines += $line; continue }" ^
69 | " if ($line -match '^\s*([^=]+?)\s*=\s*(-?\d+)\s*$') {" ^
70 | " $key = $matches[1].Trim(); $value = [double]$matches[2];" ^
71 | " if ($key.ToLower().EndsWith('left')) { $newValue = [math]::Round((($value - $origOffsetLeft) * $factor) + [double]$offsetLeft) }" ^
72 | " elseif ($key.ToLower().EndsWith('top')) { $newValue = [math]::Round(($value - $origOffsetTop) * $factor + [double]$offsetTop) }" ^
73 | " elseif ($key.ToLower().EndsWith('width') -or $key.ToLower().EndsWith('height')) { $newValue = [math]::Round($value * $factor) }" ^
74 | " else { $newValue = $value }" ^
75 | " $newLines += \"$key = $newValue\"" ^
76 | " } else { $newLines += $line }" ^
77 | "}" ^
78 | "$newLines | Set-Content -Encoding UTF8 $INIFILE;" ^
79 | "Write-Host 'Done!'"
80 |
81 | pause
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2S.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 |
63 | '''
64 | ''' Looks up a localized string similar to B2S ScreenResIdentifier.
65 | '''
66 | Friend ReadOnly Property AppTitle() As String
67 | Get
68 | Return ResourceManager.GetString("AppTitle", resourceCulture)
69 | End Get
70 | End Property
71 |
72 | '''
73 | ''' Looks up a localized string similar to Do you want to get a setup recommendation from me?.
74 | '''
75 | Friend ReadOnly Property DoRecommendation() As String
76 | Get
77 | Return ResourceManager.GetString("DoRecommendation", resourceCulture)
78 | End Get
79 | End Property
80 |
81 | '''
82 | ''' Looks up a localized string similar to You haven't saved your settings' changes. Do you want to save right now?.
83 | '''
84 | Friend ReadOnly Property SaveChanges() As String
85 | Get
86 | Return ResourceManager.GetString("SaveChanges", resourceCulture)
87 | End Get
88 | End Property
89 |
90 | '''
91 | ''' Looks up a localized string similar to Your settings are saved..
92 | '''
93 | Friend ReadOnly Property SettingsAreSaved() As String
94 | Get
95 | Return ResourceManager.GetString("SettingsAreSaved", resourceCulture)
96 | End Get
97 | End Property
98 | End Module
99 | End Namespace
100 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SStatistics.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032
2 | Imports System
3 |
4 | Public Class B2SStatistics
5 |
6 | Private Shared Property _LogStatistics() As Boolean = False
7 | Public Shared Property LogStatistics() As Boolean
8 | Get
9 | Return _LogStatistics
10 | End Get
11 | Set(ByVal value As Boolean)
12 | _LogStatistics = value
13 | #If B2S = "DLL" Then
14 | B2SData.IsInfoDirty = True
15 | #End If
16 | End Set
17 | End Property
18 |
19 | Public Class StatsCollection
20 |
21 | Public List As Generic.List(Of StatsEntry)
22 |
23 | Public CurrentState As Integer = 0
24 | Public SetCount As Integer() = Nothing
25 | Public MaxOn As TimeSpan() = Nothing
26 | Public AvgOn As TimeSpan() = Nothing
27 | Public MinOn As TimeSpan() = Nothing
28 |
29 | Public Sub New()
30 |
31 | List = New Generic.List(Of StatsEntry)
32 |
33 | End Sub
34 |
35 | Public ReadOnly Property IsValid() As Boolean
36 | Get
37 | Return (SetCount IsNot Nothing)
38 | End Get
39 | End Property
40 |
41 | Public Sub Add(ByVal _State As Integer)
42 |
43 | CurrentState = _State
44 |
45 | ' maybe get last item and set time span to last entry
46 | Dim lastitem As StatsEntry = Nothing
47 | Dim now As Date = Date.Now
48 | If List.Count > 0 Then
49 | lastitem = List(List.Count - 1)
50 | Dim lasttime As Date = lastitem.Time
51 | lastitem.TimeSpan = now - lasttime
52 | End If
53 |
54 | ' check arrays
55 | Dim upperbound As Integer = Math.Max(_State, If(lastitem IsNot Nothing, lastitem.State, 0))
56 | If SetCount Is Nothing Then
57 | ReDim SetCount(upperbound)
58 | ReDim MaxOn(upperbound)
59 | ReDim AvgOn(upperbound)
60 | ReDim MinOn(upperbound)
61 | ElseIf upperbound > SetCount.Length - 1 Then
62 | ReDim Preserve SetCount(upperbound)
63 | ReDim Preserve MaxOn(upperbound)
64 | ReDim Preserve AvgOn(upperbound)
65 | ReDim Preserve MinOn(upperbound)
66 | End If
67 |
68 | ' set some overall stats
69 | SetCount(_State) += 1
70 | If lastitem IsNot Nothing Then
71 | If MaxOn(lastitem.State) = Nothing Then
72 | MaxOn(lastitem.State) = lastitem.TimeSpan
73 | Else
74 | If MaxOn(lastitem.State) < lastitem.TimeSpan Then MaxOn(lastitem.State) = lastitem.TimeSpan
75 | End If
76 | If MinOn(lastitem.State) = Nothing Then
77 | MinOn(lastitem.State) = lastitem.TimeSpan
78 | Else
79 | If MinOn(lastitem.State) > lastitem.TimeSpan Then MinOn(lastitem.State) = lastitem.TimeSpan
80 | End If
81 | If AvgOn(lastitem.State) = Nothing Then
82 | AvgOn(lastitem.State) = lastitem.TimeSpan
83 | Else
84 | AvgOn(lastitem.State) = TimeSpan.FromTicks((TimeSpan.FromTicks(AvgOn(lastitem.State).Ticks * (SetCount(lastitem.State) - 1)) + lastitem.TimeSpan).Ticks / SetCount(lastitem.State))
85 | End If
86 | End If
87 |
88 | ' add entry
89 | List.Add(New StatsEntry(_State, now))
90 |
91 | End Sub
92 |
93 | End Class
94 | Public Class StatsEntry
95 | Public State As Integer = 0
96 | Public Time As Date = Nothing
97 | Public TimeSpan As TimeSpan = Nothing
98 |
99 | Public Sub New(ByVal _State As Integer, ByVal _Time As Date)
100 | State = _State
101 | Time = _Time
102 | End Sub
103 | End Class
104 |
105 | Public Shared Property LampsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection)
106 | Public Shared Property SolenoidsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection)
107 | Public Shared Property GIStringsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection)
108 |
109 | Shared Sub New()
110 |
111 | LogStatistics = B2SSettings.IsStatisticsBackglassOn
112 |
113 | End Sub
114 |
115 | Public Shared Sub ClearAll()
116 | LampsStats.Clear()
117 | SolenoidsStats.Clear()
118 | GIStringsStats.Clear()
119 | End Sub
120 |
121 | End Class
122 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2S.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 |
63 | '''
64 | ''' Looks up a localized string similar to B2S Backglass Server.
65 | '''
66 | Friend ReadOnly Property AppTitle() As String
67 | Get
68 | Return ResourceManager.GetString("AppTitle", resourceCulture)
69 | End Get
70 | End Property
71 |
72 | '''
73 | ''' Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
74 | '''
75 | Friend ReadOnly Property camera1() As System.IO.UnmanagedMemoryStream
76 | Get
77 | Return ResourceManager.GetStream("camera1", resourceCulture)
78 | End Get
79 | End Property
80 |
81 | '''
82 | ''' Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
83 | '''
84 | Friend ReadOnly Property EMReel() As System.IO.UnmanagedMemoryStream
85 | Get
86 | Return ResourceManager.GetStream("EMReel", resourceCulture)
87 | End Get
88 | End Property
89 |
90 | '''
91 | ''' Looks up a localized string similar to The changes you made need a restart of the backglass..
92 | '''
93 | Friend ReadOnly Property MSG_ChangesNeedARestart() As String
94 | Get
95 | Return ResourceManager.GetString("MSG_ChangesNeedARestart", resourceCulture)
96 | End Get
97 | End Property
98 |
99 | '''
100 | ''' Looks up a localized string similar to You haven't saved your changes. Do you want to save them now?.
101 | '''
102 | Friend ReadOnly Property MSG_IsDirty() As String
103 | Get
104 | Return ResourceManager.GetString("MSG_IsDirty", resourceCulture)
105 | End Get
106 | End Property
107 | End Module
108 | End Namespace
109 |
--------------------------------------------------------------------------------
/leds/dream7segments/Dream7Display.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {BF708B8E-D10A-4E73-9712-EA5941C27057}
7 | Library
8 | Dream7Display
9 | Dream7Display
10 | 512
11 | Windows
12 | v4.0
13 |
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | true
20 | true
21 | bin\Debug\
22 | Dream7Display.xml
23 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | false
29 | true
30 | true
31 | bin\Release\
32 | Dream7Display.xml
33 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
34 |
35 |
36 | On
37 |
38 |
39 | Binary
40 |
41 |
42 | Off
43 |
44 |
45 | On
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | True
72 | Application.myapp
73 |
74 |
75 | True
76 | True
77 | Resources.resx
78 |
79 |
80 | True
81 | Settings.settings
82 | True
83 |
84 |
85 | Component
86 |
87 |
88 |
89 |
90 |
91 | VbMyResourcesResXFileCodeGenerator
92 | Resources.Designer.vb
93 | My.Resources
94 | Designer
95 |
96 |
97 |
98 |
99 | MyApplicationCodeGenerator
100 | Application.Designer.vb
101 |
102 |
103 | SettingsSingleFileGenerator
104 | My
105 | Settings.Designer.vb
106 |
107 |
108 |
109 |
116 |
117 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Classes/B2SPlayer.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032
2 |
3 | Imports System
4 |
5 | Public Class B2SPlayer
6 |
7 | Inherits Generic.Dictionary(Of Integer, ControlCollection)
8 |
9 | Public Enum eControlType
10 | NotDefined = 0
11 | LEDBox = 1
12 | Dream7LEDDisplay = 2
13 | ReelBox = 3
14 | ReelDisplay = 4
15 | End Enum
16 |
17 | Public Class ControlCollection
18 |
19 | Inherits Generic.List(Of ControlInfo)
20 |
21 | Public Shadows Sub Add(ByVal item As ControlInfo)
22 | Dim add As Boolean = True
23 | For Each control As ControlInfo In Me
24 | If control.StartDigit = item.StartDigit Then
25 | add = False
26 | Exit For
27 | End If
28 | Next
29 | If add Then
30 | MyBase.Add(item)
31 | Digits += item.Digits
32 | End If
33 | End Sub
34 |
35 | Public Property Digits() As Integer = 0
36 |
37 | Private _Score As Integer = -1
38 | Public Property Score() As Integer
39 | Get
40 | Return _Score
41 | End Get
42 | Set(ByVal value As Integer)
43 | 'If _Score <> value Then
44 | _Score = value
45 | SetScore(value)
46 | 'End If
47 | End Set
48 | End Property
49 |
50 | Private Sub SetScore(ByVal score As Integer)
51 |
52 | Dim scoreAsString As String = New String(" ", Math.Max(0, Digits - score.ToString().Length)) & score.ToString()
53 | If scoreAsString.Length > Digits Then
54 | scoreAsString = scoreAsString.Substring(scoreAsString.Length - Digits)
55 | End If
56 |
57 | For Each control As ControlInfo In Me
58 |
59 | ' get the part of the score
60 | Dim partofscore As String = scoreAsString.Substring(0, control.Digits)
61 |
62 | ' pass matching score part to real control
63 | Select Case control.Type
64 | Case eControlType.LEDBox
65 | ' nothing to do
66 | Case eControlType.Dream7LEDDisplay
67 | If Not control.LEDDisplay.Visible Then
68 | For i As Integer = control.StartDigit To control.StartDigit + control.Digits - 1
69 | B2SData.LEDs("LEDBox" & i.ToString()).Text = partofscore.Substring(i - control.StartDigit, 1)
70 | Next
71 | Else
72 | For i As Integer = 0 To control.Digits - 1
73 | control.LEDDisplay.SetValue(i, partofscore.Substring(i, 1))
74 | Next
75 | End If
76 | Case eControlType.ReelBox
77 | ' nothing to do
78 | Case eControlType.ReelDisplay
79 | control.ReelDisplay.Score = If(IsNumeric(partofscore), CInt(partofscore), 0)
80 | End Select
81 |
82 | ' remove already passed score part
83 | scoreAsString = scoreAsString.Substring(control.Digits)
84 |
85 | Next
86 |
87 | End Sub
88 |
89 | End Class
90 | Public Class ControlInfo
91 |
92 | Public StartDigit As Integer = 0
93 | Public Digits As Integer = 0
94 | Public Type As eControlType = eControlType.NotDefined
95 | Public LEDBox As B2SLEDBox = Nothing
96 | Public LEDDisplay As Dream7Display = Nothing
97 | Public ReelBox As B2SReelBox = Nothing
98 | Public ReelDisplay As B2SReelDisplay = Nothing
99 |
100 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _ledbox As B2SLEDBox)
101 | MyNew(_startdigit, _digits, eControlType.LEDBox)
102 | LEDBox = _ledbox
103 | End Sub
104 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _leddisplay As Dream7Display)
105 | MyNew(_startdigit, _digits, eControlType.Dream7LEDDisplay)
106 | LEDDisplay = _leddisplay
107 | End Sub
108 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _reelbox As B2SReelBox)
109 | MyNew(_startdigit, _digits, eControlType.ReelBox)
110 | ReelBox = _reelbox
111 | End Sub
112 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _reeldisplay As B2SReelDisplay)
113 | MyNew(_startdigit, _digits, eControlType.ReelDisplay)
114 | ReelDisplay = _reeldisplay
115 | End Sub
116 |
117 | Private Sub MyNew(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType)
118 | StartDigit = _startdigit
119 | Digits = _digits
120 | Type = _type
121 | End Sub
122 |
123 | End Class
124 |
125 | Public Shadows Sub Add(ByVal playerno As Integer)
126 |
127 | Dim controls As ControlCollection = New ControlCollection()
128 | MyBase.Add(playerno, controls)
129 |
130 | End Sub
131 |
132 | End Class
133 |
134 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Plugin/PluginHost.vb:
--------------------------------------------------------------------------------
1 | Imports System.IO
2 | Imports System.Reflection
3 | Imports System.ComponentModel.Composition
4 | Imports System.ComponentModel.Composition.Hosting
5 | Imports System.Windows.Forms
6 |
7 | '''
8 | ''' Hosts and handles plugins for the B2S Server.
9 | '''
10 | Public Class PluginHost
11 |
12 | Private _Plugins As PluginList
13 | '''
14 | ''' Gets the list of loaded plugins.
15 | '''
16 | '''
17 | ''' The loaded plugins.
18 | '''
19 | Public Property Plugins() As PluginList
20 | Get
21 | Return _Plugins
22 | End Get
23 | Private Set(ByVal value As PluginList)
24 | _Plugins = value
25 | End Set
26 | End Property
27 |
28 |
29 | '''
30 | ''' Initializes the plugin.
31 | ''' This is the first call to a plugin after the system start up.
32 | '''
33 | ''' The table filename.
34 | ''' Name of the rom.
35 | Public Sub PluginInit(TableFilename As String, RomName As String)
36 | Plugins.PluginInit(TableFilename, RomName)
37 | End Sub
38 | '''
39 | ''' Finishes the plugin.
40 | ''' This is the last call to a plugin before the system is shut down.
41 | '''
42 | Public Sub PluginFinish()
43 | Plugins.PluginFinish()
44 | End Sub
45 |
46 | '''
47 | ''' Gets called when the Run method of Pinmame is called.
48 | '''
49 | Public Sub PinMameRun()
50 | Plugins.PinMameRun()
51 | End Sub
52 | '''
53 | ''' Gets called when the property Pause of Pinmame is set to true.
54 | '''
55 | Public Sub PinMamePause()
56 | Plugins.PinMamePause()
57 | End Sub
58 | '''
59 | ''' Gets called when the property Pause of Pinmame is set to false.
60 | '''
61 | Public Sub PinMameContinue()
62 | Plugins.PinMameContinue()
63 | End Sub
64 | '''
65 | ''' Gets called when the Stop method of Pinmame is called.
66 | '''
67 | Public Sub PinMameStop()
68 | Plugins.PinMameStop()
69 | End Sub
70 |
71 | '''
72 | ''' Is called when new data on a table element (Lamp, Switch, Solenoid, Mech, GI) is available.
73 | '''
74 | ''' Type of the table element.
75 | ''' The number of the table element.
76 | ''' The value of the table element.
77 | Public Sub DataReceive(TableElementTypeChar As Char, Number As Integer, Value As Integer)
78 | Plugins.DataReceive(TableElementTypeChar, Number, Value)
79 | End Sub
80 |
81 | '''
82 | ''' Is called when new data on a table element (Lamp, Switch, Solenoid, Mech, GI) is available.
83 | '''
84 | ''' Type of the table element.
85 | ''' The data received from Pinmame.
86 | Public Sub DataReceive(TableElementTypeChar As Char, Data As Object)
87 | Plugins.DataReceive(TableElementTypeChar, Data)
88 | End Sub
89 |
90 |
91 | Private PluginWindow As PluginWindow = Nothing
92 |
93 | '''
94 | ''' Shows the plugin window.
95 | '''
96 | Sub ShowPluginWindow(Optional ParentForm As Form = Nothing, Optional ParentSettings As System.Drawing.Rectangle = Nothing)
97 |
98 | For Each F As Form In Application.OpenForms
99 | If TypeOf F Is PluginWindow Then
100 | F.BringToFront()
101 | F.Focus()
102 | Return
103 | End If
104 | Next
105 |
106 | Dim PW As PluginWindow = New PluginWindow(Plugins)
107 | If ParentSettings = Nothing Then
108 | PW.StartPosition = FormStartPosition.CenterParent
109 | End If
110 |
111 | If ParentForm IsNot Nothing Then
112 | PW.Show(ParentForm)
113 | ElseIf ParentSettings <> Nothing Then
114 | PW.Show()
115 | Dim x As Integer = CInt(ParentSettings.X + ParentSettings.Width / 2 - PW.Width / 2)
116 | Dim y As Integer = CInt(ParentSettings.Y + ParentSettings.Height / 2 - PW.Height / 2)
117 | PW.Location = New System.Drawing.Point(x, y)
118 | Else
119 | PW.Show()
120 | End If
121 | PW.BringToFront()
122 | PW.Focus()
123 | PW.PluginDataGrid.Focus()
124 | PW.TopMost = True
125 | PW.Select()
126 | PW.PluginDataGrid.Select()
127 | End Sub
128 |
129 | '''
130 | ''' Closes the plugin window.
131 | '''
132 | Sub ClosePluginWindow()
133 | For Each F As Form In Application.OpenForms
134 | If TypeOf F Is PluginWindow Then
135 | F.Close()
136 | Return
137 | End If
138 | Next
139 | End Sub
140 |
141 |
142 | '''
143 | ''' Initializes a new instance of the class.
144 | '''
145 | ''' if set to true the plugins are loaded after the class is instantiated.
146 | Public Sub New(Optional LoadPlugins As Boolean = False)
147 | Plugins = New PluginList(LoadPlugins)
148 | End Sub
149 |
150 |
151 | End Class
152 |
--------------------------------------------------------------------------------
/b2sbackglassserver/b2sbackglassserver/Logging/Statistics.vb:
--------------------------------------------------------------------------------
1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032
2 | Imports System
3 | Imports System.Text
4 |
5 | Public Class Statistics
6 |
7 | Private Const cMinTicks4CoolDown As Integer = 150
8 | Private Const cMinTicks4GoodCalculation As Integer = 500
9 | Private Const cMinTicks4Chillout As Integer = 18
10 | Private Const cMaxTicks4BadChillout1 As Integer = 12
11 | Private Const cMaxTicks4BadChillout2 As Integer = 8
12 | Private Const cMaxTicks4BadChillout3 As Integer = 4
13 | Private Const cMaxTicks4BadChillout4 As Integer = 2
14 |
15 | Private log As Log = Nothing
16 |
17 | Private lastTick As Date = Nothing
18 | Private counter As Integer = 0
19 | Private sum As Integer = 0
20 | Private average As Single = 0
21 | Private chiller As Integer = 0
22 | Private waitonechill As Integer = 0
23 |
24 | Private sb As StringBuilder = New StringBuilder()
25 |
26 | Public Sub New(ByRef _log As Log)
27 | log = _log
28 | End Sub
29 |
30 | Public Function AddTick(ByVal currentCoolDownCounter As Integer, ByVal info As String) As Integer
31 |
32 | Dim ret As Integer = 0
33 |
34 | Dim nowTick As Date = DateTime.Now
35 | Dim diff As Integer = (nowTick - lastTick).Milliseconds
36 | lastTick = nowTick
37 |
38 | ' calc average tick duration
39 | If counter < cMinTicks4GoodCalculation Then
40 | counter += 1
41 | sum += diff
42 | average = sum / counter
43 | End If
44 |
45 | ' calc cool down level
46 | Dim chiller4logfile As Integer = chiller
47 | If counter > cMinTicks4CoolDown Then
48 | If currentCoolDownCounter <= 0 Then chiller += 1
49 | Dim cooldownfactor As Single = diff / average
50 | If cooldownfactor > 3 Then
51 | ret = 8
52 | chiller = 0
53 | ElseIf cooldownfactor >= 2 Then
54 | ret = 6
55 | chiller = 0
56 | ElseIf cooldownfactor >= 1.5 Then
57 | ' mode 5
58 | If chiller <= 12 Then
59 | waitonechill += 1
60 | If waitonechill > 1 Then
61 | ret = Math.Round((12 - chiller) / 2) + 2
62 | If ret >= 5 Then ret += 1
63 | Else
64 | ret = 1
65 | End If
66 |
67 | ' mode 4
68 | 'If chiller <= 14 Then
69 | ' waitonechill += 1
70 | ' If waitonechill > 1 Then
71 | ' ret = Math.Round((14 - chiller) / 2) + 2
72 | ' If ret >= 6 Then ret += 1
73 | ' If ret >= 9 Then ret += 1
74 | ' Else
75 | ' ret = 1
76 | ' End If
77 |
78 | ' mode 3
79 | 'If chiller <= 16 Then
80 | 'If currentCoolDownCounter > 0 Then
81 | ' If currentCoolDownCounter < 3 Then
82 | ' ret = currentCoolDownCounter + 6
83 | ' Else
84 | ' ret = currentCoolDownCounter + 3
85 | ' End If
86 | 'Else
87 | ' ret = Math.Round((16 - chiller) / 2) + 2
88 | 'End If
89 |
90 | ' mode 2
91 | 'If chiller <= 16 Then
92 | 'ret = Math.Round((16 - chiller) / 2) + 1
93 |
94 | ' mode 1
95 | 'If chiller < cMaxTicks4BadChillout4 Then
96 | ' ret = 6
97 | 'ElseIf chiller < cMaxTicks4BadChillout3 Then
98 | ' ret = 5
99 | 'ElseIf chiller < cMaxTicks4BadChillout2 Then
100 | ' ret = 4
101 | 'ElseIf chiller < cMaxTicks4BadChillout1 Then
102 | ' ret = 3
103 | 'ElseIf chiller < cMinTicks4Chillout Then
104 | ' ret = 1
105 | Else
106 | waitonechill = 0
107 | ret = 0
108 | End If
109 | chiller = 0
110 | End If
111 | If currentCoolDownCounter > ret Then
112 | ret = currentCoolDownCounter
113 | End If
114 | End If
115 |
116 | ' maybe write log entry
117 | If log IsNot Nothing AndAlso log.IsLogOn Then
118 | sb.Length = 0
119 | sb.Append(nowTick)
120 | sb.Append(": ")
121 | sb.Append(diff)
122 | sb.Append(" , ")
123 | sb.Append(average)
124 | sb.Append(" , ")
125 | If Not String.IsNullOrEmpty(info) Then
126 | sb.Append(info)
127 | End If
128 | If counter > cMinTicks4CoolDown Then
129 | If ret > 0 Then
130 | sb.Append(" , ")
131 | sb.Append("CoolDown: " & ret)
132 | End If
133 | If chiller4logfile > 0 Then
134 | sb.Append(" , ")
135 | sb.Append("Chiller: " & chiller4logfile)
136 | End If
137 | End If
138 | log.WriteLogEntry(sb.ToString())
139 | End If
140 |
141 | Return ret
142 |
143 | End Function
144 |
145 | End Class
146 |
--------------------------------------------------------------------------------
/leds/dream7segments/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/leds/BetterLed/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/b2s_screenresidentifier/b2s_screenresidentifier/formDMD.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------