4 Commits

Author SHA1 Message Date
d5aa14ba8b Added fourth camera. 2024-05-04 22:19:33 +02:00
Martin Richter
31d356e7b4 Small fix for a 64bit build. Compile error due to wrong type usage.
Switch to VS-2022 platform v143.
2023-09-07 08:11:36 +02:00
Martin Richter
eb09cf2aa1 Merge pull request #15 from cuppajoeman/patch-1
Update README.md
@cuppajoeman  Thanks for the fixes
2023-05-25 09:18:51 +02:00
ccn
32bdee48a6 Update README.md
typos
2023-05-24 16:08:15 -04:00
61 changed files with 153 additions and 15 deletions

BIN
.vs/PTZControl/v17/.wsuo Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\mspel\\source\\repos\\PTZControl\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,7 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\PTZControl.sln",
"PreviewInSolutionExplorer": false
}

View File

@@ -635,7 +635,7 @@ void CWebcamController::ListDevices(CStringArray &aDevices)
//create a device class enumerator //create a device class enumerator
CComPtr<IEnumMoniker> pIEnumMoniker; CComPtr<IEnumMoniker> pIEnumMoniker;
HRESULT hResult = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pIEnumMoniker, 0); HRESULT hResult = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pIEnumMoniker, 0);
if (SUCCEEDED(hr)) if (SUCCEEDED(hr) && (hResult == S_OK))
{ {
ULONG pFetched = NULL; ULONG pFetched = NULL;
CComPtr<IMoniker> pImoniker; CComPtr<IMoniker> pImoniker;
@@ -661,5 +661,11 @@ void CWebcamController::ListDevices(CStringArray &aDevices)
pImoniker = nullptr; pImoniker = nullptr;
} }
} }
//else {
// aDevices.Add(CString("PTZ Pro 1\tPTZ Pro 1"));
// aDevices.Add(CString("PTZ Pro 2\tPTZ Pro 2"));
// aDevices.Add(CString("PTZ Pro 3\tPTZ Pro 3"));
// aDevices.Add(CString("PTZ Pro 4\tPTZ Pro 4"));
//}
} }
} }

Binary file not shown.

View File

@@ -29,14 +29,14 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>
@@ -44,14 +44,14 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>

View File

@@ -0,0 +1,23 @@
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.pch
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\vc143.pdb
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\vc143.idb
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\pch.obj
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\settingsdlg.obj
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontroldlg.obj
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.obj
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\extensionunit.obj
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.exe
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.pdb
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.res
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.ilk
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\cl.command.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\cl.items.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\cl.read.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\cl.write.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\link.command.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\link.read.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\link.secondary.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\link.write.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\rc.command.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\rc.read.1.tlog
c:\users\mspel\source\repos\ptzcontrol\ptzcontrol\ptzcontrol\x64\debug\ptzcontrol.tlog\rc.write.1.tlog

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\mspel\source\repos\PTZControl\PTZControl\x64\Debug\PTZControl.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

Binary file not shown.

View File

@@ -0,0 +1 @@
 PTZControl.vcxproj -> C:\Users\mspel\source\repos\PTZControl\PTZControl\x64\Debug\PTZControl.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
C:\Users\mspel\source\repos\PTZControl\PTZControl\ExtensionUnit.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\ExtensionUnit.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\pch.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\pch.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\PTZControl.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControlDlg.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\PTZControlDlg.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\SettingsDlg.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\SettingsDlg.obj

View File

@@ -0,0 +1,2 @@
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.39.33519:TargetPlatformVersion=10.0.22621.0:
Debug|x64|C:\Users\mspel\source\repos\PTZControl\PTZControl\|

View File

@@ -0,0 +1,2 @@
^C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\EXTENSIONUNIT.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\PCH.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\PTZCONTROL.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\PTZCONTROL.RES|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\PTZCONTROLDLG.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\DEBUG\SETTINGSDLG.OBJ
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Debug\PTZControl.ilk

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\mspel\source\repos\PTZControl\PTZControl\x64\Release\PTZControl.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,7 @@
 ExtensionUnit.cpp
