| /cvi/instr/AitSipmDAQ/Ait.cws |
|---|
| 0,0 → 1,286 |
| [Workspace Header] |
| Version = 1302 |
| Pathname = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.cws" |
| CVI Dir = "/c/program files/national instruments/cvi2013" |
| CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
| CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
| CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
| IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
| IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
| VXIplug&play Framework Dir = "/C/Program Files/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 = "Ait.prj" |
| Drag Bar Left = 184 |
| Window Top = 174 |
| Window Left = 296 |
| Window Bottom = 965 |
| Window Right = 1638 |
| 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 At Start = True |
| Bring Up Err Win For Errors = 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 = 9 |
| Window Confinement Region Enabled = True |
| MainColumnWidth = 167 |
| FileDateColumnWidth = 70 |
| FileSizeColumnWidth = 70 |
| [Project Header 0001] |
| Version = 1302 |
| Don't Update DistKit = False |
| Platform Code = 4 |
| Build Configuration = "Debug" |
| Warn User If Debugging Release = 1 |
| Batch Build Release = False |
| Batch Build Debug = False |
| [File 0001] |
| Path = "/c/home/CVI/instr/HISTO/H1D.fp" |
| File Type = "Function Panel" |
| Disk Date = 3568701422 |
| In Projects = "1," |
| Window Top = 268 |
| Window Left = 131 |
| Window Height = 400 |
| Window Width = 400 |
| [File 0002] |
| Path = "/c/home/CVI/instr/HISTO/H2D.fp" |
| File Type = "Function Panel" |
| Disk Date = 3568701422 |
| In Projects = "1," |
| Window Top = 154 |
| Window Left = 71 |
| Window Height = 400 |
| Window Width = 400 |
| [File 0003] |
| Path = "/c/home/CVI/instr/HISTO/H3D.fp" |
| File Type = "Function Panel" |
| Disk Date = 3568701422 |
| In Projects = "1," |
| Window Top = 230 |
| Window Left = 111 |
| Window Height = 400 |
| Window Width = 400 |
| [File 0004] |
| Path = "/c/home/CVI/instr/MIKRO/MIKRO.fp" |
| File Type = "Function Panel" |
| Disk Date = 3228636098 |
| In Projects = "1," |
| [File 0005] |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitInterface.c" |
| File Type = "CSource" |
| Disk Date = 3568367969 |
| In Projects = "1," |
| Window Top = 192 |
| Window Left = 91 |
| Window Z-Order = 5 |
| Source Window State = "1,915,915,915,9,23,23,0,0,80,0,704,0,0,0,25,863,0,902,17,349,683,1,13," |
| [File 0006] |
| Path = "/c/home/CVI/instr/MIKRO/MIKRO.c" |
| File Type = "CSource" |
| Disk Date = 3293361296 |
| In Projects = "" |
| Window Top = 31 |
| Window Z-Order = 6 |
| Source Window State = "1,0,0,0,0,0,0,0,0,70,0,0,0,0,0,28,30,0,110,21,400,600,1,0," |
| [File 0007] |
| Path = "/c/home/CVI/instr/HISTO/H2D.c" |
| File Type = "CSource" |
| Disk Date = 3568701422 |
| In Projects = "" |
| Window Top = 31 |
| Window Z-Order = 4 |
| Source Window State = "1,302,302,302,2,26,2,0,0,70,0,0,0,0,0,28,246,0,288,27,400,600,1,0," |
| [File 0008] |
| Path = "/c/home/CVI/instr/HISTO/H1D.c" |
| File Type = "CSource" |
| Disk Date = 3568716552 |
| In Projects = "" |
| Window Top = 64 |
| Window Left = 26 |
| Window Z-Order = 3 |
| Source Window State = "1,271,274,274,0,0,0,0,3,80,0,0,0,0,0,25,248,0,271,21,349,683,1,0," |
| [File 0009] |
| Path = "/c/home/CVI/instr/HISTO/H1D.h" |
| File Type = "Include" |
| Disk Date = 3568701422 |
| In Projects = "" |
| Window Top = 95 |
| Window Left = 42 |
| Window Z-Order = 9 |
| Source Window State = "1,75,75,75,15,23,23,0,3,80,0,0,0,0,0,25,54,0,75,15,349,683,1,0," |
| [File 0010] |
| Path = "/c/home/CVI/instr/HISTO/H2D.h" |
| File Type = "Include" |
| Disk Date = 3568701422 |
| In Projects = "" |
| Window Top = 126 |
| Window Left = 58 |
| Window Z-Order = 8 |
| Source Window State = "1,93,93,93,14,22,22,0,3,80,0,0,0,0,0,25,73,0,93,14,349,683,1,0," |
| [File 0011] |
| Path = "/c/Program Files/National Instruments/CVI2013/include/utility.h" |
| File Type = "Include" |
| Disk Date = 3486528000 |
| In Projects = "" |
| Window Top = 33 |
| Window Left = 10 |
| Window Z-Order = 7 |
| Source Window State = "1,700,700,700,14,46,46,0,3,80,0,0,0,0,0,25,688,0,700,14,349,683,1,0," |
| [File 0012] |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.uir" |
| File Type = "User Interface Resource" |
| Disk Date = 3568717028 |
| In Projects = "1," |
| Window Top = 40 |
| Window Left = 11 |
| Window Height = 349 |
| Window Width = 683 |
| Window Z-Order = 2 |
| [File 0013] |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.c" |
| File Type = "CSource" |
| Disk Date = 3568717844 |
| In Projects = "1," |
| Window Top = 33 |
| Window Left = 10 |
| Window Z-Order = 1 |
| Source Window State = "1,668,668,668,35,39,39,0,0,212,0,1,0,1,0,63,637,0,666,81,349,587,1,0," |
| [File 0014] |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitMduManager.lib" |
| File Type = "Library" |
| Disk Date = 3567588825 |
| In Projects = "1," |
| [File 0015] |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitInterface.h" |
| File Type = "Include" |
| Disk Date = 3567772136 |
| In Projects = "1," |
| Window Top = 154 |
| Window Left = 71 |
| Source Window State = "1,14,15,14,5,26,5,0,0,0,0,0,0,0,0,0,11,0,14,15,349,771,1,0," |
| [Tab Order] |
| Tab 0001 = "/c/home/CVI/instr/MIKRO/MIKRO.c" |
| Tab 0002 = "/c/home/CVI/instr/HISTO/H2D.c" |
| Tab 0003 = "/c/home/CVI/instr/HISTO/H1D.c" |
| Tab 0004 = "/c/home/CVI/instr/HISTO/H1D.h" |
| Tab 0005 = "/c/home/CVI/instr/HISTO/H2D.h" |
| Tab 0006 = "/c/Program Files/National Instruments/CVI2013/include/utility.h" |
| Tab 0007 = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitInterface.c" |
| Tab 0008 = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.c" |
| Tab 0009 = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.uir" |
| [Default Build Config 0001 Debug] |
| 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 = "" |
| Environment Options = "" |
| 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 = "" |
| Environment Options = "" |
| 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 = "" |
| Environment Options = "" |
| 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 = "" |
| Environment Options = "" |
| External Process Path = "" |
| [Build Dependencies 0001] |
| Number of Dependencies = 0 |
| [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 = "" |
| Environment Options = "" |
| /cvi/instr/AitSipmDAQ/Ait.exe |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/instr/AitSipmDAQ/Ait.prj |
|---|
| 0,0 → 1,507 |
| [Project Header] |
| Version = 1302 |
| Pathname = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.prj" |
| CVI Dir = "/c/program files/national instruments/cvi2013" |
| CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
| CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
| CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
| IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
| VXIplug&play Framework Dir = "/C/Program Files/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 = 9 |
| 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 |
| [Folders] |
| Folder 0 = "User Interface Files" |
| FolderEx 0 = "User Interface Files" |
| Folder 1 = "Source Files" |
| FolderEx 1 = "Source Files" |
| Folder 2 = "Library Files" |
| FolderEx 2 = "Library Files" |
| Folder 3 = "Include Files" |
| FolderEx 3 = "Include Files" |
| Folder 4 = "Instrument Files" |
| FolderEx 4 = "Instrument Files" |
| [File 0001] |
| File Type = "User Interface Resource" |
| Res Id = 1 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "AitGui.uir" |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.uir" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "User Interface Files" |
| Folder Id = 0 |
| [File 0002] |
| File Type = "CSource" |
| Res Id = 2 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "AitGui.c" |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitGui.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 1 |
| [File 0003] |
| File Type = "CSource" |
| Res Id = 3 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "AitInterface.c" |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitInterface.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 1 |
| [File 0004] |
| File Type = "Library" |
| Res Id = 4 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "AitMduManager.lib" |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitMduManager.lib" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Library Files" |
| Folder Id = 2 |
| [File 0005] |
| File Type = "Include" |
| Res Id = 5 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "AitInterface.h" |
| Path = "/c/home/rok/NativeExportsSample/AitSipmDAQ/AitInterface.h" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Include Files" |
| Folder Id = 3 |
| [File 0006] |
| File Type = "Function Panel" |
| Res Id = 6 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../../CVI/instr/HISTO/H1D.fp" |
| Path = "/c/home/CVI/instr/HISTO/H1D.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 4 |
| [File 0007] |
| File Type = "Function Panel" |
| Res Id = 7 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../../CVI/instr/HISTO/H2D.fp" |
| Path = "/c/home/CVI/instr/HISTO/H2D.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 4 |
| [File 0008] |
| File Type = "Function Panel" |
| Res Id = 8 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../../CVI/instr/HISTO/H3D.fp" |
| Path = "/c/home/CVI/instr/HISTO/H3D.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 4 |
| [File 0009] |
| File Type = "Function Panel" |
| Res Id = 9 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../../CVI/instr/MIKRO/MIKRO.fp" |
| Path = "/c/home/CVI/instr/MIKRO/MIKRO.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 4 |
| [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" |
| Optimization Level = "Optimize for speed (level 2)" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "Common" |
| Warning List None = "" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = True |
| Enable Pointer Mismatch Warning = True |
| Enable Unreachable Code Warning = True |
| Enable Assignment In Conditional Warning = True |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| 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 = "" |
| 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 |
| Embed Timestamp = True |
| 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 = "" |
| Company Name Ex = "%company" |
| File Description = "Ait (Debug x86)" |
| File Description Ex = "%application (%rel_dbg %arch)" |
| File Version = "1.0" |
| File Version Ex = "%f1.%f2" |
| Internal Name = "Ait" |
| Internal Name Ex = "%basename" |
| Legal Copyright = "Copyright © 2017" |
| Legal Copyright Ex = "Copyright © %company %Y" |
| Legal Trademarks = "" |
| Legal Trademarks Ex = "" |
| Original Filename = "Ait.exe" |
| Original Filename Ex = "%filename" |
| Private Build = "" |
| Private Build Ex = "" |
| Product Name = " Ait" |
| 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" |
| Optimization Level = "Optimize for speed (level 2)" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "Common" |
| Warning List None = "" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = True |
| Enable Pointer Mismatch Warning = True |
| Enable Unreachable Code Warning = True |
| Enable Assignment In Conditional Warning = True |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| 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 = "" |
| 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 |
| Embed Timestamp = True |
| 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" |
| Optimization Level = "Optimize for speed (level 2)" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "Common" |
| Warning List None = "" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = True |
| Enable Pointer Mismatch Warning = True |
| Enable Unreachable Code Warning = True |
| Enable Assignment In Conditional Warning = True |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| 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 = "" |
| 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 |
| Embed Timestamp = True |
| 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" |
| Optimization Level = "Optimize for speed (level 2)" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "Common" |
| Warning List None = "" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = True |
| Enable Pointer Mismatch Warning = True |
| Enable Unreachable Code Warning = True |
| Enable Assignment In Conditional Warning = True |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| 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 = "" |
| 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 |
| Embed Timestamp = True |
| 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 = True |
| Enable Unreachable Code Warning = True |
| Enable Unreferenced Identifiers Warning = True |
| Enable Assignment In Conditional Warning = True |
| O Option Compatible With 5.0 = False |
| Enable C99 Extensions = True |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Precompile Prefix Header = False |
| Prefix Header File = "" |
| [Run Options] |
| Stack Size = 250000 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| [Compiler Defines] |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
| [Create Executable] |
| Executable File_Debug Is Rel = True |
| Executable File_Debug Rel To = "Project" |
| Executable File_Debug Rel Path = "Ait.exe" |
| Executable File_Debug = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.exe" |
| Executable File_Release Is Rel = True |
| Executable File_Release Rel To = "Project" |
| Executable File_Release Rel Path = "Ait.exe" |
| Executable File_Release = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.exe" |
| Executable File_Debug64 Is Rel = True |
| Executable File_Debug64 Rel To = "Project" |
| Executable File_Debug64 Rel Path = "Ait.exe" |
| Executable File_Debug64 = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.exe" |
| Executable File_Release64 Is Rel = True |
| Executable File_Release64 Rel To = "Project" |
| Executable File_Release64 Rel Path = "Ait.exe" |
| Executable File_Release64 = "/c/home/rok/NativeExportsSample/AitSipmDAQ/Ait.exe" |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| DLL Exports = "Include File Symbols" |
| 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 |
| /cvi/instr/AitSipmDAQ/AitGui.c |
|---|
| 0,0 → 1,942 |
| #include <formatio.h> |
| #include <cvirte.h> |
| #include <userint.h> |
| #include "AitGui.h" |
| #include "XYSCAN.h" |
| #include <stdbool.h> |
| #include "AitInterface.h" |
| #include "AitMduManager_DEF.h" |
| #include "H1D.h" |
| #include "H2D.h" |
| #include "H3D.h" |
| typedef unsigned short ushort; |
| typedef unsigned int uint; |
| static int ait; |
| static int xyscan; |
| //#define MIKRO |
| #ifdef MIKRO |
| #include "MIKRO.h" |
| #endif |
| static int daq_on; |
| static int plothandle[4]= {0,0,0, 0}; |
| static int tfID; |
| static int controlID; |
| static int verbose; |
| #define MAX_THREADS 10 |
| static CmtThreadPoolHandle poolHandle = 0; |
| /* |
| x: 140000 280000 |
| */ |
| //**************************** missing declarations in the library |
| char strbuf[0xFF]; |
| int gLog=0; |
| int printf(const char *format, ...) { |
| va_list aptr; |
| int ret; |
| FILE *flog; |
| va_start(aptr, format); |
| ret = vsprintf(strbuf, format, aptr); |
| va_end(aptr); |
| SetCtrlVal(ait,AIT_STDIO,strbuf); |
| if (gLog) { |
| flog = fopen ("stdio.log", "a"); |
| fprintf (flog, "%s", strbuf); |
| fclose (flog); |
| } |
| return(ret); |
| } |
| static int timeout=0; |
| int CVICALLBACK SetTimeoutCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_TIMER_TICK: |
| timeout=1; |
| printf("#### Timeout\n"); |
| break; |
| } |
| return 0; |
| } |
| static void start_timer (double tout) { |
| timeout = 0; |
| SetCtrlAttribute (ait, AIT_TIMER, ATTR_INTERVAL, tout); |
| SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 1); |
| } |
| static void stop_timer ( void ) { |
| SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 0); |
| //DRSSetTimeout(); |
| } |
| void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle, |
| CmtThreadFunctionID functionID, unsigned int event, |
| int value, void *callbackData ) { |
| daq_on=0; |
| //SetDimming(0); |
| printf("End of Thread \n"); |
| return ; |
| } |
| int AitInit() { |
| InitializeConnection(); |
| return 0; |
| } |
| int AitValidEvent() { |
| return 1; |
| }; |
| int AitToFile(FILE *fp, int n) { |
| const int bsize=10000 ; |
| unsigned short a[bsize] ; |
| unsigned short buffer[2]={0x1}; |
| buffer[1] = (unsigned short)(n*CHANNELS*2); |
| for (int eventNum = 0; eventNum < n; eventNum++) { |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| int index = channel+ CHANNELS * eventNum; |
| if (index<bsize) |
| a[index] = ExtractAdcData(eventNum, channel); |
| } |
| } |
| fwrite(buffer, 2*sizeof(short),1,fp); |
| return fwrite(a, 1,buffer[1],fp); |
| }; |
| int AitFillHistograms(int events) { |
| ushort rawAdcData = 0; |
| ushort adcData = 0; |
| int channelReceived = 0; |
| int channelExpected = 0; |
| bool includeSaturated = 0; // cbIncludeSaturated.Checked; |
| ushort max[CHANNELS]; |
| ushort min[CHANNELS]; |
| ushort average[CHANNELS]; |
| int total[CHANNELS]; |
| for (int i = 0; i < CHANNELS; i++) { |
| min[i] = 0xFFFF; |
| max[i] = 0; |
| total[i] = 0; |
| } |
| double threshold, xysumcut; |
| GetCtrlVal (ait, AIT_ADCTHRESHOLD, &threshold); |
| GetCtrlVal (ait, AIT_XYCUT, &xysumcut); |
| for (int eventNum = 0; eventNum < events; eventNum++) { |
| int sum = 0; |
| double a[4]= {0,0,0,0} ; |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| rawAdcData = ExtractAdcData(eventNum, channel); |
| if (addChannelNum == true) { |
| channelReceived = (rawAdcData >> 12) & 0xF; |
| channelExpected = (channel & 0xF); |
| if (channelReceived != channelExpected) { |
| AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived); |
| //EnableRegisterScanTimer(true); |
| return eventNum; |
| } |
| } |
| adcData = (ushort)(rawAdcData & 0x0FFF); // remove channel number |
| //if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2)))) |
| if (adcData>threshold) H1D_Fill(channel, adcData,1); |
| a[channel]=adcData; |
| total[channel] = total[channel] + adcData; |
| if (adcData > max[channel]) |
| max[channel] = adcData; |
| else if (adcData < min[channel]) |
| min[channel] = adcData; |
| sum += adcData; |
| } |
| if (sum>threshold) { |
| H1D_Fill(10, sum, 1 ); |
| double x = a[0]/(a[0]+a[1]); |
| double y = a[2]/(a[2]+a[3]); |
| if (sum>xysumcut) H2D_Fill(0, x, y , 1 ); |
| } |
| histogramTotalEvents++; |
| } |
| //tbAdcStatistics.Clear(); |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| average[channel] = (ushort)(total[channel] / events); |
| if (verbose) AddMessage(" {channel:%d} : {min:0x%d} {max:0x%d} {max-min:%d} {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]); |
| //if (channel < (CHANNELS - 1)) |
| // tbAdcStatistics.AppendText(Environment.NewLine); |
| } |
| //SetTextboxToTop(tbAdcStatistics); |
| return 1; |
| }; |
| int CVICALLBACK RefreshGraphs (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_TIMER_TICK: |
| // if (!daq_on ) return 0; |
| case EVENT_COMMIT: { |
| int ch=0; |
| int logy=0; |
| int updateplots=0; |
| GetCtrlVal(ait,AIT_CH, &ch); |
| GetCtrlVal(ait,AIT_LOGY, &logy); |
| GetCtrlVal(ait,AIT_UPDATEPLOTS, &updateplots); |
| if (!updateplots) return 0; |
| if (logy){ |
| SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
| SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
| } else { |
| SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
| SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
| } |
| H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
| H1D_Draw(10,ait,AIT_GRAPHSUM,&plothandle[1]); |
| H2D_Draw(0,ait,AIT_GRAPHXY,&plothandle[2]); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK daq(void *functionData) { |
| int neve; |
| char filename[0xff]; |
| char fname[0xff]; |
| char pname[0xff]; |
| int pfreq; |
| int enabledoutput; |
| int neveold = 0; |
| double rate; |
| int *args = (int *) functionData; |
| GetCtrlVal(ait, AIT_FILENAME, fname ); |
| GetCtrlVal(ait, AIT_PATHNAME, pname ); |
| sprintf(filename,"%s/%s", pname, fname); |
| GetCtrlVal(ait,AIT_NEVE, &neve); |
| GetCtrlVal(ait,AIT_DEBUG, &verbose); |
| GetCtrlVal(ait,AIT_PFREQ, &pfreq); |
| GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
| int range=0; |
| int nch = range; |
| GetCtrlVal(ait,AIT_MAX, &range); |
| if (range>512) nch = 512; |
| for (int i=0; i<4; i++) { |
| char name[0xFF]; |
| sprintf(name,"adc%d", i); |
| H1D_Init(i, name,name, range, 0 , range); |
| H1D_SetTitleX(0,"ADC"); |
| H1D_SetTitleY(0,"N"); |
| } |
| H1D_Init(10, "adcsum","adcsum", range, 0 , 4*range); |
| H1D_SetTitleX(0,"ADC"); |
| H1D_SetTitleY(0,"N"); |
| H2D_Init(0, "cog","Center of gravity", 256, 0 ,1, 256, 0 ,1); |
| H2D_SetTitleX(0,"x"); |
| H2D_SetTitleY(0,"y"); |
| FILE *fp= NULL; |
| if (enabledoutput) { |
| if (args[0]) fp = fopen(filename,"wb"); |
| else fp = fopen(filename,"ab"); |
| } |
| time_t t=0,told=0, tstart=0; |
| if (!AitInit()) { |
| ReadRegisters(); |
| // Update UI |
| int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| int value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (ait, AIT_GETADCGAIN, value); |
| double valued = GetThreshold(); |
| SetCtrlVal (ait, AIT_GETADCTHRESHOLD, valued); |
| valued = GetIntegrationTime(); |
| SetCtrlVal (ait, AIT_GETADCINTEGRATIONTIME, valued); |
| valued = GetHvVoltage(ADDR_HV_VMON); |
| SetCtrlVal (ait, AIT_BIASMON, valued); |
| value = |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (ait, AIT_GETADCSUMGAIN, value); |
| RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
| daq_on=1; |
| //RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
| time(&tstart); |
| told=tstart; |
| int i=0; |
| for (i=0; i<neve; i++) { |
| start_timer(1);// 1 s timeout |
| // Set ADC reset |
| ResetAdc(true); |
| // Clear ADC reset |
| ResetAdc(false); |
| int eventsAcquired = Acquire(pfreq); |
| stop_timer(); |
| if (!daq_on) break; |
| if (timeout) { |
| i--; |
| printf("INFO Timeout\n"); |
| continue; |
| } |
| int isvalid =1; |
| if (eventsAcquired < 1) { |
| printf("Acquired events %d\n", eventsAcquired); |
| isvalid = 0; |
| } else { |
| AitFillHistograms(eventsAcquired); |
| if (verbose) ShowEvent(1); |
| } |
| int nb = ( isvalid && fp ) ? AitToFile( fp , pfreq ) : 0; |
| SetCtrlVal(ait,AIT_CEVE,i); |
| if (!isvalid) i--; |
| time(&t); |
| if (t!=told ) { |
| rate = (i-neveold); |
| printf("%d events in %2.2f min (%d s) Rate %f Hz %s ",i+1, (double)(t-tstart)/60.,(t-tstart), rate , ctime(&t)); |
| neveold = i; |
| RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
| double daqBlocksize = GetAdcEventSize() * pfreq * 2.0; |
| double daqTimeMs = BlockTransferTime(); |
| double daqTransferRate = daqBlocksize / daqTimeMs; |
| SetCtrlVal(ait,AIT_DAQBLOCKSIZE, daqBlocksize); |
| SetCtrlVal(ait,AIT_DAQTIMEMS,daqTimeMs); |
| SetCtrlVal(ait,AIT_DAQTRANSFERRATE,daqTransferRate); |
| } |
| told=t; |
| } |
| time(&t); |
| printf("%d events in %2.2f min (%d s) %s",i+1, (double)(t-tstart)/60.,t-tstart, ctime(&t)); |
| } |
| if (fp) fclose(fp); |
| RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
| return 0; |
| } |
| int CVICALLBACK scan(void *functionData) { |
| int dx[3]={0,0,0}; |
| int nx[3]={0,0,0}; |
| int x0[3]={0,0,0}; |
| int ix[3]={0,0,0}; |
| int idx[3]={0,0,0}; |
| unsigned short size; |
| unsigned short posrec={0x2}; |
| unsigned short runbuf={0x3}; |
| int n[3]; |
| char filename[0xFF]; |
| char fname[0xff]; |
| char pname[0xff]; |
| int enabledoutput; |
| FILE *fp; |
| GetCtrlVal(ait, AIT_FILENAME, fname ); |
| GetCtrlVal(ait, AIT_PATHNAME, pname ); |
| sprintf(filename,"%s/%s", pname, fname); |
| GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
| int fsize; |
| if ( GetFileInfo(filename,&fsize) ) { |
| MessagePopup ("Warning", "File exist. Remove it first or choose another file"); |
| return 0; |
| } |
| GetCtrlVal(xyscan, SCAN_STEPX, &dx[0]); |
| GetCtrlVal(xyscan, SCAN_STEPY, &dx[1]); |
| GetCtrlVal(xyscan, SCAN_NSTEPSX, &nx[0]); |
| GetCtrlVal(xyscan, SCAN_NSTEPSY, &nx[1]); |
| GetCtrlVal(xyscan, SCAN_STARTX, &x0[0]); |
| GetCtrlVal(xyscan, SCAN_STARTY, &x0[1]); |
| if (enabledoutput) { |
| fp = fopen(filename,"ab"); |
| if (fp) { |
| size=36; |
| fwrite(&runbuf, sizeof(unsigned short),1 ,fp); |
| fwrite(&size , sizeof(unsigned short),1 ,fp); |
| fwrite(x0 , 1,4*3 ,fp); |
| fwrite(dx , 1,4*3 ,fp); |
| fwrite(nx , 1,4*3 ,fp); |
| fclose(fp); |
| } |
| } |
| for (int j=0; j<nx[1]; j++) { |
| SetCtrlVal (xyscan, SCAN_IY, j); |
| ix[1]= x0[1]+j*dx[1]; |
| #ifdef MIKRO |
| MIKRO_MoveTo(2,ix[1]); |
| MIKRO_GetPosition(2,&n[1]); |
| SetCtrlVal (xyscan, SCAN_YP, n[1]); |
| #endif |
| for (int i=0; i<nx[0]; i++) { |
| SetCtrlVal (xyscan, SCAN_IX, i); |
| ix[0]= x0[0]+i*dx[0]; |
| #ifdef MIKRO |
| MIKRO_MoveTo(1,ix[0]); |
| MIKRO_GetPosition(1,&n[0]); |
| SetCtrlVal (xyscan, SCAN_XP, n[0]); |
| if (enabledoutput) { |
| fp = fopen(filename,"ab"); |
| if (fp) { |
| time_t mtime; |
| idx[0]=i; |
| idx[1]=j; |
| size=24+sizeof(mtime); |
| fwrite(&posrec, sizeof(unsigned short),1 ,fp); |
| fwrite(&size , sizeof(unsigned short),1 ,fp); |
| fwrite(n , 1,4*3 ,fp); |
| fwrite(idx , 1,4*3 ,fp); |
| time(&mtime); |
| fwrite(&mtime , sizeof(time_t),1 ,fp); |
| fclose(fp); |
| } |
| } |
| #endif |
| int newfile=0; |
| daq(&newfile); |
| if (!daq_on) break; |
| } |
| if (!daq_on) break; |
| } |
| return 0; |
| } |
| int main (int argc, char *argv[]) { |
| short port; |
| if (InitCVIRTE (0, argv, 0) == 0) |
| return -1; /* out of memory */ |
| if ((ait = LoadPanel (0, "AitGui.uir", AIT)) < 0) |
| return -1; |
| if ((xyscan = LoadPanel (0, "XYSCAN.uir", SCAN)) < 0) |
| return -1; |
| SetStdioPort (CVI_STDIO_WINDOW); |
| SetSleepPolicy(VAL_SLEEP_MORE); |
| CmtNewThreadPool (MAX_THREADS, &poolHandle); |
| DisplayPanel (ait); |
| DisplayPanel (xyscan); |
| AitInit(); |
| #ifdef MIKRO |
| GetCtrlVal(xyscan, SCAN_PORT, &port); |
| if (MIKRO_Open (port)) MessagePopup ("Error", "Mikro Port Not found !\n Change in the GUI") ; |
| MIKRO_Init(1,0); |
| MIKRO_Init(2,0); |
| #endif |
| RunUserInterface (); |
| #ifdef MIKRO |
| MIKRO_Close (); |
| #endif |
| DiscardPanel (ait); |
| DiscardPanel (xyscan); |
| return 0; |
| } |
| int CVICALLBACK StopCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| daq_on=0; |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK StartCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| ThreadFunctionPtr mythread = NULL; |
| switch (event) { |
| case EVENT_COMMIT: |
| controlID= control; |
| if (panel == ait && control == AIT_START) { |
| mythread = daq; |
| } |
| if (panel == xyscan && control == SCAN_SCAN) mythread = scan; |
| if (mythread!=NULL) { |
| printf("New Thread panel=%d button=%d\n", panel, control); |
| // SetDimming(1); |
| CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &controlID, |
| DEFAULT_THREAD_PRIORITY, |
| EndOfThread, |
| EVENT_TP_THREAD_FUNCTION_END, |
| NULL, RUN_IN_SCHEDULED_THREAD, |
| &tfID); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK ExitCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| QuitUserInterface (0); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK ReadCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| ReadRegisters(); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK ChangeChannelCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| int ch=0; |
| switch (event) { |
| case EVENT_COMMIT: |
| int logy=0; |
| GetCtrlVal(ait,AIT_CH, &ch); |
| GetCtrlVal(ait,AIT_LOGY, &logy); |
| if (logy){ |
| SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
| SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
| } else { |
| SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
| SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
| } |
| H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK InitCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| AitInit(); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK QuickCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| switch (control) { |
| case AIT_QUICKSETUP_1: |
| QuickSetupContinuous(); |
| SetCtrlVal(ait,AIT_TRGTYPE, 0); |
| break; |
| case AIT_QUICKSETUP_2: |
| QuickSetupDiscriminator(); |
| SetCtrlVal(ait,AIT_TRGTYPE, 2); |
| break; |
| case AIT_QUICKSETUP_3: |
| QuickSetupTriggerOff(); |
| break; |
| } |
| float bias = GetHvVoltage(ADDR_HV_VMON); |
| SetCtrlVal (panel, AIT_BIASMON, bias); |
| double value = GetIntegrationTime(); |
| SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
| value = GetThreshold(); |
| SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
| int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| int ivalue = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (panel, AIT_GETADCGAIN, ivalue); |
| ivalue = |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (panel, AIT_GETADCSUMGAIN, ivalue); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK MoveStageCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| int axis=0, step=1000, direction=1; |
| switch (event) { |
| case EVENT_COMMIT: |
| if (panel == xyscan) { |
| switch (control) { |
| case SCAN_BR : |
| axis = 1; |
| direction = 1; |
| GetCtrlVal(panel, SCAN_STEPX, &step); |
| break; |
| case SCAN_BL : |
| axis = 1; |
| direction = -1; |
| GetCtrlVal(panel, SCAN_STEPX, &step); |
| break; |
| case SCAN_BU : |
| axis = 2; |
| direction = 1; |
| GetCtrlVal(panel, SCAN_STEPY, &step); |
| break; |
| case SCAN_BD : |
| axis = 2; |
| direction = -1; |
| GetCtrlVal(panel, SCAN_STEPY, &step); |
| break; |
| } |
| #ifdef MIKRO |
| { |
| int n=0; |
| MIKRO_MoveFor(axis, direction*step ); |
| MIKRO_GetPosition(axis,&n); |
| if (axis == 1) SetCtrlVal (panel, SCAN_XP, n); |
| if (axis == 2) SetCtrlVal (panel, SCAN_YP, n); |
| } |
| #endif // MIKRO |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK GoXCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| int n2; |
| switch (event) { |
| case EVENT_COMMIT: |
| GetCtrlVal (panel, SCAN_XG, &n2); |
| #ifdef MIKRO |
| MIKRO_MoveTo(1,n2); |
| MIKRO_GetPosition(1,&n2); |
| #endif |
| SetCtrlVal (panel, SCAN_XP, n2); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK GoYCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| int n2; |
| switch (event) { |
| case EVENT_COMMIT: |
| GetCtrlVal (panel, SCAN_YG, &n2); |
| #ifdef MIKRO |
| MIKRO_MoveTo(2,n2); |
| MIKRO_GetPosition(2,&n2); |
| #endif |
| SetCtrlVal (panel, SCAN_YP, n2); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK GetCurrentPositionCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: { |
| #ifdef MIKRO |
| int n[2]; |
| MIKRO_GetPosition(1,&n[0]); |
| SetCtrlVal (panel, SCAN_XP, n[0]); |
| MIKRO_GetPosition(2,&n[1]); |
| SetCtrlVal (panel, SCAN_YP, n[1]); |
| #endif |
| break; |
| } |
| } |
| return 0; |
| } |
| int CVICALLBACK HomeCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| #ifdef MIKRO |
| MIKRO_ReferenceMove(1); |
| MIKRO_ReferenceMove(2); |
| GetCurrentPositionCB(panel, control, event, NULL, 0, 0); |
| #endif |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetBiasCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| double bias=0; |
| switch (event) { |
| case EVENT_COMMIT: |
| GetCtrlVal (panel, AIT_BIAS, &bias); |
| SetHvVoltage(ADDR_HV_CTRL, bias); |
| bias = GetHvVoltage(ADDR_HV_VMON); |
| SetCtrlVal (panel, AIT_BIASMON, bias); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetHvOnCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| int state=0; |
| double bias; |
| switch (event) { |
| case EVENT_COMMIT: |
| GetCtrlVal (panel, control, &state); |
| if (state) SetHvOn(true); |
| else SetHvOn(false); |
| bias = GetHvVoltage(ADDR_HV_VMON); |
| SetCtrlVal (panel, AIT_BIASMON, bias); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetAdcIntegrationTimeCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: { |
| double value; |
| GetCtrlVal (panel, AIT_ADCINTEGRATIONTIME, &value); |
| SetIntegrationTime(value); |
| value = GetIntegrationTime(); |
| SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetAdcThresholdCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: { |
| double value; |
| GetCtrlVal (panel, AIT_ADCTHRESHOLD, &value); |
| SetThreshold(value); |
| value = GetThreshold(); |
| SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetAdcGainCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: { |
| int value; |
| GetCtrlVal (panel, AIT_ADCGAIN, &value); |
| SetAdcGain(value); |
| int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (panel, AIT_GETADCGAIN, value); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetAdcSumGainCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT:{ |
| int value; |
| GetCtrlVal (panel, AIT_ADCSUMGAIN, &value); |
| SetSumGain(value); |
| int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| value = |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
| SetCtrlVal (panel, AIT_GETADCSUMGAIN, value); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK SetDiscriminatorTypeCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT:{ |
| int trgtype; |
| GetCtrlVal(ait,AIT_TRGTYPE, &trgtype); |
| EnableTrigger(trgtype); |
| } |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK ResetCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| ReconfigureDevice() ; |
| ReconnectDevice(); |
| //ResetDevice() ; |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK OpenScanCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| DisplayPanel (xyscan); |
| break; |
| } |
| return 0; |
| } |
| int CVICALLBACK OpenMainCB (int panel, int control, int event, |
| void *callbackData, int eventData1, int eventData2) { |
| switch (event) { |
| case EVENT_COMMIT: |
| DisplayPanel (ait); |
| break; |
| } |
| return 0; |
| } |
| /cvi/instr/AitSipmDAQ/AitGui.h |
|---|
| 0,0 → 1,98 |
| /**************************************************************************/ |
| /* LabWindows/CVI User Interface Resource (UIR) Include File */ |
| /* */ |
| /* 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 AIT 1 |
| #define AIT_OPENSCAN 2 /* control type: command, callback function: OpenScanCB */ |
| #define AIT_RESET 3 /* control type: command, callback function: ResetCB */ |
| #define AIT_EXIT 4 /* control type: command, callback function: ExitCB */ |
| #define AIT_SETADCSUMGAIN 5 /* control type: command, callback function: SetAdcSumGainCB */ |
| #define AIT_SETADCGAIN 6 /* control type: command, callback function: SetAdcGainCB */ |
| #define AIT_SETADCINTEGRATIONTIME 7 /* control type: command, callback function: SetAdcIntegrationTimeCB */ |
| #define AIT_SETADCTHRESHOLD 8 /* control type: command, callback function: SetAdcThresholdCB */ |
| #define AIT_SETBIAS 9 /* control type: command, callback function: SetBiasCB */ |
| #define AIT_STOP 10 /* control type: command, callback function: StopCB */ |
| #define AIT_QUICKSETUP_3 11 /* control type: command, callback function: QuickCB */ |
| #define AIT_PATHNAME 12 /* control type: string, callback function: (none) */ |
| #define AIT_FILENAME 13 /* control type: string, callback function: (none) */ |
| #define AIT_QUICKSETUP_2 14 /* control type: command, callback function: QuickCB */ |
| #define AIT_PFREQ 15 /* control type: numeric, callback function: (none) */ |
| #define AIT_QUICKSETUP_1 16 /* control type: command, callback function: QuickCB */ |
| #define AIT_INIT 17 /* control type: command, callback function: InitCB */ |
| #define AIT_READ 18 /* control type: command, callback function: ReadCB */ |
| #define AIT_UPDATEPLOTS 19 /* control type: radioButton, callback function: (none) */ |
| #define AIT_LOGY 20 /* control type: radioButton, callback function: (none) */ |
| #define AIT_ENABLEDOUTPUT 21 /* control type: radioButton, callback function: (none) */ |
| #define AIT_DEBUG 22 /* control type: radioButton, callback function: (none) */ |
| #define AIT_START 23 /* control type: command, callback function: StartCB */ |
| #define AIT_MAX 24 /* control type: numeric, callback function: (none) */ |
| #define AIT_CH 25 /* control type: numeric, callback function: ChangeChannelCB */ |
| #define AIT_ADCSUMGAIN 26 /* control type: numeric, callback function: (none) */ |
| #define AIT_NEVE 27 /* control type: numeric, callback function: (none) */ |
| #define AIT_ADCGAIN 28 /* control type: numeric, callback function: (none) */ |
| #define AIT_ADCINTEGRATIONTIME 29 /* control type: numeric, callback function: (none) */ |
| #define AIT_ADCTHRESHOLD 30 /* control type: numeric, callback function: (none) */ |
| #define AIT_XYCUT 31 /* control type: numeric, callback function: (none) */ |
| #define AIT_BIAS 32 /* control type: numeric, callback function: (none) */ |
| #define AIT_GRAPHXY 33 /* control type: graph, callback function: (none) */ |
| #define AIT_GETADCSUMGAIN 34 /* control type: numeric, callback function: (none) */ |
| #define AIT_GRAPHSUM 35 /* control type: graph, callback function: (none) */ |
| #define AIT_GRAPH 36 /* control type: graph, callback function: (none) */ |
| #define AIT_GETADCGAIN 37 /* control type: numeric, callback function: (none) */ |
| #define AIT_GETADCINTEGRATIONTIME 38 /* control type: numeric, callback function: (none) */ |
| #define AIT_GETADCTHRESHOLD 39 /* control type: numeric, callback function: (none) */ |
| #define AIT_BIASMON 40 /* control type: numeric, callback function: (none) */ |
| #define AIT_DAQTRANSFERRATE 41 /* control type: numeric, callback function: (none) */ |
| #define AIT_DAQTIMEMS 42 /* control type: numeric, callback function: (none) */ |
| #define AIT_DAQBLOCKSIZE 43 /* control type: numeric, callback function: (none) */ |
| #define AIT_CEVE 44 /* control type: numeric, callback function: (none) */ |
| #define AIT_STDIO 45 /* control type: textBox, callback function: (none) */ |
| #define AIT_TIMER 46 /* control type: timer, callback function: SetTimeoutCB */ |
| #define AIT_TRGTYPE 47 /* control type: ring, callback function: SetDiscriminatorTypeCB */ |
| #define AIT_RTIMER 48 /* control type: timer, 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 ChangeChannelCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK ExitCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK InitCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK OpenScanCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK QuickCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK ReadCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK ResetCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetAdcGainCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetAdcIntegrationTimeCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetAdcSumGainCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetAdcThresholdCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetBiasCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetDiscriminatorTypeCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK SetTimeoutCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK StartCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK StopCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| #ifdef __cplusplus |
| } |
| #endif |
| /cvi/instr/AitSipmDAQ/AitGui.uir |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/instr/AitSipmDAQ/AitInterface.c |
|---|
| 0,0 → 1,1103 |
| // NativeExportsConsumerApp.cpp : Defines the entry point for the console application. |
| // |
| #include <utility.h> |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include "AitMduManager.h" |
| #include "AitMduManager_DEF.h" |
| //Unhandled Exception: System.Runtime.InteropServices.MarshalDirectiveException: |
| //Cannot marshal 'return value': Invalid managed/unmanaged type combination. |
| #ifdef _CVI_ |
| #include <ansi_c.h> |
| #define AddMessageI(x) AddMessage("%s %d\n", #x, x); |
| #define AddMessageF(x) AddMessage("%s %f\n", #x, x); |
| #define AddMessageX(x) AddMessage("%s 0x%x\n", #x, x); |
| #define AddMessageS(x) AddMessage("%s %s\n", #x, x); |
| int sprintf_s(const char *dest, int len, const char *format, ...) { |
| va_list aptr; |
| int ret; |
| va_start(aptr, format); |
| ret = vsnprintf(dest, len, format, aptr); |
| va_end(aptr); |
| return(ret); |
| } |
| #endif |
| typedef unsigned short ushort; |
| typedef unsigned int uint; |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| __declspec(dllimport) void NE_Rainbow(); |
| #ifdef __cplusplus |
| } |
| #endif |
| #ifndef _CVI_ |
| #ifdef _DEBUG |
| #pragma comment(lib, "../NativeExports/bin/Debug/NativeExports.lib") |
| #else |
| #pragma comment(lib, "../NativeExports/bin/Release/NativeExports.lib") |
| #endif |
| #endif |
| //private MduManager SD4; |
| uint deviceId = 0; |
| int deviceIndex = -1; |
| int adcBufferLen; |
| ushort *adcBuffer; |
| int histograms[4][0xFFF]; |
| int histogramtotal[0xFFF * 4]; |
| int histogramTotalEvents = 0; |
| const double MONADC_SCALE = 65535.0; // 16-bit monitor ADC |
| const double DAC_SCALE = 65535.0; // 16-bit DAC |
| const double MONADC_VRANGE = 2.5; // 2.5V ADC voltage range |
| const double DISCR_OFFSETRANGE = 250.0; // +/- 250mV discriminator offset range |
| const double DISCR_THRESHOLDRANGE = 1000.0; // 0-1000mV discriminator threshold range |
| const double HV_IRANGE = 5.0; // 0-5.0mA HV current monitor range |
| const double HV_VRANGE = 80.0; // 0-80V HV voltage control range |
| const int INTEGRATOR_LSB = 10; // 10ns integrator time resolution |
| const double RAMPRATESCALE = 61036.0; // Ramp rate register setting = (rate in V/s) / RAMPRATESCALE |
| const char statusNoDevice[0xFF] = "No Device Connected"; |
| const char statusReconfig[0xFF] = "Reconfiguring Device ... "; |
| const char statusReset[0xFF] = "Resetting Device ... "; |
| const char statusReconnect[0xFF] = "Reconnecting Device ... "; |
| const char statusDone[0xFF] = "Done"; |
| const int CHANNELS = 4; // 4-Channel DAQ |
| const int ADCMAX = 4096; // 12-bit ADC |
| bool addTimeStamp = false; // updated by ReadRegisters |
| bool addEventCount = false; // updated by ReadRegisters |
| bool addChannelNum = false; // updated by ReadRegisters |
| int TIMESTAMP_LSB = 10; // 10ns time stamp resolution |
| void Sleep(int musec) { |
| Delay(musec/1000.); |
| } |
| /* |
| void AddMessage( const char * message) |
| { |
| printf("%s\n", message); |
| } |
| */ |
| int AddMessage(const char *format, ...) { |
| va_list aptr; |
| int ret; |
| char strbuf[0xFF]; |
| va_start(aptr, format); |
| ret = vsprintf(strbuf, format, aptr); |
| va_end(aptr); |
| // SetCtrlVal(p1h,P1_STDIO,strbuf); |
| printf("%s", strbuf); |
| return(ret); |
| } |
| //---------------------------------------- |
| // Utilities |
| //---------------------------------------- |
| ushort SetBit(ushort data, int bitIndex, bool bitValue) { |
| if (bitValue == true) |
| return (ushort)(data | (1 << bitIndex)); |
| else |
| return (ushort)(data & ~(1 << bitIndex)); |
| } |
| bool GetBit(int data, int bitIndex) { |
| return (data & (1 << bitIndex)) != 0; |
| } |
| ushort ReadSD4Register(int reg) { |
| return SD4_Read(deviceId, reg); |
| } |
| uint ReadSD4Register32(int addrHi, int addrLo) { |
| uint dataHi = (uint)SD4_Read(deviceId, addrHi); |
| uint dataLo = (uint)SD4_Read(deviceId, addrLo); |
| return (dataHi << 16) | dataLo; |
| } |
| void WriteSD4Register(int address, ushort data) { |
| SD4_Write(deviceId, address, data); |
| } |
| void WriteSD4Register32(int addrHi, int addrLo, uint data) { |
| WriteSD4Register(addrHi, (ushort)(data >> 16)); |
| WriteSD4Register(addrLo, (ushort)data); |
| } |
| void ReadModifyWrite(int reg, int bitIndex, bool bitValue) { |
| ushort regData = ReadSD4Register(reg); |
| regData = SetBit(regData, bitIndex, bitValue); |
| WriteSD4Register(reg, regData); |
| } |
| double LimitSetting(double value, double min, double max) { |
| double limited = value; |
| if (limited > max) limited = max; |
| if (limited < min) limited = min; |
| return limited; |
| } |
| int ReadAdcBuffer() |
| { |
| //if (adcBuffer == NULL) |
| // return -1; |
| int bytes = 0; |
| //printf("In\n%d\n%d\n%d\n", deviceId, ADDR_BUFFER, adcBufferLen); |
| adcBuffer = SD4_ReadUShortArray(deviceId, ADDR_BUFFER, adcBufferLen, &bytes); |
| return bytes/2; |
| } |
| int ReadAdcByteBuffer() |
| { |
| if (adcBuffer == NULL) |
| return -1; |
| int bytes = 0; |
| char * byteBuffer = SD4_ReadByteArray(deviceId, ADDR_BUFFER, adcBufferLen * 2, &bytes); |
| int byteIndex = 0; |
| int words = bytes / 2; |
| ushort dataword = 0; |
| for (int i = 0; i < words; i++) |
| { |
| dataword = (ushort)(byteBuffer[byteIndex++] << 8); |
| adcBuffer[i] = (ushort)(dataword | byteBuffer[byteIndex++]); |
| } |
| return words; |
| } |
| //---------------------------------------- |
| // Monitor ADC |
| //---------------------------------------- |
| double GetVoltage(int reg) { |
| return ReadSD4Register(reg) * MONADC_VRANGE / MONADC_SCALE; |
| } |
| double GetDetectorTemperature() { |
| // Temperature = 500mV + 1mV per degree C |
| return (GetVoltage(ADDR_BASE_TEMPERATURE) - 0.5) / 0.01; |
| } |
| double GetHvVoltage(int reg) { |
| return GetVoltage(reg) / MONADC_VRANGE * HV_VRANGE; |
| } |
| double GetHvCurrentInUa() { |
| // 2.5V ADC input voltage = 5000 microamps |
| return GetVoltage(ADDR_HV_IMON) * 2000.0; |
| } |
| double GetVoltage75(int reg) { |
| // 2.5V ADC input voltage = 7.5V monitor voltage |
| return GetVoltage(reg) * 3.0; |
| } |
| //---------------------------------------- |
| // Discriminator, Sum |
| //---------------------------------------- |
| void SetSumGain(int gain) { |
| ushort csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| bool g1 = GetBit(gain, 0); |
| bool g2 = GetBit(gain, 1); |
| bool g3 = GetBit(gain, 2); |
| bool g4 = GetBit(gain, 3); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_SUMGAIN1, g1); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_SUMGAIN2, g2); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_SUMGAIN3, g3); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_SUMGAIN4, g4); |
| WriteSD4Register(ADDR_CSR_DETECTOR, (ushort)csrDetector); |
| } |
| void SetSumCoupling(bool acCoupling) { |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_SUMCOUPLING, acCoupling); |
| } |
| void SetThreshold(double thresholdInMillivolts) { |
| thresholdInMillivolts = LimitSetting(thresholdInMillivolts, -DISCR_THRESHOLDRANGE, DISCR_THRESHOLDRANGE); |
| WriteSD4Register(ADDR_DISCR_THRESHOLD, (ushort)(thresholdInMillivolts * DAC_SCALE / DISCR_THRESHOLDRANGE)); |
| } |
| double GetThreshold() { |
| return ReadSD4Register(ADDR_DISCR_THRESHOLD) / DAC_SCALE * DISCR_THRESHOLDRANGE; |
| } |
| double GetSumOffsetInMv() { |
| // Sum offsets are with respect to the positive sum output polarity. |
| return (ReadSD4Register(ADDR_DISCR_OFFSET) / DAC_SCALE * (DISCR_OFFSETRANGE * 2)) - DISCR_OFFSETRANGE; |
| } |
| void SetSumOffset(double milliVolts) { |
| // Sum offsets are with respect to the positive sum output polarity. |
| // Actual output offset is multiplied by the selectable gain stage. |
| WriteSD4Register(ADDR_DISCR_OFFSET, (ushort)((milliVolts + DISCR_OFFSETRANGE) * DAC_SCALE / (DISCR_OFFSETRANGE * 2))); |
| } |
| //---------------------------------------- |
| // Trigger |
| //---------------------------------------- |
| void SetTriggerInterval(int triggerInterval) { |
| WriteSD4Register32(ADDR_TG_INTERVALHI, ADDR_TG_INTERVALLO, (uint)(triggerInterval / INTEGRATOR_LSB)); |
| } |
| void SetTriggerBurst(int triggerBurst) { |
| WriteSD4Register32(ADDR_TG_COUNTHI, ADDR_TG_COUNTLO, (uint)triggerBurst); |
| } |
| void EnableTrigger(int bitIndex) { |
| WriteSD4Register(ADDR_CSR_TRIGGER, SetBit(0, bitIndex, true)); |
| } |
| void DisableTriggers() { |
| WriteSD4Register(ADDR_CSR_TRIGGER, 0); |
| } |
| void SetDeadTime(int deadTimeInNs) { |
| WriteSD4Register(ADDR_DEADTIME, (ushort)(deadTimeInNs / INTEGRATOR_LSB)); |
| } |
| //---------------------------------------- |
| // Integrators, ADCs |
| //---------------------------------------- |
| void SetIntegrationTime(int integrationTime) { |
| WriteSD4Register(ADDR_ITIME, (ushort)(integrationTime / INTEGRATOR_LSB)); |
| } |
| int GetIntegrationTime() { |
| return ReadSD4Register(ADDR_ITIME) * INTEGRATOR_LSB; |
| } |
| void SetAdcCoupling(bool acCoupling) { |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_ADCCOUPLING, acCoupling); |
| } |
| void ResetAdc(bool reset) { |
| ushort cmd = 0; |
| cmd = SetBit(cmd, BIT_CSR_MAIN_ADCRESET, reset); |
| WriteSD4Register(ADDR_CSR_MAIN, cmd); |
| } |
| double GetAdcOffsetInMv(int reg) { |
| // ADC offset polarity is with respect to the positive ADC polarity (integrator output), not the main negative input signal polarity. |
| // Actual output offset is multiplied by the selectable gain stage. |
| return DISCR_OFFSETRANGE - (ReadSD4Register(reg) / DAC_SCALE * (DISCR_OFFSETRANGE * 2)); |
| } |
| void SetAdcOffset(int reg, double milliVolts) { |
| // ADC offset polarity is with respect to the positive ADC polarity (integrator output), not the main negative input signal polarity. |
| // Actual output offset is multiplied by the selectable gain stage. |
| WriteSD4Register(reg, (ushort)((DISCR_OFFSETRANGE - milliVolts) * DAC_SCALE / (DISCR_OFFSETRANGE * 2))); |
| } |
| //---------------------------------------- |
| // Event ID |
| //---------------------------------------- |
| void AddEventCount(bool addEventCount) { |
| ReadModifyWrite(ADDR_EVENTID, BIT_EVENTID_COUNT, addEventCount); |
| } |
| void AddTimeStamp(bool addTimeStamp) { |
| ReadModifyWrite(ADDR_EVENTID, BIT_EVENTID_TIME, addTimeStamp); |
| } |
| void AddChannelNumber(bool addChannelNumber) { |
| ReadModifyWrite(ADDR_EVENTID, BIT_EVENTID_CHNUM, addChannelNumber); |
| } |
| //---------------------------------------- |
| // Detector VA |
| //---------------------------------------- |
| void SetDetectorVaOn(bool on) { |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_VAENABLE, on); |
| } |
| void SetDetectorVaHiRange(bool range) { |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_VAHIRNG, range); |
| } |
| //---------------------------------------- |
| // High Voltage |
| //---------------------------------------- |
| void SetHvCurrentLimit(double milliamps) { |
| milliamps = LimitSetting(milliamps, 0, HV_IRANGE); |
| WriteSD4Register(ADDR_HV_ILIMIT, (ushort)(milliamps * DAC_SCALE / HV_IRANGE)); |
| } |
| void SetHvVoltage(int reg, double volts) { |
| volts = LimitSetting(volts, 0, HV_VRANGE); |
| WriteSD4Register(reg, (ushort)(volts * DAC_SCALE / HV_VRANGE)); |
| } |
| double GetHvIlimitSetting() { |
| return ReadSD4Register(ADDR_HV_ILIMIT) / DAC_SCALE * HV_IRANGE; |
| } |
| double GetHvVoltageSetting() { |
| return ReadSD4Register(ADDR_HV_CTRL) / DAC_SCALE * HV_VRANGE; |
| } |
| void SetHvOn(bool hvOn) { |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_HVENABLE, hvOn); |
| } |
| void SetMaximumHvSetting(double volts) { |
| SetHvVoltage(ADDR_HV_MAX, volts); |
| } |
| void CycleHvReset() { |
| // CAUTION: Holding HV in reset will force it to ignore the current limit |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_HVRESET, true); |
| ReadModifyWrite(ADDR_CSR_DETECTOR, BIT_CSR_DET_HVRESET, false); |
| } |
| void SetRampRate(double voltsPerSecond) { |
| WriteSD4Register(ADDR_HV_RAMPRATE, (ushort)(RAMPRATESCALE / voltsPerSecond)); |
| } |
| double GetRampRate() { |
| return RAMPRATESCALE / (ReadSD4Register(ADDR_HV_RAMPRATE) + 1); |
| } |
| void SetAdcGain(int gain) { |
| ushort csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| bool g1 = GetBit(gain, 0); |
| bool g2 = GetBit(gain, 1); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_ADCGAIN1, g1); |
| csrDetector = SetBit(csrDetector, BIT_CSR_DET_ADCGAIN2, g2); |
| WriteSD4Register(ADDR_CSR_DETECTOR, (ushort)csrDetector); |
| } |
| void SetAdcOffsets(int offsetInMv) { |
| //nudOffset1.Value = offsetInMv; |
| //nudOffset2.Value = offsetInMv; |
| //nudOffset3.Value = offsetInMv; |
| //nudOffset4.Value = offsetInMv; |
| SetAdcOffset(ADDR_OFFSET1, offsetInMv); |
| SetAdcOffset(ADDR_OFFSET2, offsetInMv); |
| SetAdcOffset(ADDR_OFFSET3, offsetInMv); |
| SetAdcOffset(ADDR_OFFSET4, offsetInMv); |
| } |
| void QuickSetupContinuous() { |
| // Set ADC reset |
| ResetAdc(true); |
| // Clear ADC reset |
| ResetAdc(false); |
| // Set trigger dead time to 200ns |
| SetDeadTime(200); |
| // Set event ID |
| AddTimeStamp(true); |
| AddEventCount(true); |
| AddChannelNumber(true); |
| // Enable detector amplifier voltage |
| SetDetectorVaHiRange(false); |
| SetDetectorVaOn(true); |
| /* |
| // Set HV current limit |
| double iLimit = 2.5; |
| nudHvIlimit.Value = (decimal)iLimit; |
| SetHvCurrentLimit(iLimit); |
| // Reset any HV faults |
| CycleHvReset(); |
| // Enable bias voltage |
| SetHvOn(false); |
| SetHvOn(true); |
| // Set bias voltage |
| double hvVoltage = 30.0; |
| nudHvVoltage.Value = (decimal)hvVoltage; |
| SetHvVoltage(ADDR_HV_CTRL, hvVoltage); |
| */ |
| // Set integration time |
| int integrationTime = 350; |
| //nudIntegrationTime.Value = integrationTime; |
| SetIntegrationTime(integrationTime); |
| // Set discriminator threshold |
| int threshold = 50; |
| //nudThreshold.Value = threshold; |
| SetThreshold(threshold); |
| // Set sum coupling |
| SetSumCoupling(true); |
| // Set sum gain |
| int sumGain = 3; |
| //nudSumGain.Value = sumGain; |
| SetSumGain(sumGain); |
| // Set sum offset |
| int offset = 0; |
| //nudSumOffset.Value = offset; |
| SetSumOffset(offset); |
| // Set ADC coupling |
| SetAdcCoupling(false); |
| // Set ADC gains |
| int gain = 1; |
| //nudAdcGain.Value = gain; |
| SetAdcGain(gain); |
| // Set all ADC offsets |
| SetAdcOffsets(5); |
| // Set internal trigger interval |
| int triggerInterval = 1000; |
| //nudTriggerInterval.Value = triggerInterval; |
| SetTriggerInterval(triggerInterval); |
| // Enable continuous trigger |
| EnableTrigger(BIT_CSR_TRIG_CONTINUOUS); |
| // Begin continuous acquisition |
| //nudEventsPerAcquisition.Value = 50000; |
| //cbAcquireContinuous.Checked = true; |
| // Update histogram offsets |
| //SetAllHistogramOffsets(0); |
| } |
| void QuickSetupDiscriminator() { |
| // Set ADC reset |
| ResetAdc(true); |
| // Clear ADC reset |
| ResetAdc(false); |
| // Set trigger dead time to 300ns |
| SetDeadTime(500); |
| // Set event ID |
| AddTimeStamp(true); |
| AddEventCount(true); |
| AddChannelNumber(true); |
| // Enable detector amplifier voltage |
| SetDetectorVaHiRange(true); |
| SetDetectorVaOn(true); |
| // Set HV current limit |
| double iLimit = 2.5; |
| //nudHvIlimit.Value = (decimal)iLimit; |
| SetHvCurrentLimit(iLimit); |
| // Reset any HV faults |
| CycleHvReset(); |
| // Enable bias voltage |
| SetHvOn(false); |
| SetHvOn(true); |
| // Set bias voltage |
| double hvVoltage = 28.0; |
| //nudHvVoltage.Value = (decimal)hvVoltage; |
| SetHvVoltage(ADDR_HV_CTRL, hvVoltage); |
| // Set integration time |
| int integrationTime = 350; |
| //nudIntegrationTime.Value = integrationTime; |
| SetIntegrationTime(integrationTime); |
| // Set discriminator threshold |
| int threshold = 50; |
| //nudThreshold.Value = threshold; |
| SetThreshold(threshold); |
| // Set sum coupling |
| SetSumCoupling(true); |
| // Set sum gain |
| int sumGain = 3; |
| //nudSumGain.Value = sumGain; |
| SetSumGain(sumGain); |
| // Set sum offset |
| int offset = 0; |
| //nudSumOffset.Value = offset; |
| SetSumOffset(offset); |
| // Set ADC coupling |
| SetAdcCoupling(false); |
| // Set ADC gains |
| int gain = 1; |
| //nudAdcGain.Value = gain; |
| SetAdcGain(gain); |
| // Set all ADC offsets |
| SetAdcOffsets(5); |
| // Clear histograms |
| //ClearHistograms(); |
| // Enable discriminator trigger |
| EnableTrigger(BIT_CSR_TRIG_DISCR); |
| // Begin continuous acquisition |
| //nudEventsPerAcquisition.Value = 1000; |
| //cbAcquireContinuous.Checked = true; |
| // Update histogram offsets |
| //SetAllHistogramOffsets(0); |
| } |
| void QuickSetupTriggerOff() { |
| //cbAcquireContinuous.Checked = false; |
| DisableTriggers(); |
| SetHvOn(false); |
| SetDetectorVaOn(false); |
| } |
| void ReadRegisters() { |
| if (deviceIndex < 0) |
| return; |
| // Voltages |
| double lHvImon = GetHvCurrentInUa(); |
| double HvVmon = GetHvVoltage(ADDR_HV_VMON); |
| double HvVmax = GetHvVoltage(ADDR_HV_MAX); |
| double lDetPva = GetVoltage75(ADDR_BASE_PVA); |
| double lDetNva = GetVoltage75(ADDR_BASE_NVA); |
| double lPva = GetVoltage75(ADDR_MAIN_PVA); |
| double lNva = GetVoltage75(ADDR_MAIN_NVA); |
| double l12V = GetVoltage(ADDR_MAIN_P12); |
| double l33V = GetVoltage75(ADDR_MAIN_P33); |
| double l50V = GetVoltage75(ADDR_MAIN_P50); |
| double Temperature = GetDetectorTemperature(); |
| double lRampRate = GetRampRate(); |
| AddMessageF(lHvImon); |
| AddMessageF(HvVmon); |
| AddMessageF(HvVmax); |
| AddMessageF(lDetPva); |
| AddMessageF(lDetNva); |
| AddMessageF(lPva); |
| AddMessageF(lNva); |
| AddMessageF(l12V); |
| AddMessageF(l33V); |
| AddMessageF(l50V); |
| AddMessageF(Temperature); |
| AddMessageF(lRampRate); |
| // Integration time |
| int lItime = GetIntegrationTime(); |
| // Buffer memory used |
| int lBufferWords = ReadSD4Register(ADDR_BUFFERWORDS); |
| // Offsets |
| double lOffset1 = GetAdcOffsetInMv(ADDR_OFFSET1); |
| double lOffset2 = GetAdcOffsetInMv(ADDR_OFFSET2); |
| double lOffset3 = GetAdcOffsetInMv(ADDR_OFFSET3); |
| double lOffset4 = GetAdcOffsetInMv(ADDR_OFFSET4); |
| double lSumOffset = GetSumOffsetInMv(); |
| // Main CSR |
| int csrMain = ReadSD4Register(ADDR_CSR_MAIN); |
| int lPvaStatus = GetBit(csrMain, BIT_CSR_MAIN_PVA); |
| int lNvaStatus = GetBit(csrMain, BIT_CSR_MAIN_NVA); |
| int l12vStatus = GetBit(csrMain, BIT_CSR_MAIN_P12); |
| int l33vStatus = GetBit(csrMain, BIT_CSR_MAIN_P33); |
| int l5vStatus = GetBit(csrMain, BIT_CSR_MAIN_P50); |
| AddMessageF(lOffset1); |
| AddMessageF(lOffset2); |
| AddMessageF(lOffset3); |
| AddMessageF(lOffset4); |
| AddMessageF(lSumOffset); |
| AddMessageX(csrMain); |
| AddMessageX(lNvaStatus); |
| AddMessageX(lNvaStatus); |
| AddMessageX(l12vStatus); |
| AddMessageX(l33vStatus); |
| AddMessageX(l5vStatus); |
| AddMessageI(lBufferWords); |
| AddMessageI(lItime); |
| // Trigger CSR |
| // Assumes only one trigger source is active |
| char lTriggerSource[0xFF]=""; |
| int csrTrigger = ReadSD4Register(ADDR_CSR_TRIGGER); |
| if (GetBit(csrTrigger, BIT_CSR_TRIG_CONTINUOUS)) |
| sprintf_s(lTriggerSource, 0xFF, "CONTINUOUS"); |
| else if (GetBit(csrTrigger, BIT_CSR_TRIG_BURST)) |
| sprintf_s(lTriggerSource, 0xFF, "BURST"); |
| else if (GetBit(csrTrigger, BIT_CSR_TRIG_DISCR)) |
| sprintf_s(lTriggerSource, 0xFF, "DISCRIMINATOR"); |
| else if (GetBit(csrTrigger, BIT_CSR_TRIG_EXTERNAL)) |
| sprintf_s(lTriggerSource, 0xFF, "EXTERNAL"); |
| else |
| sprintf_s(lTriggerSource, 0xFF, "OFF"); |
| // Event ID CSR |
| int csrEventId = ReadSD4Register(ADDR_EVENTID); |
| addTimeStamp = GetBit(csrEventId, BIT_EVENTID_TIME); |
| addEventCount = GetBit(csrEventId, BIT_EVENTID_COUNT); |
| addChannelNum = GetBit(csrEventId, BIT_EVENTID_CHNUM); |
| //lTimeStamp.Text = addTimeStamp ? "+" : ""; |
| //lEventCount.Text = addEventCount ? "+" : ""; |
| //lChannelNum.Text = addChannelNum ? "+" : ""; |
| AddMessageS(lTriggerSource); |
| AddMessageI(addTimeStamp); |
| AddMessageI(addEventCount); |
| AddMessageI(addEventCount); |
| // Trigger generator |
| int lTriggerInterval = ReadSD4Register32(ADDR_TG_INTERVALHI, ADDR_TG_INTERVALLO) * 10; |
| int lTrigCount = ReadSD4Register32(ADDR_TG_COUNTHI, ADDR_TG_COUNTLO); |
| ushort dum = 0; |
| WriteSD4Register(ADDR_TC_COUNTLO, dum); // latch counters by writing to any counter register |
| int lTriggers = ReadSD4Register32(ADDR_TC_COUNTHI, ADDR_TC_COUNTLO); |
| int lTriggerRate = ReadSD4Register32(ADDR_TC_RATEHI, ADDR_TC_RATELO); |
| int lAdcConversions = ReadSD4Register32(ADDR_CONV_COUNTHI, ADDR_CONV_COUNTLO); |
| double lThreshold = GetThreshold(); |
| double lHvIlimit = GetHvIlimitSetting(); |
| double lHvVoltage = GetHvVoltageSetting(); |
| AddMessageI(lTriggerInterval); |
| AddMessageI(lTrigCount); |
| AddMessageI(lTriggers); |
| AddMessageI(lTriggerRate); |
| AddMessageI(lAdcConversions); |
| AddMessageF(lThreshold); |
| AddMessageF(lHvIlimit); |
| AddMessageF(lHvVoltage); |
| // Detector CSR |
| int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
| int lHvEnabled = GetBit(csrDetector, BIT_CSR_DET_HVENABLE); |
| int lHvOn = GetBit(csrDetector, BIT_CSR_DET_HVGOOD); |
| int lSumCoupling = GetBit(csrDetector, BIT_CSR_DET_SUMCOUPLING); |
| int lSumGain = |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
| int lAdcCoupling = GetBit(csrDetector, BIT_CSR_DET_ADCCOUPLING); |
| int lAdcGain = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
| ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
| int lAmpEnabled = GetBit(csrDetector, BIT_CSR_DET_VAENABLE); |
| int lAmpLevel = GetBit(csrDetector, BIT_CSR_DET_VAHIRNG); |
| int lDetPvaStatus = GetBit(csrDetector, BIT_CSR_DET_PVAGOOD); |
| int lDetNvaStatus = GetBit(csrDetector, BIT_CSR_DET_NVAGOOD); |
| int lTemperatureOn = GetBit(csrDetector, BIT_CSR_DET_TEMPVALID); |
| AddMessageI(lHvEnabled); |
| AddMessageI(lHvOn); |
| AddMessageI(lSumCoupling); |
| AddMessageI(lSumGain); |
| AddMessageI(lAdcCoupling); |
| AddMessageI(lAdcGain ); |
| AddMessageI(lAmpEnabled); |
| AddMessageI(lAmpLevel); |
| AddMessageI(lDetPvaStatus ); |
| AddMessageI(lDetNvaStatus); |
| AddMessageI(lTemperatureOn); |
| } |
| //---------------------------------------- |
| // Message list |
| //---------------------------------------- |
| //---------------------------------------- |
| // MDU Events |
| //---------------------------------------- |
| /* |
| private void AitDeviceAttached(object sender, EventArgs e) |
| { |
| MduManager.DeviceChangedEventArgs aitEventArgs = e as MduManager.DeviceChangedEventArgs; |
| AddMessage(String.Format("Attached : Index={0}, ID={1:X8}", aitEventArgs.DeviceIndex, aitEventArgs.DeviceId)); |
| UpdateDeviceList(); |
| } |
| private void AitDeviceRemoved(object sender, EventArgs e) |
| { |
| MduManager.DeviceChangedEventArgs aitEventArgs = e as MduManager.DeviceChangedEventArgs; |
| AddMessage(String.Format("Removed : Index={0}, ID={1:X8}", aitEventArgs.DeviceIndex, aitEventArgs.DeviceId)); |
| UpdateDeviceList(); |
| } |
| */ |
| //---------------------------------------- |
| // Device Control |
| //---------------------------------------- |
| void GetDeviceId() { |
| deviceIndex = 0; |
| deviceId = 1; |
| /* |
| if (tscbDeviceList.SelectedIndex >= 0) |
| { |
| deviceIndex = 0; // tscbDeviceList.SelectedIndex; |
| deviceId = 1; //UInt32.Parse((string)tscbDeviceList.SelectedItem, System.Globalization.NumberStyles.HexNumber); |
| } |
| else |
| { |
| deviceIndex = -1; |
| deviceId = 0; |
| } |
| */ |
| } |
| int UpdateDeviceList() |
| { |
| deviceIndex = -1; |
| deviceId = 0; |
| int deviceCount = 0; |
| uint * devIds = SD4_GetDeviceList(&deviceCount); |
| for (int i = 0; i < deviceCount; i++) { |
| printf("Device %d = 0x%8x\t", i, devIds[i]); |
| deviceId = devIds[i]; |
| deviceIndex = i; |
| } |
| return deviceCount; |
| } |
| void ResetDevice() { |
| if (deviceIndex >= 0) { |
| AddMessage(statusReset); |
| SD4_ResetFpga(deviceIndex); |
| Sleep(500); |
| UpdateDeviceList(); |
| AddMessage(statusReset); |
| AddMessage(statusDone); |
| } |
| else |
| AddMessage(statusNoDevice); |
| } |
| void ReconnectDevice() { |
| if (deviceIndex >= 0) { |
| AddMessage(statusReconnect); |
| SD4_Reconnect(deviceIndex); |
| Sleep(500); |
| AddMessage(statusReconnect); |
| AddMessage(statusDone); |
| } |
| else |
| AddMessage(statusNoDevice); |
| } |
| void ReconfigureDevice() { |
| if (deviceIndex >= 0) { |
| AddMessage(statusReconfig); |
| SD4_Reconfigure(deviceIndex); |
| Sleep(500); |
| SD4_ResetFpga(deviceIndex); |
| UpdateDeviceList(); |
| AddMessage(statusReconfig); |
| AddMessage(statusDone); |
| } |
| else |
| AddMessage(statusNoDevice); |
| } |
| //---------------------------------------- |
| // Initialize Device Connection |
| //---------------------------------------- |
| void InitializeConnection() { |
| int ndevices = 0; |
| unsigned int * devlist = SD4_FindDevices(&ndevices); |
| printf("Found %d devices\t", ndevices); |
| //SD4.DeviceAttached += new EventHandler(AitDeviceAttached); |
| //SD4.DeviceRemoved += new EventHandler(AitDeviceRemoved); |
| //tscbDeviceList.SelectedIndexChanged += new EventHandler(tscbDeviceList_SelectedIndexChanged); |
| printf("Updated devices %d\n", UpdateDeviceList()); |
| // Set above the maximum bias voltage to prevent accidental over-bias. |
| // For example for 30V bias, set to 32V. For 70V bias, set to 72V |
| SetMaximumHvSetting(32.0); |
| // Set TTL port to 0 |
| WriteSD4Register(ADDR_TTLPORT, 0); |
| // Set HV ramp rate to 20 V/s |
| SetRampRate(20); |
| // 1 second register scan interval |
| //SetupTimer(1.0); |
| } |
| int GetAdcEventSize() { |
| int eventSize = CHANNELS; |
| if (addTimeStamp == true) |
| eventSize += 3; // 3 16-bit words for time stamp |
| if (addEventCount == true) |
| eventSize += 2; // 2 16-bit words for event count |
| return eventSize; |
| } |
| int GetEventPosition(int eventNum) { |
| int adcBoardEventSize = GetAdcEventSize(); |
| return adcBoardEventSize * eventNum; |
| } |
| ushort ExtractAdcData(int eventNum, int channel) { |
| int index = GetEventPosition(eventNum) + channel; |
| return adcBuffer[index]; |
| } |
| long ExtractTimeStamp(int eventNum) { |
| int index = GetEventPosition(eventNum) + CHANNELS; |
| long timestamp = 0; |
| for (int i = 0; i < 3; i++) |
| timestamp = (timestamp << 16) | adcBuffer[index++]; |
| return timestamp; |
| } |
| int ExtractEventCount(int eventNum) { |
| int offset = 0; |
| if (addTimeStamp == true) |
| offset += 3; |
| int index = GetEventPosition(eventNum) + CHANNELS + offset; |
| int eventCount = adcBuffer[index]; |
| eventCount = (eventCount << 16) | adcBuffer[index + 1]; |
| return eventCount; |
| } |
| void ShowEvent(int eventNumber) { |
| if (eventNumber < 1) |
| return; |
| eventNumber--; |
| char lAdcTimeStamp[0xFF]=""; |
| char lAdcAbsTimeStamp[0xFF]=""; |
| char lAdcEventCount[0xFF]=""; |
| //tbAdcData.Clear(); |
| int eventPosition = GetEventPosition(eventNumber); |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| int data = ExtractAdcData(eventNumber, channel); |
| AddMessage("AdcData event %d channel:%d data:%d\n", eventNumber, channel + 1, data); |
| } |
| if (addTimeStamp == true) { |
| long reference = ExtractTimeStamp(0); |
| long timeStamp = ExtractTimeStamp(eventNumber); |
| sprintf_s(lAdcTimeStamp, 0xFF, "%d", ((timeStamp - reference) * TIMESTAMP_LSB)); |
| sprintf_s(lAdcAbsTimeStamp, 0xFF, "%d", (timeStamp * TIMESTAMP_LSB)); |
| } |
| else { |
| sprintf_s(lAdcTimeStamp, 0xFF, "%s", "----"); |
| sprintf_s(lAdcAbsTimeStamp, 0xFF, "%s", "----"); |
| } |
| if (addEventCount == true) { |
| sprintf_s(lAdcEventCount, 0xFF, "%d", ExtractEventCount(eventNumber)); |
| } |
| else { |
| sprintf_s(lAdcEventCount, 0xFF, "%s", "----"); |
| } |
| //SetTextboxToTop(tbAdcData); |
| } |
| int BlockTransferTime() { |
| return SD4_BlockTransferTime(); |
| } |
| void InitInterface(int events) { |
| adcBufferLen = GetAdcEventSize() * events; |
| //adcBuffer = (ushort *)malloc(sizeof(ushort) * adcBufferLen); |
| /* |
| for (int i = 0; i < 0xFFF; i++) { |
| for (int j = 0; j < 4; j++) histograms[j][i] = 0; |
| } |
| for (int i = 0; i < 4 * 0xFFF; i++) { |
| histogramtotal[i] = 0; |
| } |
| */ |
| histogramTotalEvents = 0; |
| } |
| int Acquire(int events) { |
| //InitializeConnection(); |
| // Acquire |
| InitInterface(events); |
| //int wordsAcquired = ReadAdcByteBuffer(); // use only to test byte buffer read operation |
| int wordsAcquired = ReadAdcBuffer(); |
| if (wordsAcquired != adcBufferLen) { |
| char msg[0xFF]; |
| AddMessage("ERROR: Timeout with possible data loss (%d/%d words received; Block Error = %d)\n", wordsAcquired, adcBufferLen, SD4_BlockError()); |
| return 0; |
| } |
| /* |
| lTransferRate.Text = String.Format("{0:f2}", transferRate); |
| lAcquisitionSize.Text = String.Format("{0:f2}", blocksize / 1e6); // block size in MB |
| lAcquisitionTime.Text = String.Format("{0:f2}", microseconds / 1e6); |
| */ |
| return events; |
| } |
| void GetStatistics(int events) { |
| ushort rawAdcData = 0; |
| ushort adcData = 0; |
| int channelReceived = 0; |
| int channelExpected = 0; |
| bool includeSaturated = 0; // cbIncludeSaturated.Checked; |
| ushort max[CHANNELS]; |
| ushort min[CHANNELS]; |
| ushort average[CHANNELS]; |
| int total[CHANNELS]; |
| for (int i = 0; i < CHANNELS; i++) { |
| min[i] = 0xFFFF; |
| max[i] = 0; |
| total[i] = 0; |
| } |
| for (int eventNum = 0; eventNum < events; eventNum++) { |
| int sum = 0; |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| rawAdcData = ExtractAdcData(eventNum, channel); |
| if (addChannelNum == true) { |
| channelReceived = (rawAdcData >> 12) & 0xF; |
| channelExpected = (channel & 0xF); |
| if (channelReceived != channelExpected) { |
| AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived); |
| //EnableRegisterScanTimer(true); |
| return; |
| } |
| } |
| adcData = (ushort)(rawAdcData & 0x0FFF); // remove channel number |
| if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2)))) |
| histograms[channel][adcData]++; |
| total[channel] = total[channel] + adcData; |
| if (adcData > max[channel]) |
| max[channel] = adcData; |
| else if (adcData < min[channel]) |
| min[channel] = adcData; |
| sum += adcData; |
| } |
| histogramtotal[sum]++; |
| histogramTotalEvents++; |
| } |
| //tbAdcStatistics.Clear(); |
| for (int channel = 0; channel < CHANNELS; channel++) { |
| average[channel] = (ushort)(total[channel] / events); |
| AddMessage(" {channel:%d} : {min:0x%d} {max:0x%d} {max-min:%d} {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]); |
| //if (channel < (CHANNELS - 1)) |
| // tbAdcStatistics.AppendText(Environment.NewLine); |
| } |
| //SetTextboxToTop(tbAdcStatistics); |
| } |
| void SetupAcquisition(int neve) { |
| //EnableRegisterScanTimer(false); |
| //nudEventSelect.Minimum = 0; |
| //nudEventSelect.Maximum = 0; |
| int eventsAcquired = Acquire(neve); |
| if (eventsAcquired < 1){ |
| printf("Acquired events %d\n", eventsAcquired); |
| return; |
| } |
| GetStatistics(eventsAcquired); |
| ShowEvent(1); |
| //ShowHistograms(); |
| //nudEventSelect.Minimum = 1; |
| //nudEventSelect.Maximum = eventsAcquired; |
| //EnableRegisterScanTimer(true); |
| } |
| int _tmain(int argc, char **argv) { |
| int events = 1000; |
| InitInterface(events); |
| SetupAcquisition(1); |
| //NE_Rainbow(); |
| printf("xxx\n"); |
| //NE_Call(9); |
| int b = 9; |
| int k = 0;//NE_Func(b); |
| printf("yyy %d %d\n", b, k); |
| return 0; |
| } |
| /cvi/instr/AitSipmDAQ/AitInterface.h |
|---|
| 0,0 → 1,106 |
| #ifndef AITINTERFACE_H |
| #define AITINTERFACE_H |
| void SetupAcquisition(int neve); |
| void GetStatistics(int events); |
| int Acquire(int events); |
| void InitInterface(int events); |
| void ShowEvent(int eventNumber); |
| int ExtractEventCount(int eventNum); |
| long ExtractTimeStamp(int eventNum); |
| unsigned short ExtractAdcData(int eventNum,int channel); |
| int GetEventPosition(int eventNum); |
| int GetAdcEventSize(); |
| void InitializeConnection(); |
| void ReconfigureDevice(); |
| void ReconnectDevice(); |
| void ResetDevice(); |
| int UpdateDeviceList(); |
| void GetDeviceId(); |
| void ReadRegisters(); |
| void QuickSetupTriggerOff(); |
| void QuickSetupDiscriminator(); |
| void QuickSetupContinuous(); |
| void SetAdcOffsets(int offsetInMv); |
| void SetAdcGain(int gain); |
| double GetRampRate(); |
| void SetRampRate(double voltsPerSecond); |
| void CycleHvReset(); |
| void SetMaximumHvSetting(double volts); |
| void SetHvOn(bool hvOn); |
| double GetHvVoltageSetting(); |
| double GetHvIlimitSetting(); |
| void SetHvVoltage(int reg,double volts); |
| void SetHvCurrentLimit(double milliamps); |
| void SetDetectorVaHiRange(bool range); |
| void SetDetectorVaOn(bool on); |
| void AddChannelNumber(bool addChannelNumber); |
| extern bool addTimeStamp; |
| void AddTimeStamp(bool addTimeStamp); |
| extern bool addEventCount; |
| void AddEventCount(bool addEventCount); |
| void SetAdcOffset(int reg,double milliVolts); |
| double GetAdcOffsetInMv(int reg); |
| void ResetAdc(bool reset); |
| void SetAdcCoupling(bool acCoupling); |
| int GetIntegrationTime(); |
| void SetIntegrationTime(int integrationTime); |
| void SetDeadTime(int deadTimeInNs); |
| void DisableTriggers(); |
| void EnableTrigger(int bitIndex); |
| void SetTriggerBurst(int triggerBurst); |
| void SetTriggerInterval(int triggerInterval); |
| void SetSumOffset(double milliVolts); |
| double GetSumOffsetInMv(); |
| double GetThreshold(); |
| void SetThreshold(double thresholdInMillivolts); |
| void SetSumCoupling(bool acCoupling); |
| void SetSumGain(int gain); |
| double GetVoltage75(int reg); |
| double GetHvCurrentInUa(); |
| double GetHvVoltage(int reg); |
| double GetDetectorTemperature(); |
| double GetVoltage(int reg); |
| int ReadAdcByteBuffer(); |
| int ReadAdcBuffer(); |
| int BlockTransferTime(); |
| double LimitSetting(double value,double min,double max); |
| void ReadModifyWrite(int reg,int bitIndex,bool bitValue); |
| void WriteSD4Register32(int addrHi,int addrLo,unsigned int data); |
| void WriteSD4Register(int address,unsigned short data); |
| unsigned int ReadSD4Register32(int addrHi,int addrLo); |
| unsigned short ReadSD4Register(int reg); |
| bool GetBit(int data,int bitIndex); |
| unsigned short SetBit(unsigned short data,int bitIndex,bool bitValue); |
| void Sleep(int musec); |
| extern int TIMESTAMP_LSB; |
| extern bool addChannelNum; |
| extern const int ADCMAX; |
| extern const int CHANNELS; |
| extern const char statusDone[0xFF]; |
| extern const char statusReconnect[0xFF]; |
| extern const char statusReset[0xFF]; |
| extern const char statusReconfig[0xFF]; |
| extern const char statusNoDevice[0xFF]; |
| extern const double RAMPRATESCALE; |
| extern const int INTEGRATOR_LSB; |
| extern const double HV_VRANGE; |
| extern const double HV_IRANGE; |
| extern const double DISCR_THRESHOLDRANGE; |
| extern const double DISCR_OFFSETRANGE; |
| extern const double MONADC_VRANGE; |
| extern const double DAC_SCALE; |
| extern const double MONADC_SCALE; |
| extern int histogramTotalEvents; |
| extern int histogramtotal[0xFFF *4]; |
| extern int histograms[4][0xFFF]; |
| extern unsigned short *adcBuffer; |
| extern int adcBufferLen; |
| extern int deviceIndex; |
| extern unsigned int deviceId; |
| #if defined(_CVI_) |
| int sprintf_s(const char *dest,int len,const char *format,...); |
| #endif |
| int AddMessage(const char *format,...); |
| #endif |
| /cvi/instr/AitSipmDAQ/AitInterface.lib |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/instr/AitSipmDAQ/AitMduManager.dll |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/instr/AitSipmDAQ/AitMduManager.h |
|---|
| 0,0 → 1,48 |
| #ifndef AITMDUMANAGER_H |
| #define AITMDUMANAGER_H |
| #define DLLIMPORT __declspec(dllimport) |
| #ifdef _CVI_ |
| #include <stdbool.h> |
| #endif |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| DLLIMPORT int SD4_BlockError(); |
| DLLIMPORT unsigned int SD4_GetBlockTimeout(); |
| DLLIMPORT void SD4_SetBlockTimeout(unsigned int); |
| DLLIMPORT long SD4_BlockTransferTime(); |
| DLLIMPORT unsigned int SD4_GetDriverTimeout(); |
| DLLIMPORT void SD4_SetDriverTimeout(unsigned int); |
| DLLIMPORT char * SD4_Version(); |
| DLLIMPORT int SD4_WordsTransferred(); |
| DLLIMPORT unsigned int* SD4_FindDevices(int * ndevices); |
| DLLIMPORT int SD4_GetDeviceCount(); |
| DLLIMPORT unsigned int* SD4_GetDeviceList(int * ndevices); |
| DLLIMPORT char * SD4_GetUsbFirmwareVersionByDevice(unsigned int deviceId); |
| DLLIMPORT char * SD4_GetUsbFirmwareVersion(int index); |
| DLLIMPORT bool SD4_IsDeviceAttached(unsigned int deviceId); |
| DLLIMPORT bool SD4_ProgramFpgaFirmwareByDevice(unsigned int deviceId, char * fpgaFirmware); |
| DLLIMPORT bool SD4_ProgramFpgaFirmware(int index, char* fpgaFirmware); |
| DLLIMPORT bool SD4_ProgramUsbFirmware(int index, char* usbFirmware); |
| DLLIMPORT unsigned short SD4_Read(unsigned int deviceId, int address); |
| DLLIMPORT char * SD4_ReadByteArray(unsigned int deviceId, int address, int requestedsize, int * elementsread); |
| DLLIMPORT unsigned short * SD4_ReadUShortArray(unsigned int deviceId, int address, int requestedsize, int * elementsread ); |
| DLLIMPORT void SD4_ReconfigureByDevice(unsigned int deviceId); |
| DLLIMPORT void SD4_Reconfigure(int index); |
| DLLIMPORT void SD4_ReconnectByDevice(unsigned int deviceId); |
| DLLIMPORT void SD4_Reconnect(int index); |
| DLLIMPORT void SD4_ResetFpga(int index); |
| DLLIMPORT void SD4_ResetFpgaByDevice(unsigned int deviceId); |
| DLLIMPORT void SD4_ResetUsb(int index); |
| DLLIMPORT void SD4_ResetUsbByDevice(unsigned int deviceId); |
| DLLIMPORT void SD4_Write(unsigned int deviceId, int address, unsigned short data); |
| DLLIMPORT int SD4_WriteArray(unsigned int deviceId, int address, unsigned short* data); |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |
| /cvi/instr/AitSipmDAQ/AitMduManager.lib |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/instr/AitSipmDAQ/AitMduManager_DEF.h |
|---|
| 0,0 → 1,114 |
| #ifndef AITMDUMANAGER_DEF_H |
| #define AITMDUMANAGER_DEF_H |
| // Registers 0-15 ( RESERVED - DO NOT ACCESS |
| //---------------------------------------- |
| // ADC Controller Registers |
| //---------------------------------------- |
| #define ADDR_BASE ( 16) |
| #define ADDR_CSR_MAIN ( ADDR_BASE + 0) // Main CSR |
| #define ADDR_BUFFER ( ADDR_BASE + 1) // ADC event buffer |
| #define ADDR_BUFFERWORDS ( ADDR_BASE + 2) // 16-bit words available in the ADC event buffer |
| #define ADDR_EVENTID ( ADDR_BASE + 3) // Event ID CSR |
| #define ADDR_CSR_DETECTOR ( ADDR_BASE + 4) // Detector interface CSR |
| #define ADDR_TTLPORT ( ADDR_BASE + 5) // TTL I/O port |
| #define ADDR_ITIME ( ADDR_BASE + 6) // Integration time |
| #define ADDR_CSR_TRIGGER ( ADDR_BASE + 7) // Trigger CSR |
| #define ADDR_DEADTIME ( ADDR_BASE + 8) // Trigger dead time |
| #define ADDR_TG_INTERVALHI ( ADDR_BASE + 9) // Internal trigger generator interval 31:16 |
| #define ADDR_TG_INTERVALLO ( ADDR_BASE + 10) // Internal trigger generator interval 15:0 |
| #define ADDR_TG_COUNTHI ( ADDR_BASE + 11) // Internal trigger generator burst count 31:16 |
| #define ADDR_TG_COUNTLO ( ADDR_BASE + 12) // Internal trigger generator burst count 15:0 |
| #define ADDR_TC_COUNTHI ( ADDR_BASE + 13) // Trigger count 31:16 |
| #define ADDR_TC_COUNTLO ( ADDR_BASE + 14) // Trigger count 15:0 |
| #define ADDR_TC_RATEHI ( ADDR_BASE + 15) // Trigger rate 31:16 |
| #define ADDR_TC_RATELO ( ADDR_BASE + 16) // Trigger rate 15:0 |
| #define ADDR_CONV_COUNTHI ( ADDR_BASE + 17) // ADC conversion count 31:16 |
| #define ADDR_CONV_COUNTLO ( ADDR_BASE + 18) // ADC conversion count 15:0 |
| #define ADDR_CONV_RATEHI ( ADDR_BASE + 19) // ADC conversion rate 31:16 |
| #define ADDR_CONV_RATELO ( ADDR_BASE + 20) // ADC conversion rate 15:0 |
| #define ADDR_DISCR_OFFSET ( ADDR_BASE + 21) // Discriminator offset |
| #define ADDR_DISCR_THRESHOLD ( ADDR_BASE + 22) // Discriminator threshold |
| #define ADDR_MAIN_P12 ( ADDR_BASE + 23) // Main +1.2V power supply monitor |
| #define ADDR_RESERVED2 ( ADDR_BASE + 24) // RESERVED |
| #define ADDR_MAIN_P33 ( ADDR_BASE + 25) // Main +3.3V power supply monitor |
| #define ADDR_MAIN_P50 ( ADDR_BASE + 26) // Main +5.0V power supply monitor |
| #define ADDR_MAIN_PVA ( ADDR_BASE + 27) // Main power supply +VA voltage monitor |
| #define ADDR_MAIN_NVA ( ADDR_BASE + 28) // Main power supply -VA voltage monitor |
| #define ADDR_HV_MAX ( ADDR_BASE + 29) // HV maximum allowable control voltage |
| #define ADDR_HV_RAMPRATE ( ADDR_BASE + 30) // HV ramp rate |
| #define ADDR_HV_CTRL ( ADDR_BASE + 31) // HV control voltage |
| #define ADDR_HV_ILIMIT ( ADDR_BASE + 32) // HV current limit |
| #define ADDR_HV_VMON ( ADDR_BASE + 33) // HV output current monitor |
| #define ADDR_HV_IMON ( ADDR_BASE + 34) // HV output voltage monitor |
| #define ADDR_BASE_TEMPERATURE ( ADDR_BASE + 35) // Base temperature monitor |
| #define ADDR_BASE_PVA ( ADDR_BASE + 36) // Base +VA power supply monitor |
| #define ADDR_BASE_NVA ( ADDR_BASE + 37) // Base -VA power supply monitor |
| #define ADDR_OFFSET1 ( ADDR_BASE + 38) // ADC offset 1 |
| #define ADDR_OFFSET2 ( ADDR_BASE + 39) // ADC offset 2 |
| #define ADDR_OFFSET3 ( ADDR_BASE + 40) // ADC offset 3 |
| #define ADDR_OFFSET4 ( ADDR_BASE + 41) // ADC offset 4 |
| //---------------------------------------- |
| // Main CSR bits |
| //---------------------------------------- |
| // bit 0 ( RESERVED |
| #define BIT_CSR_MAIN_P12 ( 1) // +1.2V power supply status |
| // bit 2 ( RESERVED |
| #define BIT_CSR_MAIN_P33 ( 3) // +3.3V power supply status |
| #define BIT_CSR_MAIN_P50 ( 4) // +5.0V power supply status |
| #define BIT_CSR_MAIN_PVA ( 5) // +VA power supply status |
| #define BIT_CSR_MAIN_NVA ( 6) // -VA power supply status |
| // bits 12:7 ( RESERVED |
| #define BIT_CSR_MAIN_BFULL ( 13) // ADC buffer full status |
| #define BIT_CSR_MAIN_BEMPTY ( 14) // ADC buffer empty status |
| #define BIT_CSR_MAIN_ADCRESET ( 15) // Reset ADC |
| //---------------------------------------- |
| // Event ID CSR bits |
| //---------------------------------------- |
| #define BIT_EVENTID_COUNT ( 0) // Add event count to each Event Block (0(no, 1(yes) |
| #define BIT_EVENTID_TIME ( 1) // Add time stamp to each Event Block (0(no, 1(yes) |
| #define BIT_EVENTID_CHNUM ( 2) // Add channel number to each ADC data word (0(no, 1(yes) |
| // bits 15:3 ( RESERVED |
| //---------------------------------------- |
| // Detector interface CSR bits |
| //---------------------------------------- |
| #define BIT_CSR_DET_VAENABLE ( 0) // Detector Module +/-VA enable (0 ( disable, 1 ( enable) |
| #define BIT_CSR_DET_VAHIRNG ( 1) // Detector Module +/-VA output range (0 ( low range, 1 ( high range) |
| #define BIT_CSR_DET_HVENABLE ( 2) // Detector Module HV power supply (0 ( disable, 1 ( enable) |
| #define BIT_CSR_DET_HVRESET ( 3) // Detector Module HV power supply fault reset (0 ( reset off, 1 ( reset on) |
| #define BIT_CSR_DET_SUMCOUPLING ( 4) // Sum input coupling (0 ( DC, 1 ( AC) |
| #define BIT_CSR_DET_SUMGAIN1 ( 5) // Sum gain switch 1 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_SUMGAIN2 ( 6) // Sum gain switch 2 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_SUMGAIN3 ( 7) // Sum gain switch 3 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_SUMGAIN4 ( 8) // Sum gain switch 4 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_ADCCOUPLING ( 9) // ADC input coupling (0 ( DC, 1 ( AC) |
| #define BIT_CSR_DET_ADCGAIN1 ( 10) // ADC gain switch 1 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_ADCGAIN2 ( 11) // ADC gain switch 2 (0 ( open, 1 ( closed) |
| #define BIT_CSR_DET_HVGOOD ( 12) // Detector Module HV status (0 ( fault, 1 ( good) |
| #define BIT_CSR_DET_PVAGOOD ( 13) // Detector Module VA status (0 ( fault, 1 ( good) |
| #define BIT_CSR_DET_NVAGOOD ( 14) // Detector Module VA status (0 ( fault, 1 ( good) |
| #define BIT_CSR_DET_TEMPVALID ( 15) // Detector Module temperature status (0 ( fault, 1 ( connected) |
| //---------------------------------------- |
| // Trigger CSR bits |
| //---------------------------------------- |
| #define BIT_CSR_TRIG_CONTINUOUS ( 0) // Internal continuous trigger (0(off, 1(on) |
| #define BIT_CSR_TRIG_BURST ( 1) // Internal burst trigger (0(off, 0(on) |
| #define BIT_CSR_TRIG_DISCR ( 2) // Discriminator trigger (0(off, 0(on) |
| #define BIT_CSR_TRIG_EXTERNAL ( 3) // External trigger (0(off, 0(on) |
| // bits 15:4 ( RESERVED |
| #endif |
| /cvi/instr/AitSipmDAQ/XYSCAN.h |
|---|
| 0,0 → 1,65 |
| /**************************************************************************/ |
| /* LabWindows/CVI User Interface Resource (UIR) Include File */ |
| /* */ |
| /* 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 SCAN 1 |
| #define SCAN_OPENMAIN 2 /* control type: command, callback function: OpenMainCB */ |
| #define SCAN_BD 3 /* control type: command, callback function: MoveStageCB */ |
| #define SCAN_BR 4 /* control type: command, callback function: MoveStageCB */ |
| #define SCAN_GETPOSITION 5 /* control type: command, callback function: GetCurrentPositionCB */ |
| #define SCAN_SCAN 6 /* control type: command, callback function: StartCB */ |
| #define SCAN_BU 7 /* control type: command, callback function: MoveStageCB */ |
| #define SCAN_HO 8 /* control type: command, callback function: HomeCB */ |
| #define SCAN_BL 9 /* control type: command, callback function: MoveStageCB */ |
| #define SCAN_XG 10 /* control type: numeric, callback function: (none) */ |
| #define SCAN_YG 11 /* control type: numeric, callback function: (none) */ |
| #define SCAN_IX 12 /* control type: numeric, callback function: (none) */ |
| #define SCAN_IY 13 /* control type: numeric, callback function: (none) */ |
| #define SCAN_NSTEPSX 14 /* control type: numeric, callback function: (none) */ |
| #define SCAN_NSTEPSY 15 /* control type: numeric, callback function: (none) */ |
| #define SCAN_STEPX 16 /* control type: numeric, callback function: (none) */ |
| #define SCAN_STEPY 17 /* control type: numeric, callback function: (none) */ |
| #define SCAN_STARTX 18 /* control type: numeric, callback function: (none) */ |
| #define SCAN_STARTY 19 /* control type: numeric, callback function: (none) */ |
| #define SCAN_XP 20 /* control type: numeric, callback function: (none) */ |
| #define SCAN_YP 21 /* control type: numeric, callback function: (none) */ |
| #define SCAN_GY 22 /* control type: command, callback function: GoYCB */ |
| #define SCAN_GX 23 /* control type: command, callback function: GoXCB */ |
| #define SCAN_PORT 24 /* control type: numeric, 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 GetCurrentPositionCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK GoXCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK GoYCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK HomeCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK MoveStageCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK OpenMainCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| int CVICALLBACK StartCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| #ifdef __cplusplus |
| } |
| #endif |
| /cvi/instr/AitSipmDAQ/XYSCAN.uir |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |