From ef1b8d06a9f5e87d6abb217e9b056257ecdd508a Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周四, 06 8月 2015 01:18:00 +0800 Subject: [PATCH] Add LabWindows/CVI example by lhoerl --- examples/test-CVI_w_GUI/main.c | 353 +++++++++++++ examples/test-CVI_w_GUI/TestLibSCPI_GUI.prj | 686 +++++++++++++++++++++++++ examples/test-CVI_w_GUI/TestLibscpi.uir | 0 examples/test-CVI_w_GUI/TestLibscpi.h | 96 +++ examples/test-CVI_w_GUI/libscpi.cws | 380 ++++++++++++++ examples/test-CVI_w_GUI/.gitignore | 2 examples/test-CVI_w_GUI/scpi_user_config.h | 59 ++ 7 files changed, 1,576 insertions(+), 0 deletions(-) diff --git a/examples/test-CVI_w_GUI/.gitignore b/examples/test-CVI_w_GUI/.gitignore new file mode 100644 index 0000000..a63588d --- /dev/null +++ b/examples/test-CVI_w_GUI/.gitignore @@ -0,0 +1,2 @@ +cvibuild.TestLibSCPI_GUI +TestLibSCPI_GUI.cdb diff --git a/examples/test-CVI_w_GUI/TestLibSCPI_GUI.prj b/examples/test-CVI_w_GUI/TestLibSCPI_GUI.prj new file mode 100644 index 0000000..887b91b --- /dev/null +++ b/examples/test-CVI_w_GUI/TestLibSCPI_GUI.prj @@ -0,0 +1,686 @@ +[Project Header] +Version = 1201 +Pathname = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibSCPI_GUI.prj" +CVI Dir = "/c/program files (x86)/national instruments/cvi2012" +CVI Shared Dir = "/C/Program Files (x86)/National Instruments/Shared/CVI" +CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2012" +CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" +IVI Standard Root Dir = "/C/Program Files (x86)/IVI Foundation/IVI" +VXIplug&play Framework Dir = "/C/Program Files (x86)/IVI Foundation/VISA/winnt" +IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" +VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" +Number of Files = 29 +Target Type = "Executable" +Flags = 2064 +Copied From Locked InstrDrv Directory = False +Copied from VXIPNP Directory = False +Locked InstrDrv Name = "" +Don't Display Deploy InstrDrv Dialog = False + +[File 0001] +File Type = "Include" +Res Id = 1 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/config.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/config.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0002] +File Type = "Include" +Res Id = 2 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/constants.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/constants.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0003] +File Type = "CSource" +Res Id = 3 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "debug.c" +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/debug.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "Source Files" + +[File 0004] +File Type = "Include" +Res Id = 4 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "debug.h" +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/debug.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0005] +File Type = "CSource" +Res Id = 5 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/error.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/error.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0006] +File Type = "Include" +Res Id = 6 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/error.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/error.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0007] +File Type = "CSource" +Res Id = 7 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/fifo.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/fifo.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0008] +File Type = "Include" +Res Id = 8 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/fifo_private.h" +Path = "/c/git/Lutzscpi-parser/libscpi/src/fifo_private.h" +Exclude = False +Project Flags = 0 +Folder = "libscpi" + +[File 0009] +File Type = "CSource" +Res Id = 9 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/ieee488.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/ieee488.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0010] +File Type = "Include" +Res Id = 10 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/ieee488.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/ieee488.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0011] +File Type = "CSource" +Res Id = 11 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/lexer.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/lexer.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0012] +File Type = "Include" +Res Id = 12 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/lexer_private.h" +Path = "/c/git/Lutzscpi-parser/libscpi/src/lexer_private.h" +Exclude = False +Project Flags = 0 +Folder = "libscpi" + +[File 0013] +File Type = "CSource" +Res Id = 13 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "main.c" +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/main.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "Source Files" + +[File 0014] +File Type = "CSource" +Res Id = 14 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/minimal.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/minimal.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0015] +File Type = "Include" +Res Id = 15 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/minimal.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/minimal.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0016] +File Type = "CSource" +Res Id = 16 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/parser.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/parser.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0017] +File Type = "Include" +Res Id = 17 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/parser.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/parser.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0018] +File Type = "Include" +Res Id = 18 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/parser_private.h" +Path = "/c/git/Lutzscpi-parser/libscpi/src/parser_private.h" +Exclude = False +Project Flags = 0 +Folder = "libscpi" + +[File 0019] +File Type = "CSource" +Res Id = 19 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../common/scpi-def.c" +Path = "/c/git/Lutzscpi-parser/examples/common/scpi-def.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "Source Files" + +[File 0020] +File Type = "Include" +Res Id = 20 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/scpi.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/scpi.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0021] +File Type = "CSource" +Res Id = 21 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/scpi_debug.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/scpi_debug.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0022] +File Type = "Include" +Res Id = 22 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/scpi_user_config.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/scpi_user_config.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0023] +File Type = "Include" +Res Id = 23 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "TestLibscpi.h" +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibscpi.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0024] +File Type = "User Interface Resource" +Res Id = 24 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "TestLibscpi.uir" +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibscpi.uir" +Exclude = False +Project Flags = 0 +Folder = "User Interface Files" + +[File 0025] +File Type = "CSource" +Res Id = 25 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/units.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/units.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0026] +File Type = "Include" +Res Id = 26 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/units.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/units.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0027] +File Type = "CSource" +Res Id = 27 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/utils.c" +Path = "/c/git/Lutzscpi-parser/libscpi/src/utils.c" +Exclude = False +Compile Into Object File = False +Project Flags = 0 +Folder = "libscpi" + +[File 0028] +File Type = "Include" +Res Id = 28 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/inc/scpi/utils.h" +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/utils.h" +Exclude = False +Project Flags = 0 +Folder = "Include Files" + +[File 0029] +File Type = "Include" +Res Id = 29 +Path Is Rel = True +Path Rel To = "Project" +Path Rel Path = "../../libscpi/src/utils_private.h" +Path = "/c/git/Lutzscpi-parser/libscpi/src/utils_private.h" +Exclude = False +Project Flags = 0 +Folder = "libscpi" + +[Folders] +Instrument Files Folder Not Added Yet = True +Library Files Folder Not Added Yet = True +Folder 0 = "Source Files" +Folder 1 = "Include Files" +Folder 2 = "User Interface Files" +Folder 3 = "libscpi" + +[Custom Build Configs] +Num Custom Build Configs = 0 + +[Default Build Config Debug] +Config Name = "Debug" +Is 64-Bit = False +Is Release = False +Default Calling Convention = "cdecl" +Uninitialized Locals Compile Warning = "Conservative" +Require Prototypes = True +Require Return Values = True +Enable Pointer Mismatch Warning = False +Enable Unreachable Code Warning = False +Enable Unreferenced Identifiers Warning = False +Enable Assignment In Conditional Warning = False +Enable C99 Extensions = True +Stack Size = 250000 +Image Base Address = 4194304 +Image Base Address x64 = 4194304 +Compiler Defines = "/DWIN32_LEAN_AND_MEAN" +Sign = False +Sign Store = "" +Sign Certificate = "" +Sign Timestamp URL = "" +Sign URL = "" +Manifest Embed = False +Icon File Is Rel = False +Icon File = "" +Application Title = "" +DLL Import Library Choice = "Gen Lib For Current Mode" +Use IVI Subdirectories for Import Libraries = False +Use VXIPNP Subdirectories for Import Libraries = False +Use Dflt Import Lib Base Name = True +Where to Copy DLL = "Do not copy" +Custom Directory to Copy DLL Is Rel = False +Custom Directory to Copy DLL = "" +Generate Source Documentation = "None" +Runtime Support = "Full Runtime Support" +Runtime Binding = "Shared" +Embed Project .UIRs = False +Generate Map File = False +Create Console Application = False +Using LoadExternalModule = False +DLL Exports = "Include File Symbols" +Register ActiveX Server = False +Numeric File Version = "1,0,0,0" +Numeric Prod Version = "1,0,0,0" +Comments = "" +Comments Ex = "" +Company Name = "Microsoft" +Company Name Ex = "%company" +File Description = "TestLibSCPI_GUI (Debug x86)" +File Description Ex = "%application (%rel_dbg %arch)" +File Version = "1.0" +File Version Ex = "%f1.%f2" +Internal Name = "TestLibSCPI_GUI" +Internal Name Ex = "%basename" +Legal Copyright = "Copyright � Microsoft 2015" +Legal Copyright Ex = "Copyright � %company %Y" +Legal Trademarks = "" +Legal Trademarks Ex = "" +Original Filename = "TestLibSCPI_GUI.exe" +Original Filename Ex = "%filename" +Private Build = "" +Private Build Ex = "" +Product Name = "Microsoft TestLibSCPI_GUI" +Product Name Ex = "%company %application" +Product Version = "1.0" +Product Version Ex = "%p1.%p2" +Special Build = "" +Special Build Ex = "" +Add Type Lib To DLL = False +Include Type Lib Help Links = False +TLB Help Style = "HLP" +Type Lib FP File Is Rel = False +Type Lib FP File = "" + +[Default Build Config Release] +Config Name = "Release" +Is 64-Bit = False +Is Release = True +Default Calling Convention = "cdecl" +Uninitialized Locals Compile Warning = "Conservative" +Require Prototypes = True +Require Return Values = True +Enable Pointer Mismatch Warning = False +Enable Unreachable Code Warning = False +Enable Unreferenced Identifiers Warning = False +Enable Assignment In Conditional Warning = False +Enable C99 Extensions = True +Stack Size = 250000 +Image Base Address = 4194304 +Image Base Address x64 = 4194304 +Compiler Defines = "/DWIN32_LEAN_AND_MEAN" +Sign = False +Sign Store = "" +Sign Certificate = "" +Sign Timestamp URL = "" +Sign URL = "" +Manifest Embed = False +Icon File Is Rel = False +Icon File = "" +Application Title = "" +DLL Import Library Choice = "Gen Lib For Current Mode" +Use IVI Subdirectories for Import Libraries = False +Use VXIPNP Subdirectories for Import Libraries = False +Use Dflt Import Lib Base Name = True +Where to Copy DLL = "Do not copy" +Custom Directory to Copy DLL Is Rel = False +Custom Directory to Copy DLL = "" +Generate Source Documentation = "None" +Runtime Support = "Full Runtime Support" +Runtime Binding = "Shared" +Embed Project .UIRs = False +Generate Map File = False +Create Console Application = False +Using LoadExternalModule = False +DLL Exports = "Include File Symbols" +Register ActiveX Server = False +Add Type Lib To DLL = False +Include Type Lib Help Links = False +TLB Help Style = "HLP" +Type Lib FP File Is Rel = False +Type Lib FP File = "" + +[Default Build Config Debug64] +Config Name = "Debug64" +Is 64-Bit = True +Is Release = False +Default Calling Convention = "cdecl" +Uninitialized Locals Compile Warning = "Conservative" +Require Prototypes = True +Require Return Values = True +Enable Pointer Mismatch Warning = False +Enable Unreachable Code Warning = False +Enable Unreferenced Identifiers Warning = False +Enable Assignment In Conditional Warning = False +Enable C99 Extensions = True +Stack Size = 250000 +Image Base Address = 4194304 +Image Base Address x64 = 4194304 +Compiler Defines = "/DWIN32_LEAN_AND_MEAN" +Sign = False +Sign Store = "" +Sign Certificate = "" +Sign Timestamp URL = "" +Sign URL = "" +Manifest Embed = False +Icon File Is Rel = False +Icon File = "" +Application Title = "" +DLL Import Library Choice = "Gen Lib For Current Mode" +Use IVI Subdirectories for Import Libraries = False +Use VXIPNP Subdirectories for Import Libraries = False +Use Dflt Import Lib Base Name = True +Where to Copy DLL = "Do not copy" +Custom Directory to Copy DLL Is Rel = False +Custom Directory to Copy DLL = "" +Generate Source Documentation = "None" +Runtime Support = "Full Runtime Support" +Runtime Binding = "Shared" +Embed Project .UIRs = False +Generate Map File = False +Create Console Application = False +Using LoadExternalModule = False +DLL Exports = "Include File Symbols" +Register ActiveX Server = False +Add Type Lib To DLL = False +Include Type Lib Help Links = False +TLB Help Style = "HLP" +Type Lib FP File Is Rel = False +Type Lib FP File = "" + +[Default Build Config Release64] +Config Name = "Release64" +Is 64-Bit = True +Is Release = True +Default Calling Convention = "cdecl" +Uninitialized Locals Compile Warning = "Conservative" +Require Prototypes = True +Require Return Values = True +Enable Pointer Mismatch Warning = False +Enable Unreachable Code Warning = False +Enable Unreferenced Identifiers Warning = False +Enable Assignment In Conditional Warning = False +Enable C99 Extensions = True +Stack Size = 250000 +Image Base Address = 4194304 +Image Base Address x64 = 4194304 +Compiler Defines = "/DWIN32_LEAN_AND_MEAN" +Sign = False +Sign Store = "" +Sign Certificate = "" +Sign Timestamp URL = "" +Sign URL = "" +Manifest Embed = False +Icon File Is Rel = False +Icon File = "" +Application Title = "" +DLL Import Library Choice = "Gen Lib For Current Mode" +Use IVI Subdirectories for Import Libraries = False +Use VXIPNP Subdirectories for Import Libraries = False +Use Dflt Import Lib Base Name = True +Where to Copy DLL = "Do not copy" +Custom Directory to Copy DLL Is Rel = False +Custom Directory to Copy DLL = "" +Generate Source Documentation = "None" +Runtime Support = "Full Runtime Support" +Runtime Binding = "Shared" +Embed Project .UIRs = False +Generate Map File = False +Create Console Application = False +Using LoadExternalModule = False +DLL Exports = "Include File Symbols" +Register ActiveX Server = False +Add Type Lib To DLL = False +Include Type Lib Help Links = False +TLB Help Style = "HLP" +Type Lib FP File Is Rel = False +Type Lib FP File = "" + +[Compiler Options] +Default Calling Convention = "cdecl" +Require Prototypes = True +Require Return Values = True +Enable Pointer Mismatch Warning = False +Enable Unreachable Code Warning = False +Enable Unreferenced Identifiers Warning = False +Enable Assignment In Conditional Warning = False +O Option Compatible With 5.0 = False +Enable C99 Extensions = True +Uninitialized Locals Compile Warning = "Conservative" +Precompile Prefix Header = False +Prefix Header File = "" + +[Run Options] +Stack Size = 250000 +Image Base Address = 4194304 +Image Base Address x64 = 4194304 + +[Compiler Defines] +Compiler Defines = "/DWIN32_LEAN_AND_MEAN" + +[Include Paths] +Include Path 1 Is Rel = True +Include Path 1 Rel To = "Project" +Include Path 1 Rel Path = "../../libscpi/inc" +Include Path 1 = "/c/git/Lutzscpi-parser/libscpi/inc" + +[Create Executable] +Executable File_Debug Is Rel = True +Executable File_Debug Rel To = "Project" +Executable File_Debug Rel Path = "TestLibSCPI_GUI.exe" +Executable File_Debug = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibSCPI_GUI.exe" +Executable File_Release Is Rel = True +Executable File_Release Rel To = "Project" +Executable File_Release Rel Path = "TestLibSCPI_GUI.exe" +Executable File_Release = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibSCPI_GUI.exe" +Executable File_Debug64 Is Rel = True +Executable File_Debug64 Rel To = "Project" +Executable File_Debug64 Rel Path = "TestLibSCPI_GUI.exe" +Executable File_Debug64 = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibSCPI_GUI.exe" +Executable File_Release64 Is Rel = True +Executable File_Release64 Rel To = "Project" +Executable File_Release64 Rel Path = "TestLibSCPI_GUI.exe" +Executable File_Release64 = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibSCPI_GUI.exe" +Icon File Is Rel = False +Icon File = "" +Application Title = "" +DLL Exports = "Include File Symbols" +DLL Import Library Choice = "Gen Lib For Current Mode" +Use IVI Subdirectories for Import Libraries = False +Use VXIPNP Subdirectories for Import Libraries = False +Use Dflt Import Lib Base Name = True +Where to Copy DLL = "Do not copy" +Custom Directory to Copy DLL Is Rel = False +Custom Directory to Copy DLL = "" +Generate Source Documentation = "None" +Add Type Lib To DLL = False +Include Type Lib Help Links = False +TLB Help Style = "HLP" +Type Lib FP File Is Rel = False +Type Lib FP File = "" +Type Lib Guid = "" +Runtime Support = "Full Runtime Support" +Instrument Driver Support Only = False +Embed Project .UIRs = False +Generate Map File = False + +[External Compiler Support] +UIR Callbacks File Option = 0 +Using LoadExternalModule = False +Create Project Symbols File = True +UIR Callbacks Obj File Is Rel = False +UIR Callbacks Obj File = "" +Project Symbols H File Is Rel = False +Project Symbols H File = "" +Project Symbols Obj File Is Rel = False +Project Symbols Obj File = "" + +[ActiveX Server Options] +Specification File Is Rel = False +Specification File = "" +Source File Is Rel = False +Source File = "" +Include File Is Rel = False +Include File = "" +IDL File Is Rel = False +IDL File = "" +Register ActiveX Server = False + +[Signing Info] +Sign = False +Sign Debug Build = False +Store = "" +Certificate = "" +Timestamp URL = "" +URL = "" + +[Manifest Info] +Embed = False + +[tpcSection] +tpcEnabled = 0 +tpcOverrideEnvironment = 0 +tpcEnabled x64 = 0 +tpcOverrideEnvironment x64 = 0 + diff --git a/examples/test-CVI_w_GUI/TestLibscpi.h b/examples/test-CVI_w_GUI/TestLibscpi.h new file mode 100644 index 0000000..0e72c01 --- /dev/null +++ b/examples/test-CVI_w_GUI/TestLibscpi.h @@ -0,0 +1,96 @@ +/**************************************************************************/ +/* LabWindows/CVI User Interface Resource (UIR) Include File */ +/* Copyright (c) National Instruments 2015. All Rights Reserved. */ +/* */ +/* WARNING: Do not add to, delete from, or otherwise modify the contents */ +/* of this include file. */ +/**************************************************************************/ + +#include <userint.h> + +#ifdef __cplusplus + extern "C" { +#endif + + /* Panels and Controls: */ + +#define PANEL 1 +#define PANEL_OUTPUTDEBUG 2 /* control type: textBox, callback function: (none) */ +#define PANEL_OUTPUTERR 3 /* control type: textBox, callback function: (none) */ +#define PANEL_OUTPUT 4 /* control type: textBox, callback function: (none) */ +#define PANEL_INPUT 5 /* control type: string, callback function: cb_scpi_input */ +#define PANEL_SREHEX 6 /* control type: string, callback function: (none) */ +#define PANEL_SRE0 7 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBHEX 8 /* control type: string, callback function: (none) */ +#define PANEL_SRE1 9 /* control type: radioButton, callback function: (none) */ +#define PANEL_STB0 10 /* control type: radioButton, callback function: (none) */ +#define PANEL_SRE2 11 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT0 12 /* control type: textMsg, callback function: (none) */ +#define PANEL_SRE3 13 /* control type: radioButton, callback function: (none) */ +#define PANEL_STB1 14 /* control type: radioButton, callback function: (none) */ +#define PANEL_SRE4 15 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT1 16 /* control type: textMsg, callback function: (none) */ +#define PANEL_SRE5 17 /* control type: radioButton, callback function: (none) */ +#define PANEL_STB2 18 /* control type: radioButton, callback function: (none) */ +#define PANEL_SRE6 19 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT2 20 /* control type: textMsg, callback function: (none) */ +#define PANEL_SRE7 21 /* control type: radioButton, callback function: (none) */ +#define PANEL_STB3 22 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT3 23 /* control type: textMsg, callback function: (none) */ +#define PANEL_STB4 24 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT4 25 /* control type: textMsg, callback function: (none) */ +#define PANEL_STB5 26 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT5 27 /* control type: textMsg, callback function: (none) */ +#define PANEL_STB6 28 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT6 29 /* control type: textMsg, callback function: (none) */ +#define PANEL_STB7 30 /* control type: radioButton, callback function: (none) */ +#define PANEL_STBTEXT7 31 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESEHEX 32 /* control type: string, callback function: (none) */ +#define PANEL_ESRHEX 33 /* control type: string, callback function: (none) */ +#define PANEL_ESE0 34 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESR0 35 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESE1 36 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT0 37 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESE2 38 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESR1 39 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESE3 40 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT1 41 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESE4 42 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESR2 43 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESE5 44 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT2 45 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESE6 46 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESR3 47 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESE7 48 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT3 49 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESR4 50 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT4 51 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESR5 52 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT5 53 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESR6 54 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT6 55 /* control type: textMsg, callback function: (none) */ +#define PANEL_ESR7 56 /* control type: radioButton, callback function: (none) */ +#define PANEL_ESRTEXT7 57 /* control type: textMsg, callback function: (none) */ +#define PANEL_QUIT 58 /* control type: command, callback function: cb_quit */ +#define PANEL_LEDSRQ 59 /* control type: LED, callback function: (none) */ + + + /* Control Arrays: */ + + /* (no control arrays in the resource file) */ + + + /* Menu Bars, Menus, and Menu Items: */ + + /* (no menu bars in the resource file) */ + + + /* Callback Prototypes: */ + +int CVICALLBACK cb_quit(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); +int CVICALLBACK cb_scpi_input(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); + + +#ifdef __cplusplus + } +#endif diff --git a/examples/test-CVI_w_GUI/TestLibscpi.uir b/examples/test-CVI_w_GUI/TestLibscpi.uir new file mode 100644 index 0000000..c2bb105 --- /dev/null +++ b/examples/test-CVI_w_GUI/TestLibscpi.uir Binary files differ diff --git a/examples/test-CVI_w_GUI/libscpi.cws b/examples/test-CVI_w_GUI/libscpi.cws new file mode 100644 index 0000000..bd8caa7 --- /dev/null +++ b/examples/test-CVI_w_GUI/libscpi.cws @@ -0,0 +1,380 @@ +[Workspace Header] +Version = 1201 +Pathname = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/libscpi.cws" +CVI Dir = "/c/program files (x86)/national instruments/cvi2012" +CVI Shared Dir = "/C/Program Files (x86)/National Instruments/Shared/CVI" +CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2012" +CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" +IVI Standard Root Dir = "/C/Program Files (x86)/IVI Foundation/IVI" +IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" +VXIplug&play Framework Dir = "/C/Program Files (x86)/IVI Foundation/VISA/winnt" +VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" +Number of Projects = 1 +Active Project = 1 +Project 0001 = "TestLibSCPI_GUI.prj" +Drag Bar Left = 274 +Window Top = 30 +Window Left = 2184 +Window Bottom = 701 +Window Right = 3709 +Maximized = True +Maximized Children = True +Max32 Number Of Errors = 20 +Track Include File Dependencies = True +Prompt For Missing Includes = True +Stop On First Error File = False +Bring Up Err Win For Warnings = True +Show Build Dialog = False +Save Changes Before Running = "Always" +Save Changes Before Compiling = "Always" +Hide Windows = False +Break At First Statement = False +Sort Type = "File Name" +Number of Opened Files = 6 +Window Confinement Region Enabled = True +MainColumnWidth = 257 +FileDateColumnWidth = 70 +FileSizeColumnWidth = 70 +StatusColumnWidth = 70 + +[Project Header 0001] +Version = 1201 +Don't Update DistKit = False +Platform Code = 4 +Build Configuration = "Debug" +Warn User If Debugging Release = 1 +Batch Build Release = False +Batch Build Debug = True +Force Rebuild = False + +[File 0001] +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/debug.c" +File Type = "CSource" +Disk Date = 3521543789 +In Projects = "1," +Window Top = 92 +Window Left = 42 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,73,0,100,0,453,769,1,0," + +[File 0002] +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/debug.h" +File Type = "Include" +Disk Date = 3521535203 +In Projects = "1," +Window Top = 212 +Window Left = 106 +Source Window State = "1,60,60,60,11,21,21,0,3,80,0,0,0,0,0,25,33,0,60,11,453,769,1,0," + +[File 0003] +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/main.c" +File Type = "CSource" +Disk Date = 3521635866 +In Projects = "1," +Window Top = 122 +Window Left = 58 +Window Z-Order = 1 +Source Window State = "1,299,299,299,33,44,33,0,0,178,0,0,0,0,0,44,271,0,299,72,453,769,1,0," + +[File 0004] +Path = "/c/git/Lutzscpi-parser/libscpi/src/parser.c" +File Type = "CSource" +Disk Date = 3521605088 +In Projects = "1," +Window Top = 272 +Window Left = 138 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,269,0,302,0,453,769,1,0," + +[File 0005] +Path = "/c/git/Lutzscpi-parser/libscpi/src/scpi_debug.c" +File Type = "CSource" +Disk Date = 3521635053 +In Projects = "1," +Window Top = 242 +Window Left = 122 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,29,0,58,24,453,769,1,0," + +[File 0006] +Path = "/c/git/Lutzscpi-parser/libscpi/src/error.c" +File Type = "CSource" +Disk Date = 3521605290 +In Projects = "1," +Window Top = 272 +Window Left = 138 +Source Window State = "1,117,117,117,12,33,33,0,0,0,0,0,0,0,0,0,144,0,156,4,453,769,1,0," + +[File 0007] +Path = "/c/git/Lutzscpi-parser/libscpi/src/fifo.c" +File Type = "CSource" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0008] +Path = "/c/git/Lutzscpi-parser/libscpi/src/fifo_private.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0009] +Path = "/c/git/Lutzscpi-parser/libscpi/src/ieee488.c" +File Type = "CSource" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 62 +Window Left = 26 +Source Window State = "1,116,116,116,13,25,25,0,0,80,0,0,0,0,0,25,140,0,158,35,453,769,1,0," + +[File 0010] +Path = "/c/git/Lutzscpi-parser/libscpi/src/lexer.c" +File Type = "CSource" +Disk Date = 3521447009 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0011] +Path = "/c/git/Lutzscpi-parser/libscpi/src/lexer_private.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0012] +Path = "/c/git/Lutzscpi-parser/libscpi/src/minimal.c" +File Type = "CSource" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0013] +Path = "/c/git/Lutzscpi-parser/libscpi/src/parser_private.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0014] +Path = "/c/git/Lutzscpi-parser/examples/common/scpi-def.c" +File Type = "CSource" +Disk Date = 3521608303 +In Projects = "1," +Window Top = 272 +Window Left = 138 +Window Z-Order = 5 +Source Window State = "1,274,274,274,32,46,46,0,3,80,0,0,0,0,0,25,183,0,274,32,453,769,1,0," + +[File 0015] +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibscpi.h" +File Type = "Include" +Disk Date = 3521635769 +In Projects = "1," +Window Top = 242 +Window Left = 122 +Window Z-Order = 3 +Source Window State = "1,74,74,74,9,21,21,0,3,80,0,0,0,0,0,25,48,0,74,9,453,769,1,0," + +[File 0016] +Path = "/c/git/Lutzscpi-parser/examples/test-CVI_w_GUI/TestLibscpi.uir" +File Type = "User Interface Resource" +Disk Date = 3521635769 +In Projects = "1," +Window Top = 32 +Window Left = 10 +Window Height = 453 +Window Width = 769 +Window Z-Order = 2 + +[File 0017] +Path = "/c/git/Lutzscpi-parser/libscpi/src/units.c" +File Type = "CSource" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0018] +Path = "/c/git/Lutzscpi-parser/libscpi/src/utils.c" +File Type = "CSource" +Disk Date = 3521605401 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0019] +Path = "/c/git/Lutzscpi-parser/libscpi/src/utils_private.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0020] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/parser.h" +File Type = "Include" +Disk Date = 3521603631 +In Projects = "1," +Window Top = 62 +Window Left = 26 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,42,0,0,0,453,769,1,0," + +[File 0021] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/types.h" +File Type = "Include" +Disk Date = 3521605117 +In Projects = "" +Window Top = 122 +Window Left = 58 +Window Z-Order = 4 +Source Window State = "1,71,71,71,8,20,20,0,3,80,0,0,0,0,0,25,68,0,71,8,453,769,1,0," + +[File 0022] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/ieee488.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 92 +Window Left = 42 +Window Z-Order = 6 +Source Window State = "1,80,81,80,0,0,0,0,0,80,0,0,0,0,0,25,32,0,39,17,453,769,1,0," + +[File 0023] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/constants.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0024] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/scpi.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 302 +Window Left = 154 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,8,0,0,0,453,769,1,0," + +[File 0025] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/minimal.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 92 +Window Left = 42 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,0,0,0,0,453,769,1,0," + +[File 0026] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/units.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 32 +Window Left = 10 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,16,0,0,0,453,769,1,0," + +[File 0027] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/utils.h" +File Type = "Include" +Disk Date = 3521192343 +In Projects = "1," +Window Top = 332 +Window Left = 170 +Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,11,0,0,0,453,769,1,0," + +[File 0028] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/error.h" +File Type = "Include" +Disk Date = 3521605201 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0029] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/config.h" +File Type = "Include" +Disk Date = 3521605154 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[File 0030] +Path = "/c/git/Lutzscpi-parser/libscpi/inc/scpi/scpi_user_config.h" +File Type = "Include" +Disk Date = 3521606339 +In Projects = "1," +Source Window State = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0," + +[Default Build Config 0001 Debug] +Generate Browse Info = True +Enable Uninitialized Locals Runtime Warning = True +Batch Build = True +Profile = "Disabled" +Debugging Level = "Standard" +Execution Trace = "Disabled" +Command Line Args = "" +Working Directory = "" +External Process Path = "" + +[Default Build Config 0001 Release] +Generate Browse Info = True +Enable Uninitialized Locals Runtime Warning = True +Batch Build = False +Profile = "Disabled" +Debugging Level = "Standard" +Execution Trace = "Disabled" +Command Line Args = "" +Working Directory = "" +External Process Path = "" + +[Default Build Config 0001 Debug64] +Generate Browse Info = True +Enable Uninitialized Locals Runtime Warning = True +Batch Build = False +Profile = "Disabled" +Debugging Level = "Standard" +Execution Trace = "Disabled" +Command Line Args = "" +Working Directory = "" +External Process Path = "" + +[Default Build Config 0001 Release64] +Generate Browse Info = True +Enable Uninitialized Locals Runtime Warning = True +Batch Build = False +Profile = "Disabled" +Debugging Level = "Standard" +Execution Trace = "Disabled" +Command Line Args = "" +Working Directory = "" +External Process Path = "" + +[Build Options 0001] +Generate Browse Info = True +Enable Uninitialized Locals Runtime Warning = True +Execution Trace = "Disabled" +Profile = "Disabled" +Debugging Level = "Standard" +Break On Library Errors = True +Break On First Chance Exceptions = False + +[Execution Target 0001] +Execution Target Address = "Local desktop computer" +Execution Target Port = 0 +Execution Target Type = 0 + +[SCC Options 0001] +Use global settings = True +SCC Provider = "" +SCC Project = "" +Local Path = "" +Auxiliary Path = "" +Perform Same Action For .h File As For .uir File = "Ask" +Perform Same Action For .cds File As For .prj File = "Ask" +Username = "" +Comment = "" +Use Default Username = False +Use Default Comment = False +Suppress CVI Error Messages = False +Always show confirmation dialog = True + +[DLL Debugging Support 0001] +External Process Path = "" + +[Command Line Args 0001] +Command Line Args = "" +Working Directory = "" + diff --git a/examples/test-CVI_w_GUI/main.c b/examples/test-CVI_w_GUI/main.c new file mode 100644 index 0000000..9982d06 --- /dev/null +++ b/examples/test-CVI_w_GUI/main.c @@ -0,0 +1,353 @@ +/*- + * Copyright (c) 2015 Lutz Hoerl, Thorlabs GmbH + * + * All Rights Reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file main.c + * @date Thu Nov 15 10:58:45 UTC 2012 + * + * @brief SCPI parser test with a little GUI built with NI-CVI (Lutz Hoerl, Thorlabs) + * + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> +#include "scpi/scpi.h" +#include "../common/scpi-def.h" + +/* NI-CVI specific stuff */ +#include <cvirte.h> +#include <userint.h> +#include "TestLibscpi.h" /* this is the include for the GUI constants */ + +/* GLOBAL VARIABLES */ +static int panelHandle; + +/* PROTOTYPES */ +void gui_updateSTB(uint8_t newSTB); +void gui_updateSRE(uint8_t newSTB); +void gui_updateESR(uint8_t newSTB); +void gui_updateESE(uint8_t newSTB); +void updateSSCPIRegister(void); +void updateSTB(void); +void updateSRE(void); +void updateESR(void); +void updateESE(void); + +/* a global output buffer to collect output data until it will be 'flushed' */ +#define SCPI_OUPUT_BUFFER_SIZE (256) +char SCPI_outputBuffer[SCPI_OUPUT_BUFFER_SIZE]; +unsigned int SCPI_outputBuffer_idx = 0; + +/* helper function to remove <LF> and <CR> from the end of a string */ +/* this is needed only here for the GUI, there is a 'insert line to a text box' function */ +/* that automatically adds a new line, so this prohibits double line feeds for the GUI */ +void removeTrailingEndcodes(char *buf) +{ + int len; + len = strlen(buf); + + while(len > 0) + { + len--; + switch(buf[len]) + { + case '\n' : + case '\r' : + buf[len] = '\0'; + break; + default : + len = 0; // stop loop + break; + } + } +} + +/* wrapper for debugging output, collects debug output until a <LF> */ +/* is received, then removes the <LF> and outputs the line on the GUI */ +void debug_output(char *buf) +{ + static char pbuf[512]; + static int pos = 0; + int len; + + len = strlen(buf); + if(buf[len-1] == '\n') + { + buf[len-1] == '\0'; + len--; + memcpy(&pbuf[pos], buf, len); + pos = 0; + InsertTextBoxLine (panelHandle, PANEL_OUTPUTDEBUG, -1, pbuf); + } + else + { + memcpy(&pbuf[pos], buf, len); + pos += len; + } + +} + +size_t SCPI_Write(scpi_t * context, const char * data, size_t len) +{ + if((SCPI_outputBuffer_idx + len) > (SCPI_OUPUT_BUFFER_SIZE-1)) + { + len = (SCPI_OUPUT_BUFFER_SIZE-1) - SCPI_outputBuffer_idx; // limit length to left over space + // apparently there is no mechanism to cope with buffers that are too small + } + memcpy(&SCPI_outputBuffer[SCPI_outputBuffer_idx], data, len); + SCPI_outputBuffer_idx += len; + + SCPI_outputBuffer[SCPI_outputBuffer_idx] = '\0'; + // return fwrite(data, 1, len, stdout); + return len; +} + +scpi_result_t SCPI_Flush(scpi_t * context) +{ +// fwrite(SCPI_outputBuffer, 1, SCPI_outputBuffer_idx, stdout); + removeTrailingEndcodes(SCPI_outputBuffer); + InsertTextBoxLine (panelHandle, PANEL_OUTPUT, -1, SCPI_outputBuffer); + SCPI_outputBuffer_idx = 0; + return SCPI_RES_OK; +} + +int SCPI_Error(scpi_t * context, int_fast16_t err) +{ + char buf[512]; + +// fprintf(stderr, "**ERROR: %d, \"%s\"\r\n", (int16_t) err, SCPI_ErrorTranslate(err)); + sprintf(buf, "**ERROR: %d, \"%s\"", (int16_t) err, SCPI_ErrorTranslate(err)); + InsertTextBoxLine (panelHandle, PANEL_OUTPUTERR, -1, buf); + return 0; +} + +scpi_result_t SCPI_Control(scpi_t * context, scpi_ctrl_name_t ctrl, scpi_reg_val_t val) { + if (SCPI_CTRL_SRQ == ctrl) { + // fprintf(stderr, "**SRQ: 0x%X (%d)\r\n", val, val); + SetCtrlVal(panelHandle, PANEL_LEDSRQ, 1); + } else { + fprintf(stderr, "**CTRL %02x: 0x%X (%d)\r\n", ctrl, val, val); + } + return SCPI_RES_OK; +} + +scpi_result_t SCPI_Reset(scpi_t * context) { + char buf[256]; +// fprintf(stderr, "**Reset\r\n"); + sprintf(buf, "**Reset\r\n"); + debug_output(buf); + return SCPI_RES_OK; +} + +scpi_result_t SCPI_SystemCommTcpipControlQ(scpi_t * context) { + return SCPI_RES_ERR; +} + + +/* + * + */ +int main(int argc, char** argv) +{ + int result; + + SCPI_Init(&scpi_context); + + if (InitCVIRTE (0, argv, 0) == 0) + return -1; /* out of memory */ + if ((panelHandle = LoadPanel (0, "TestLibscpi.uir", PANEL)) < 0) + return -1; + DisplayPanel (panelHandle); + + updateSSCPIRegister(); + + RunUserInterface (); + DiscardPanel (panelHandle); + + return (EXIT_SUCCESS); +} + + +void updateSSCPIRegister(void) +{ + updateSTB(); + updateSRE(); + updateESR(); + updateESE(); +} + +void updateSTB(void) +{ + scpi_reg_val_t regVal; + + regVal = SCPI_RegGet(&scpi_context, SCPI_REG_STB); + + gui_updateSTB((uint8_t)(0x00FF & regVal)); +} + +void updateESR(void) +{ + scpi_reg_val_t regVal; + + regVal = SCPI_RegGet(&scpi_context, SCPI_REG_ESR); + + gui_updateESR((uint8_t)(0x00FF & regVal)); +} + +void updateESE(void) +{ + scpi_reg_val_t regVal; + + regVal = SCPI_RegGet(&scpi_context, SCPI_REG_ESE); + + gui_updateESE((uint8_t)(0x00FF & regVal)); +} + +void updateSRE(void) +{ + scpi_reg_val_t regVal; + + regVal = SCPI_RegGet(&scpi_context, SCPI_REG_SRE); + + gui_updateSRE((uint8_t)(0x00FF & regVal)); +} + + +/* + * The CALLBACK functions below are called from the CVI runtime engine when + * user clicks on buttons, inputs data on the GUI etc. + */ +int CVICALLBACK cb_scpi_input (int panel, int control, int event, + void *callbackData, int eventData1, int eventData2) +{ + char buf[256]; + int len; + + switch (event) + { + case EVENT_COMMIT: + GetCtrlVal(panel, control, buf); + /* we have to add a endcode to make SCPI accept the string, here a <LF> is added */ + len = strlen(buf); + buf[len] = '\n'; + len++; + SCPI_Input(&scpi_context, buf, len); + + updateSSCPIRegister(); + break; + } + return 0; +} + +int CVICALLBACK cb_quit (int panel, int control, int event, + void *callbackData, int eventData1, int eventData2) +{ + switch (event) + { + case EVENT_COMMIT: + QuitUserInterface (0); + break; + } + return 0; +} + +/* + * Helper functions for GUI + */ +void gui_updateSTB(uint8_t newSTB) +{ + char buf[5]; + + sprintf(buf, "0x%02X", newSTB); + SetCtrlVal(panelHandle, PANEL_STBHEX, buf); + + SetCtrlVal(panelHandle, PANEL_STB0, (newSTB & 0x01)); + SetCtrlVal(panelHandle, PANEL_STB1, (newSTB & 0x02)); + SetCtrlVal(panelHandle, PANEL_STB2, (newSTB & 0x04)); + SetCtrlVal(panelHandle, PANEL_STB3, (newSTB & 0x08)); + SetCtrlVal(panelHandle, PANEL_STB4, (newSTB & 0x10)); + SetCtrlVal(panelHandle, PANEL_STB5, (newSTB & 0x20)); + SetCtrlVal(panelHandle, PANEL_STB6, (newSTB & 0x40)); + SetCtrlVal(panelHandle, PANEL_STB7, (newSTB & 0x80)); + + if(0x00 == (newSTB & 0x40)) SetCtrlVal(panelHandle, PANEL_LEDSRQ, 0); + +} + +void gui_updateESR(uint8_t newESR) +{ + char buf[5]; + + sprintf(buf, "0x%02X", newESR); + SetCtrlVal(panelHandle, PANEL_ESRHEX, buf); + + SetCtrlVal(panelHandle, PANEL_ESR0, (newESR & 0x01)); + SetCtrlVal(panelHandle, PANEL_ESR1, (newESR & 0x02)); + SetCtrlVal(panelHandle, PANEL_ESR2, (newESR & 0x04)); + SetCtrlVal(panelHandle, PANEL_ESR3, (newESR & 0x08)); + SetCtrlVal(panelHandle, PANEL_ESR4, (newESR & 0x10)); + SetCtrlVal(panelHandle, PANEL_ESR5, (newESR & 0x20)); + SetCtrlVal(panelHandle, PANEL_ESR6, (newESR & 0x40)); + SetCtrlVal(panelHandle, PANEL_ESR7, (newESR & 0x80)); +} + +void gui_updateESE(uint8_t newESE) +{ + char buf[5]; + + sprintf(buf, "0x%02X", newESE); + SetCtrlVal(panelHandle, PANEL_ESEHEX, buf); + + SetCtrlVal(panelHandle, PANEL_ESE0, (newESE & 0x01)); + SetCtrlVal(panelHandle, PANEL_ESE1, (newESE & 0x02)); + SetCtrlVal(panelHandle, PANEL_ESE2, (newESE & 0x04)); + SetCtrlVal(panelHandle, PANEL_ESE3, (newESE & 0x08)); + SetCtrlVal(panelHandle, PANEL_ESE4, (newESE & 0x10)); + SetCtrlVal(panelHandle, PANEL_ESE5, (newESE & 0x20)); + SetCtrlVal(panelHandle, PANEL_ESE6, (newESE & 0x40)); + SetCtrlVal(panelHandle, PANEL_ESE7, (newESE & 0x80)); +} + +void gui_updateSRE(uint8_t newSRE) +{ + char buf[5]; + + sprintf(buf, "0x%02X", newSRE); + SetCtrlVal(panelHandle, PANEL_SREHEX, buf); + + SetCtrlVal(panelHandle, PANEL_SRE0, (newSRE & 0x01)); + SetCtrlVal(panelHandle, PANEL_SRE1, (newSRE & 0x02)); + SetCtrlVal(panelHandle, PANEL_SRE2, (newSRE & 0x04)); + SetCtrlVal(panelHandle, PANEL_SRE3, (newSRE & 0x08)); + SetCtrlVal(panelHandle, PANEL_SRE4, (newSRE & 0x10)); + SetCtrlVal(panelHandle, PANEL_SRE5, (newSRE & 0x20)); + SetCtrlVal(panelHandle, PANEL_SRE6, (newSRE & 0x40)); + SetCtrlVal(panelHandle, PANEL_SRE7, (newSRE & 0x80)); +} diff --git a/examples/test-CVI_w_GUI/scpi_user_config.h b/examples/test-CVI_w_GUI/scpi_user_config.h new file mode 100644 index 0000000..6843300 --- /dev/null +++ b/examples/test-CVI_w_GUI/scpi_user_config.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2012-2013 Lutz Hoerl, Thorlabs GmbH + * + * All Rights Reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file scpi_user_config.h + * @date Wed Aug 05 10:00:00 UTC 2015 + * + * @brief User resp. device dependent SCPI Configuration + * + * + */ + +#ifndef __SCPI_USER_CONFIG_H_ +#define __SCPI_USER_CONFIG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define SCPI_LINE_ENDING "\r\n" /* use <CR><LF> carriage return + line feed as termination charcters */ + +#define USE_FULL_ERROR_LIST 1 +#define USE_USER_ERROR_LIST 1 + +#define LIST_OF_USER_ERRORS \ + X(SCPI_USER_ERROR_WARMUP_NOT_FINISHED, 101, "The device has not finished the warm up process yet") \ + X(SCPI_USER_ERROR_INTERLOCK_OPEN, 102, "Switching output to on is not allowed when interlock is open") \ + + + +#ifdef __cplusplus +} +#endif + +#endif /* #define __SCPI_USER_CONFIG_H_ */ -- Gitblit v1.9.1