Generating code
6 of 739 functions ( 0.8%) were compiled, the rest were copied from previous compilation.
0 functions were new in current compilation
8 functions had inline decision re-evaluated but remain unchanged
Finished generating code
PTZControl.vcxproj -> C:\Users\mspel\source\repos\PTZControl\PTZControl\x64\Release\PTZControl.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
C:\Users\mspel\source\repos\PTZControl\PTZControl\ExtensionUnit.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\ExtensionUnit.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\pch.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\pch.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\PTZControl.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControlDlg.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\PTZControlDlg.obj
C:\Users\mspel\source\repos\PTZControl\PTZControl\SettingsDlg.cpp;C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\SettingsDlg.obj

View File

@@ -0,0 +1,2 @@
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.39.33519:TargetPlatformVersion=10.0.22621.0:
Release|x64|C:\Users\mspel\source\repos\PTZControl\PTZControl\|

View File

@@ -0,0 +1,3 @@
^C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\EXTENSIONUNIT.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\PCH.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\PTZCONTROL.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\PTZCONTROL.RES|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\PTZCONTROLDLG.OBJ|C:\USERS\MSPEL\SOURCE\REPOS\PTZCONTROL\PTZCONTROL\PTZCONTROL\X64\RELEASE\SETTINGSDLG.OBJ
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\PTZControl.IPDB
C:\Users\mspel\source\repos\PTZControl\PTZControl\PTZControl\x64\Release\PTZControl.iobj

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -60,6 +60,7 @@ static const SPosition layoutBtns1[] // 0 or 1 camera (uses only 1 column)
IDC_BT_WEBCAM1, false, 0, 0, IDC_BT_WEBCAM1, false, 0, 0,
IDC_BT_WEBCAM2, false, 0, 0, IDC_BT_WEBCAM2, false, 0, 0,
IDC_BT_WEBCAM3, false, 0, 0, IDC_BT_WEBCAM3, false, 0, 0,
IDC_BT_WEBCAM4, false, 0, 0,
0 0
}; };
@@ -71,6 +72,7 @@ static const SPosition layoutBtns2[] // 2 cameras (uses 2 columns)
IDC_BT_WEBCAM2, true, 1, 2, IDC_BT_WEBCAM2, true, 1, 2,
// Invisible // Invisible
IDC_BT_WEBCAM3, false, 0, 0, IDC_BT_WEBCAM3, false, 0, 0,
IDC_BT_WEBCAM4, false, 0, 0,
0 0
}; };
@@ -81,6 +83,18 @@ static const SPosition layoutBtns3[] // 3 cameras
IDC_BT_WEBCAM1, true, 0, 0, // all in one column left (top down) IDC_BT_WEBCAM1, true, 0, 0, // all in one column left (top down)
IDC_BT_WEBCAM2, true, 0, 1, IDC_BT_WEBCAM2, true, 0, 1,
IDC_BT_WEBCAM3, true, 0, 2, IDC_BT_WEBCAM3, true, 0, 2,
IDC_BT_WEBCAM4, true, 0, 0,
0
};
static const SPosition layoutBtns4[] // 4 cameras
{
IDC_BT_EXIT, true, 1, 0, // Outer left column
IDC_BT_SETTINGS, true, 1, 1,
IDC_BT_WEBCAM1, true, 0, 0, // all in one column left (top down)
IDC_BT_WEBCAM2, true, 0, 1,
IDC_BT_WEBCAM3, true, 0, 2,
IDC_BT_WEBCAM4, true, 1, 2,
0 0
}; };
@@ -90,6 +104,7 @@ const SLayout g_layout[CPTZControlDlg::NUM_MAX_WEBCAMS+1] =
-1, layoutBtns1, // 0 or 1 camera (shrink dialog) -1, layoutBtns1, // 0 or 1 camera (shrink dialog)
0, layoutBtns2, // 2 cameras (keep size) 0, layoutBtns2, // 2 cameras (keep size)
0, layoutBtns3, // 3 cameras (keep size) 0, layoutBtns3, // 3 cameras (keep size)
0, layoutBtns4, // 4 cameras (keep size)
}; };
@@ -304,6 +319,7 @@ void CPTZControlDlg::DoDataExchange(CDataExchange* pDX)
DDX_Control(pDX, IDC_BT_WEBCAM1, m_btWebCam[0]); DDX_Control(pDX, IDC_BT_WEBCAM1, m_btWebCam[0]);
DDX_Control(pDX, IDC_BT_WEBCAM2, m_btWebCam[1]); DDX_Control(pDX, IDC_BT_WEBCAM2, m_btWebCam[1]);
DDX_Control(pDX, IDC_BT_WEBCAM3, m_btWebCam[2]); DDX_Control(pDX, IDC_BT_WEBCAM3, m_btWebCam[2]);
DDX_Control(pDX, IDC_BT_WEBCAM4, m_btWebCam[3]);
} }
BEGIN_MESSAGE_MAP(CPTZControlDlg, CDialogEx) BEGIN_MESSAGE_MAP(CPTZControlDlg, CDialogEx)
@@ -317,6 +333,7 @@ BEGIN_MESSAGE_MAP(CPTZControlDlg, CDialogEx)
ON_COMMAND_EX(IDC_BT_WEBCAM1, &CPTZControlDlg::OnBtWebCam) ON_COMMAND_EX(IDC_BT_WEBCAM1, &CPTZControlDlg::OnBtWebCam)
ON_COMMAND_EX(IDC_BT_WEBCAM2, &CPTZControlDlg::OnBtWebCam) ON_COMMAND_EX(IDC_BT_WEBCAM2, &CPTZControlDlg::OnBtWebCam)
ON_COMMAND_EX(IDC_BT_WEBCAM3, &CPTZControlDlg::OnBtWebCam) ON_COMMAND_EX(IDC_BT_WEBCAM3, &CPTZControlDlg::OnBtWebCam)
ON_COMMAND_EX(IDC_BT_WEBCAM4, &CPTZControlDlg::OnBtWebCam)
ON_COMMAND_EX(IDC_BT_PRESET1, &CPTZControlDlg::OnBtPreset) ON_COMMAND_EX(IDC_BT_PRESET1, &CPTZControlDlg::OnBtPreset)
ON_COMMAND_EX(IDC_BT_PRESET2, &CPTZControlDlg::OnBtPreset) ON_COMMAND_EX(IDC_BT_PRESET2, &CPTZControlDlg::OnBtPreset)
ON_COMMAND_EX(IDC_BT_PRESET3, &CPTZControlDlg::OnBtPreset) ON_COMMAND_EX(IDC_BT_PRESET3, &CPTZControlDlg::OnBtPreset)
@@ -433,7 +450,7 @@ UINT AFX_CDECL CPTZControlDlg::GuardThread(LPVOID p)
// Event is set. // Event is set.
return 0; return 0;
DWORD dwResult = 0; DWORD_PTR dwResult = 0;
// Check if the application is blocking // Check if the application is blocking
if (::SendMessageTimeout(pWnd->GetSafeHwnd(), WM_NULL, 0, 0, SMTO_ABORTIFHUNG | SMTO_NORMAL, 1000, &dwResult)==0) if (::SendMessageTimeout(pWnd->GetSafeHwnd(), WM_NULL, 0, 0, SMTO_ABORTIFHUNG | SMTO_NORMAL, 1000, &dwResult)==0)
{ {
@@ -485,6 +502,7 @@ BOOL CPTZControlDlg::OnInitDialog()
&m_btWebCam[0], &m_btWebCam[0],
&m_btWebCam[1], &m_btWebCam[1],
&m_btWebCam[2], &m_btWebCam[2],
&m_btWebCam[3],
}; };
for (auto* pBtn : apButtons) for (auto* pBtn : apButtons)
{ {
@@ -804,7 +822,8 @@ BOOL CPTZControlDlg::OnBtPreset(UINT nId)
BOOL CPTZControlDlg::OnBtWebCam(UINT nId) BOOL CPTZControlDlg::OnBtWebCam(UINT nId)
{ {
SetActiveCam(nId==IDC_BT_WEBCAM1 ? 0 : SetActiveCam(nId==IDC_BT_WEBCAM1 ? 0 :
nId==IDC_BT_WEBCAM2 ? 1 : 2); nId==IDC_BT_WEBCAM2 ? 1 :
nId==IDC_BT_WEBCAM3 ? 2 : 3);
return 1; return 1;
} }

View File

@@ -73,7 +73,7 @@ public:
~CPTZControlDlg(); ~CPTZControlDlg();
// Dialog Data // Dialog Data
enum { IDD = IDD_PTZCONTROL_DIALOG }; enum { IDD = IDD_PTZCONTROL_DIALOG };
static const int NUM_MAX_WEBCAMS = 3; static const int NUM_MAX_WEBCAMS = 4;
protected: protected:
CPTZButton m_btZoomIn; CPTZButton m_btZoomIn;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -62,6 +62,17 @@
#define IDC_ED_TOOLTIP_3_6 1025 #define IDC_ED_TOOLTIP_3_6 1025
#define IDC_ED_TOOLTIP_3_7 1026 #define IDC_ED_TOOLTIP_3_7 1026
#define IDC_ED_TOOLTIP_3_8 1027 #define IDC_ED_TOOLTIP_3_8 1027
#define IDC_BT_WEBCAM4 1028
#define IDC_ED_TOOLTIP_4_1 1028
#define IDC_ED_TOOLTIP_4_2 1029
#define IDC_ED_TOOLTIP__4_3 1030
#define IDC_ED_TOOLTIP_4_3 1031
#define IDC_ED_TOOLTIP_4_4 1032
#define IDC_ED_TOOLTIP_4_5 1033
#define IDC_ED_TOOLTIP_4_6 1034
#define IDC_ED_TOOLTIP_4_7 1035
#define IDC_ED_TOOLTIP_4_8 1036
#define DC_BT_SETTINGS 32791 #define DC_BT_SETTINGS 32791
// Next default values for new objects // Next default values for new objects

View File

@@ -11,7 +11,7 @@ And finnaly as last feature the PTZcontrol now supports three cameras.
### Where is the basic code from? ### Where is the basic code from?
It wasn't easy to get code that shows how to control a PTZ camera. It wasn't easy to get code that shows how to control a PTZ camera.
Finally I contacted Lgoitech and I received download link to the `Logitech Collaboration Software Reference Kit` (Logitech CSRK) Finally I contacted Logitech and I received download link to the `Logitech Collaboration Software Reference Kit` (Logitech CSRK)
I found some Lync remote control code in it, that gave me some hints and the guids and usage for the Logitect camera interface. I found some Lync remote control code in it, that gave me some hints and the guids and usage for the Logitect camera interface.
## Used interfaces ## Used interfaces
@@ -29,14 +29,14 @@ Standard controls from the Windows Driver API are used
The program supports tooltips that and you can define them yourself to give the camera presets useful names. (Separate for each camera) The program supports tooltips that and you can define them yourself to give the camera presets useful names. (Separate for each camera)
## Used environment and libraries ## Used environment and libraries
I used the Visual Studoi 2019 Community Edition to develop this program with C++. I used the Visual Studio 2019 Community Edition to develop this program with C++.
MFC and ATL as the library. No additional software is used. Using MFC and ATL as libraries. No additional software is used.
The EXE runs alone, without installing any other files or DLLs or any installation. The EXE runs alone, without installing any other files or DLLs or any installation.
## Behaviour ## Behaviour
The program is always in the foreground and has been designed relatively compact and small, so that you can hover somewhere over your OBS program and it is really easy to use. The program is always in the foreground and has been designed relatively compact and small, so that you can hover somewhere over your OBS program and it is really easy to use.
Current selected preset or home position are shown with a green background on the buttons. Currently selected preset or home position are shown with a green background on the buttons.
Recalling a presets are simply done by clicking on one of the number buttons. Recalling a preset is simply done by clicking on one of the number buttons.
Presets are changed by pressing the M button (Memory) followed by a number key. The M button turns red as long as it is active. Presets are changed by pressing the M button (Memory) followed by a number key. The M button turns red as long as it is active.
The program remembers its last position on the screen and is automatically repositioned to when it is started. The program remembers its last position on the screen and is automatically repositioned to when it is started.
@@ -58,7 +58,7 @@ Through an internal guard thread, the application can determine that it is no lo
Otherwise you would have to use the task manager and this can take a lot of time to terminate the application in the hustle and bustle of a livestream. Otherwise you would have to use the task manager and this can take a lot of time to terminate the application in the hustle and bustle of a livestream.
### Logitech Motion Control ### Logitech Motion Control
The Logitech cameras have their own interface for pan/tilt control. This moves the camera in X/Y Axe by a certain step value, This control is a special Logitech feature. The Logitech cameras have their own interface for pan/tilt control. This moves the camera in X/Y axes by a certain step value, This control is a special Logitech feature.
If you click on a direction button once, exactly one step pulse is output. If you click on a direction button once, exactly one step pulse is output.
If you hold down a direction button, a pulse is sent to the camera again and again at a certain interval to change the direction. If you hold down a direction button, a pulse is sent to the camera again and again at a certain interval to change the direction.