/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 |