|Mar4-08, 09:20 PM||#1|
Genie 2000 Programming Library
I read in a document of Canberra saying that:" Genie 2000 Program Library allows a programmer to interact directly with Genie 2000 capabilities from a C++ language environment and also allows the addition of user-coded analysis engines to the Genie 2000 environment".
If someone know about this issue, please help me!
|Mar5-08, 03:42 AM||#2|
I have used Genie's internal language to create reports, and used the REXX language to interface to Genie to do more things. Both options are very weak, limited and slow.
Currently I interface to Genie executable modules using Java. This method provides great power, as much as is possible with the existing executables in the EXEFILES folder plus processing the data and reporting and inteface to Excel using Java. You could do just the same with C++. It is quite a bit of work however. I am not aware of any special custom interface techniques that Canberra has published concerning Genie with C++ however.
|Jun8-09, 10:09 AM||#3|
You said you have written an interface in Java for Genie functions. This is exactly what I need now. Would you consider help in the project? So we can work together? I have 4 years experience in Java , see my project at radlab.sourceforge.net
If you are finished, is your codes open source? Would you share them?
|Jul17-09, 08:42 AM||#4|
Genie 2000 Programming Library
It was a pain to get started, because all of the Canberra documentation assumes you are using Visual Basic and know COM pretty well. Figuring out which parameters to set and which calls set them was also a problem. If you are pretty familiar with the Genie 2000 software already, getting it to work might be easier for you.
|Jul19-09, 04:48 AM||#5|
Thank you very much for your reply. I am doing PhD at PSU. I am doing NAA analysis for wood rings. So I need to write a code to control the sample changer we have, save the spectrums and then make the analysis, and write the results into files. With lots o effort, because of Genie documentation, as you said, I have used C++ , and finally managed to save the spectrum and move the sample changer. However it seems like the analysis will take more time. By the way I started with the example provided in Genie 2000 3.1
I have still questions about current parts;
1-) I could not find any way to learn whether the spectrum is completed,
2-) No way to get info whether sample changer came to home position.
3-) No idea how to start the analysis part
So I now C++, and can use it. But the Genie does not have a clear api, and documentation. I really need help with analysis. Energy calibration, peak search, nuclide identification, interference correction, efficiency correction and then calculate the mass of each isotope in the sample.
Thank you again for your reply and help. We might together finish the documentation if you are interested in open source development. We can then put this into sourceforge.net . I have another project called RADlab at sourceforge.net , at http://radlab.sourceforge.net/ , which is open source.
|Jul19-09, 10:00 PM||#6|
HRESULT hr; enum DeviceAcces::DeviceStatus status; bool acquiring; hr = devAccess->get_AnalyzerStatus(&status); acquiring = ((status & DeviceAccess::aAcquiring) != 0);
The manual lists AnalyzerStatus as a property in the DeviceAccess chapter. Any of the properties can be read by prepending get_ to them.
The parameter descriptions are not really informative, but in most cases I have been able to narrow down the number of parameters to no more than about a dozen or so. Then I write a program that prints out their values to see which one is most likely to be the one I want. I realize this approach is less than ideal, but in many cases the documentation does not give enough information to sure you are looking at the right parameter without testing it first.
Once you have a .ASF file, you need to create a sequence analyzer object and call your sequence with it:
ISequenceAnalyzerPtr seqAn; hr = seqAn.CreateInstance(__uuidof(SequenceAnalyzer)); /* check hr for failure */ short step = 0; hr = seqAn->Analyze(dataAccess, &step, bsName, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, NULL, NULL); /* check hr for failure */
After this code sequence, step will contain the step number of the last step executed, hopefully the last step in your sequence. You probably have to read some parameters with get_Param to read the right parameters to get the result you want.
I am probably not going to have a lot of time to work on it this week, though. Bug me in a few weeks if you have not heard anything from me. Or post a reply here sooner if you have questions on my replies above.
|Sep17-09, 03:52 PM||#7|
I used to work for Canberra and can help you with cam parameters. I don't do java, you are on your own for that stuff.
I need to do a simple procedure to do some acquisition and reports. I'll probably use rexx. I wanted to use vb and was looking for script information.
I may try calling the exes, a good idea. I can launch them from vb.
I've written a lot of command procedures with rexx and much more with the vms side of things, which, while different, shares the cam structure.
|Sep22-09, 08:14 AM||#8|
I have been doing all of my development in C++, so I don't any experience with VB or REXX.
|Sep22-09, 08:22 AM||#9|
This is not really a question about CAM parameters, but do you know how to find the names of detectors that are loaded into the database (that is, the detectors that would appear in the Open Datasource... dialog)? I want to enumerate them for a detector selection widget I am building...
|Sep28-09, 02:50 AM||#10|
I also try to automate some calculations using the Programming Library. I managed to define and run an analysis sequences (I'm using the C# library by the way). However some parameters (i.e. the geometry) is depending on the user input. In other words, the efficiency correction has to be based upon a geometry which is constructed at runtime.
Does anyone has experience with this? I tried to construct a .gis file dynamically and run the command winisocs to obtain the ecc file. However, the ISOCS efficiency correction step in the analysis sequence takes a .geo file.
|Aug25-11, 02:48 PM||#11|
Hi Everybody, I was trying to change sample information from my code. did anybody found how to change sample buildup type? I could not find the CAM code for this one.
|Sep13-11, 04:07 AM||#12|
I have the following problem....
We have a ginie 2000 System that works great. We use an old samplechanger system that relies upon relays which are starting to act strange and unpredictable.
So we dicided to get rid of the relays instead using a Labview environment to control the actuators.
So I need some advice how to implement the genie 2000 system into Labview, meaning that labview should tell Genie when to start a measurement and genie to send the information that it has finished the measurement back. An API would be useful, but as I understood it there is no such thing or something compareable to use in Labview...
Does anyone have a suggestion or maybe have already solved a similar problem?
|Jun6-12, 05:18 AM||#13|
Who can give information about the file structure of CAM-files. I can read spectral data, live time, realtime and some ascii parameters from the file, but I cannot find the energy calibration values (float, double or any other format ???). I really tried hard to find the addresses of these values in then cnf-file with an Hex editor but there was no success.
|Jun28-12, 06:28 AM||#14|
can you please tell me, where did you get real-time and live-time values? I have found some values in cnf file that might be them. I know decimal values of numbers that i'm looking for, but they are completly different :(
|Jun29-12, 02:30 AM||#15|
Nevermind, i just figured out how to get them :D Now i'm trying to find calibration values... i'll tell you if i'll find something useful :D
|Jul2-12, 07:35 AM||#16|
sorry I am late, but I was on hollydays
here my VBA-code for reading CNF-files (Alpha-Analyst spectra):
Sub ReadCNF(sfile as string)
dim spek(1024) as long
Dim c8 As Currency '8 byte with LSB first
Dim dreal As Double
Dim dlive As Double
Dim dpreset As Double
Dim inchan As Integer
Dim sUnit As String * 64
Dim sDet As String * 20
Dim sChTitel As String
Dim ssample As String
Dim fr as integer
Dim r As Single
Dim rzero As Single
Dim rx As Single
Dim rx2 As Single
Dim rx3 As Single
Dim sampletitle As String * 16
Dim sampleID As String * 16
Dim sample As String * 16
Dim sdescr As String * 64
fr=4000 'factor for calibration values ???
fi = FreeFile
Open sfile For Binary As fi
Get #fi, 2256, c8: dpreset = ((Not c8) + 1) / 1000: Cells(11, 2) = dpreset
Get #fi, 2904, r: rzero = r / fr: If rzero <= 0 Then rzero = 2.5
Cells(13, 2) = rzero
Get #fi, , r: rx = r / fr: Cells(13, 3) = rx
Get #fi, , r: rx2 = r / fr: Cells(13, 4) = rx2
Get #fi, , r: rx3 = r / fr: Cells(13, 5) = rx3
Get #fi, 2622, c8: dlive = ((Not c8) + 1) / 1000: Cells(9, 2) = dlive 'livetime in msec
Get #fi, 2630, c8: dreal = ((Not c8) + 1) / 1000: Cells(10, 2) = dreal 'realtime in msec
Get #fi, 2930, sUnit 'MeV
Get #fi, 2951, inchan 'channels
Get #fi, 3102, sDet: Cells(7, 2) = sDet 'detector name
Get #fi, 21553, sampletitle: Cells(5, 6) = sampletitle 'title
Get #fi, 21617, sampleID: Cells(6, 6) = sampleID 'sample ID
Get #fi, 22382, sample: Cells(7, 6) = sample 'sample
Get #fi, 22447, sdescr: Cells(8, 6) = sdescr 'sample description 1
Get #fi, 22511, sdescr: Cells(9, 6) = sdescr 'sample description 2
Get #fi, 22575, sdescr: Cells(10, 6) = sdescr 'sample description 3
Seek #fi, 30209 'offset Spectrum data
Get #fi, , spek
For i = 1 To 1024 'insert in cells
ze = 15 + i
Cells(ze, 1) = i 'kanal
Cells(ze, 2) = rzero + i * rx + i * rx2 ^ 2 'MeV
Cells(ze, 3) = spek(i) 'l4 'counts
if you send me one of your specs I can have a look on it.
|Jul3-12, 05:18 AM||#17|
I've finished processing cnf files. It's working fine for new version cnf files, but in old version ones, there are issues with realtime, livetime, dates and calibration values. It's easy to change code to work with old cnf files, but i wanna my app to be universal and can be used for both kinds of cnf files. I didn't figured out how to clearly determine which file is old and which is new, but I'm working on it ;) I'm sending you my code written in Delphi. It's quite messy because i used it only for testing and then rewrote it to another app, but i hope it will help you. I'll send updated version when I complete it.
|Similar Threads for: Genie 2000 Programming Library|
|Super Nintendo Game Genie Codes||Computing & Technology||10|
|Genie 2000 - CAM files||Nuclear Engineering||1|
|A.D. 2000 as seen from 1966||General Discussion||9|
|Genie and 3 wishes.||General Discussion||33|
|2000 posts!!||General Discussion||9|