Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 210 → Rev 212

/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
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: AitSipmDAQ/Ait.prj
===================================================================
--- AitSipmDAQ/Ait.prj (nonexistent)
+++ AitSipmDAQ/Ait.prj (revision 212)
@@ -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
+
Index: AitSipmDAQ/AitGui.c
===================================================================
--- AitSipmDAQ/AitGui.c (nonexistent)
+++ AitSipmDAQ/AitGui.c (revision 212)
@@ -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;
+}
Index: AitSipmDAQ/AitGui.h
===================================================================
--- AitSipmDAQ/AitGui.h (nonexistent)
+++ AitSipmDAQ/AitGui.h (revision 212)
@@ -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
Index: AitSipmDAQ/AitGui.uir
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/AitSipmDAQ/AitGui.uir
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: AitSipmDAQ/AitInterface.c
===================================================================
--- AitSipmDAQ/AitInterface.c (nonexistent)
+++ AitSipmDAQ/AitInterface.c (revision 212)
@@ -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;
+ }
Index: AitSipmDAQ/AitInterface.h
===================================================================
--- AitSipmDAQ/AitInterface.h (nonexistent)
+++ AitSipmDAQ/AitInterface.h (revision 212)
@@ -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
Index: AitSipmDAQ/AitInterface.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/AitSipmDAQ/AitInterface.lib
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: AitSipmDAQ/AitMduManager.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/AitSipmDAQ/AitMduManager.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: AitSipmDAQ/AitMduManager.h
===================================================================
--- AitSipmDAQ/AitMduManager.h (nonexistent)
+++ AitSipmDAQ/AitMduManager.h (revision 212)
@@ -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
+
Index: AitSipmDAQ/AitMduManager.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/AitSipmDAQ/AitMduManager.lib
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: AitSipmDAQ/AitMduManager_DEF.h
===================================================================
--- AitSipmDAQ/AitMduManager_DEF.h (nonexistent)
+++ AitSipmDAQ/AitMduManager_DEF.h (revision 212)
@@ -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
\ No newline at end of file
Index: AitSipmDAQ/XYSCAN.h
===================================================================
--- AitSipmDAQ/XYSCAN.h (nonexistent)
+++ AitSipmDAQ/XYSCAN.h (revision 212)
@@ -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
Index: AitSipmDAQ/XYSCAN.uir
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/AitSipmDAQ/XYSCAN.uir
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property