diff --git a/.gitignore b/.gitignore
index 9115a2b3..e67ed273 100644
--- a/.gitignore
+++ b/.gitignore
@@ -92,3 +92,4 @@ apps/**/*
apps/piface/libmcp23s17/
apps/piface/libpifacedigital/
+*.vcxproj.user
diff --git a/ports/win32/Microsoft Visual Studio/bacnet-stack.props b/ports/win32/Microsoft Visual Studio/bacnet-stack.props
new file mode 100644
index 00000000..8258ae95
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacnet-stack.props
@@ -0,0 +1,15 @@
+
+
+
+
+
+ ..\..\..\..\ports\win32;..\..\..\..\src;$(IncludePath)
+
+
+
+ CompileAsC
+ BACNET_STACK_STATIC_DEFINE;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+
+
+
+
\ No newline at end of file
diff --git a/ports/win32/Microsoft Visual Studio/bacnet-stack.sln b/ports/win32/Microsoft Visual Studio/bacnet-stack.sln
new file mode 100644
index 00000000..13458c96
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacnet-stack.sln
@@ -0,0 +1,47 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33829.357
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bacnet-stack", "bacnet-stack\bacnet-stack.vcxproj", "{2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "bacserv\bacserv.vcxproj", "{1EBCF151-1331-44FE-8515-B0B3981EF8BC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F59490C6-9F54-4F4A-BE02-6BF9C48E79C0}"
+ ProjectSection(SolutionItems) = preProject
+ readme.MD = readme.MD
+ ..\README.md = ..\README.md
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Debug|x64.ActiveCfg = Debug|x64
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Debug|x64.Build.0 = Debug|x64
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Debug|x86.ActiveCfg = Debug|Win32
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Debug|x86.Build.0 = Debug|Win32
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Release|x64.ActiveCfg = Release|x64
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Release|x64.Build.0 = Release|x64
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Release|x86.ActiveCfg = Release|Win32
+ {2B0DD90A-C096-401B-97D0-81D3BC4F7EB7}.Release|x86.Build.0 = Release|Win32
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Debug|x64.ActiveCfg = Debug|x64
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Debug|x64.Build.0 = Debug|x64
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Debug|x86.ActiveCfg = Debug|Win32
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Debug|x86.Build.0 = Debug|Win32
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Release|x64.ActiveCfg = Release|x64
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Release|x64.Build.0 = Release|x64
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Release|x86.ActiveCfg = Release|Win32
+ {1EBCF151-1331-44FE-8515-B0B3981EF8BC}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {22426249-AB05-42C3-97B0-A199DE3E0D6E}
+ EndGlobalSection
+EndGlobal
diff --git a/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj b/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj
new file mode 100644
index 00000000..a3d9c97d
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj
@@ -0,0 +1,524 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 16.0
+ Win32Proj
+ {2b0dd90a-c096-401b-97d0-81d3bc4f7eb7}
+ bacnetstack
+ 10.0
+
+
+
+ StaticLibrary
+ true
+ v143
+ Unicode
+
+
+ StaticLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+ StaticLibrary
+ true
+ v143
+ Unicode
+
+
+ StaticLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+ true
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj.filters b/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj.filters
new file mode 100644
index 00000000..bcefb120
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacnet-stack/bacnet-stack.vcxproj.filters
@@ -0,0 +1,1169 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {5e02ec26-93bb-4daf-af81-099098394a20}
+
+
+ {f7b691c6-2856-40d4-b9dd-4e4237fce077}
+
+
+ {c0e5986e-748b-4f4f-803c-4918952f73dd}
+
+
+ {7553fe57-8baf-426b-a686-23a7b68db91e}
+
+
+ {9bc6b530-8d61-4a21-9979-9b39a50e3cdc}
+
+
+ {1c0fbcda-2c87-4204-8259-e2607f9509d1}
+
+
+ {dafdfbc0-5a48-441c-8682-4d5423832141}
+
+
+ {d9370b4d-c98c-48f1-8eda-ae7777b9c061}
+
+
+ {7f13b82d-0c5b-41d1-aa78-7b3e65dd2b26}
+
+
+ {dea1fc49-c4c2-471e-a8c5-486aee9e62f5}
+
+
+ {9c27a602-4318-4e68-8851-ac40340f52bc}
+
+
+ {4221463c-bad1-4ec5-b4b3-4dfbea8345d3}
+
+
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\bbmd
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\tsm
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\binding
+
+
+ Source Files\ports\win
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\datalink
+
+
+ Source Files\src\bacnet\basic
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\src\bacnet\basic\sys
+
+
+ Source Files\ports\win
+
+
+ Source Files\ports\win
+
+
+ Source Files\src\bacnet\basic\bbmd
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\object
+
+
+ Source Files\src\bacnet\basic\tsm
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\service
+
+
+ Source Files\src\bacnet\basic\binding
+
+
+
+
+ Source Files\ports\win
+
+
+
\ No newline at end of file
diff --git a/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj b/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj
new file mode 100644
index 00000000..e8720ace
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj
@@ -0,0 +1,161 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+ {2b0dd90a-c096-401b-97d0-81d3bc4f7eb7}
+
+
+
+
+
+
+ 16.0
+ Win32Proj
+ {1ebcf151-1331-44fe-8515-b0b3981ef8bc}
+ bacserv
+ 10.0
+ server
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+ true
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj.filters b/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj.filters
new file mode 100644
index 00000000..6d3e8f10
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/bacserv/bacserv.vcxproj.filters
@@ -0,0 +1,48 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {90832ddc-f8fc-45e8-aa26-045670fba630}
+
+
+ {4a4bcb82-10e3-497f-9ec0-b7ea244db6d8}
+
+
+ {81485c5d-72ca-495c-99b4-a747e1b3fe04}
+
+
+ {8070a950-266e-4202-9094-8c528cd1b312}
+
+
+ {9f8c7149-3e7a-4583-9890-03c4b43a07cc}
+
+
+ {ac1fb1f1-4757-4d60-a208-6553d0ff76c6}
+
+
+
+
+ Source Files\src\bacnet\basic\npdu
+
+
+ Source Files\apps\server
+
+
+
+
+ Source Files\src\bacnet\basic\npdu
+
+
+
\ No newline at end of file
diff --git a/ports/win32/README.md b/ports/win32/README.md
index cf204b40..27123c6a 100644
--- a/ports/win32/README.md
+++ b/ports/win32/README.md
@@ -1,10 +1,20 @@
-# Makefile build under MinGW32
+# Win32 ports for BACnet
-* MSYS2 installation is:
+This directory contains a demo program that compiles with a Win32 compiler.
+It was tested with the free MinGW32 MSYS2 GCC compiler
+and the (free) Microsoft Visual Studio Community Edition
+
+## Building with Makefile under MinGW32
+
+Note: Building for 64-bit with MinGW64 requires extra runtimes,
+whereas building for 32-bit as Win32 doesn't require any other
+files for the EXE to work in any version of Windows.
+
+* MSYS2 installation is (from powershell):
c:\> winget install --id=MSYS2.MSYS2 -e
-* Start MSYS, and install MinGW32.
+* Start MSYS shell, and install MinGW32.
$ pacman -Syu mingw-w64-i686-toolchain
@@ -33,3 +43,13 @@
make --version
Built for Windows32
+
+## Building and running with Microsoft Visual Studio
+
+* Obtain the (free) Microsoft Visual Studio Community Edition, or use your professional version. Currently tested to MSVC 2022
+* Open solution file ports/win32/Microsoft Visual Studio/bacnet-stack.sln
+* Set startup project to be the desired application project, e.g. "server"
+* In the active project properties, debugging, set command line to desired DeviceID
+* In active project properties, debugging, set environment variables as appropriate, e.g. BACNET_IFACE=10.59.2.1 BACNET_IP_PORT=53004
+* Compile & run
+* Questions? edward@bac-test.com
diff --git a/ports/win32/readme.txt b/ports/win32/readme.txt
deleted file mode 100644
index a5bd7030..00000000
--- a/ports/win32/readme.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-BACnet Stack - Win32
-
-This directory contains a demo program that compiles with a Win32 compiler.
-It was tested with the freely downloadable Borland C++ 5.5, as well as
-Borland C++ 5 and Visual C++ 6.0.
-
-The makefile.mak file is used with the Borland command line tools.
-Run setvars.bat to configure the environment for the Borland tools.
-Edit it if necessary to set the correct location of your tools.
-
-The bacnet.ide file is used with the Borland IDE.
-
-The bacnet directory is used with Visual C++ 6 tools, and there is a
-workspace file bacnet.dsw that is used to compile the demo program.
-