Updated February 19, 2017 - Updated ICD document to clarify interpretation of 16-bit CPS and CPM data.
Updated February 3, 2017 - Updated ICD document with latest definition of GMC-3xx non-volatile memory storage of configuration data.
Updated December 29, 2016 - Updated README.txt file. Added explanation about changing GMC geiger
counter model's vendor id and product id which are used in the 51-gqgmc.rules file. Changed 51-gqgmc.rules file to provide instruction on how to discover vendor id and product id.
Updated: September 1, 2016 - Added zip file to download all files at once. Updated README.txt file to
refer to zip file for dowloading files.
Updated: February 24, 2016 - Added the following GQ GMC commands to the driver: power on, reboot, factory reset, set date/time (all in single command), and get date/time (all in single command).
Updated: February 12, 2016 - Added data logging to file to the GUI program, gqgmc_gui. Data recorded each minute with time of day and day of year timestamp.
Updated: May 7, 2015 - Added UDEV rules file, 51-gqgmc.rules to create symbolic link to device /dev/gqgmc from /dev/ttyUSB*.
Updated: March 5, 2013 - Added the individual commands to set the year, month, day, hours, minutes, seconds.
GQGMC is a user level driver for interfacing a Linux host to GQ Electronic's GMC-3xx (e.g., GMC-300) geiger-muller counter. Written in C++, the driver provides an interface method for each of the capabilities of the GMC-3xx. The capabilities of the GMC-3xx are described in the GQ-GMC-ICD.odt (or doc) document. Perhaps of greatest use, the GMC-3xx can provide the Counts per Minute upon command from the Linux host. The GMC-3xx also has configuration data and an internal history buffer all of which are read/write-able from the Linux host. Further documentation is embedded in the source software, principally, gqgmc.hh and gqgmc.cc. Any user is expected to read the documentation embedded in the source code files which has complete discussions of the GMC-300's data and operation, in other words, the documentation and the code are integrated.
A sample console based program is provided for excercising the GMC-3xx. A sample Qt based GUI program is also provided, although it functions only as a simple data logging plot of the counts per minute. A Makefile is also provided for building the console or GUI programs. The sample programs are only compiled for 64-bit x86 Linux under Ubuntu 11.10, 12.04, 14.04, and 16.04, however, it is compilable for 32-bit Linux. See the README.txt file for changes needed to compile/link for 32-bit Linux.
The GUI program, gqgmc_gui, plots data on a scrolling graph of twenty minutes width. Data is plotted every ten seconds. In addition to graphing, the GUI program logs data to a file once a minute with time of day and date timestamps. See the README.txt file for running gqgmc_gui with arguments.
User feedback would be appreciated either by writing a review or emailing me at phgphd@yahoo.com.
Hello Phil, i'd like use this package on Raspberry with "Raspbian GNU/Linux 9 (stretch)". When i try to compile it (make all) i see this message
root@raspberrypi:/home/pi/gqgmc# make all
rm -f /home/pi/gqgmc/moc.cc
rm -f /home/pi/gqgmc/obj/.o
g++ -m32 -pipe -Wall -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/home/pi/gqgmc -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/X11 -c gqgmc.cc -o /home/pi/gqgmc/obj/gqgmc.o
g++: error: unrecognized command line option ‘-m32’
Patterns.mk:9: recipe for target '/home/pi/gqgmc/obj/gqgmc.o' failed
make: *** [/home/pi/gqgmc/obj/gqgmc.o] Error 1
Can you help Me?
Thanks in advance Luigi
The error message means that the compiler on the Raspberry does not know
what the command line option "-m32" means. "-m32" means to compiler for
a 32bit machine. The Rasberry is a 64bit machine and so I would suppose
that in adapting the compiler for the Rasberry, no one thought to
include that option.
To fix, just remove "-m32" from the command line. This can be done by
going into the Defines.mk file and changing the following line from
CPUSIZE = -m32
to
CPUSIZE =
In other words, just erase the -m32.
If there are more problems let me know.
Phil
On 4/8/20 2:49 AM, luigi wrote:
Hi,
Trying to get this to log with my Raspberry Pi 4 8gb with Ubuntu Mate 18.04 running.
Running into problems at step 6a. sudo cp ./51-gqgmc.rules /etc/udev/rules.d/51-gqgmc.rules.
When running that from my root directory I get the error:
cp: failed to access '/etc/udev/roles.d/51-gqgmc.rules': not a directory. Also when I tried to write 'make all gqgmc_gui' and 'make all gqgmc' it fails giving me a error: make: *** No rule to tmake target 'gqgnc_gui'. Stop.
And when trying to compile gqgmc I get
(.text+0x18): undefined reference to 'main'
(.text+0x1c): undefined reference to 'main'
collect2: error: ld returened 1 exit status
<builtin>: recipe for target 'gqgmc' failed
make: *** [gqgmc] Error 1</builtin>
So then i just copied it to /etc/udev/roles.d and it worked. And then I reloaded it.
But then when checking if /dev/gqgmc exists it says. ls:cannot access '/dev/gqgmc': No such file or directory.
Do you have any idea on what im doing wrong? Thanks!
Last edit: Konrad Lach 2021-03-10
If /dev/gqgmc does not exist, that means that the 51-gqgmc.rules did not
work. Most probably, the vendor ID and the product ID do not match the
GMC-300 you own. You can discover the vendor and product IDs by running
the command, lsusb, that lists all the usb devices that are plugged in.
You should be able to recognize which usb device listed is your GMC.�
Then change the 51-gqgmc.rules file for the correct vendor and product IDs.
If that doesn't work. We'll think of trying something else.
Phil
On 3/10/21 2:51 PM, Konrad Lach wrote:
When I do lsusb I have:
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics
So I went into 51-gqgmc.rules and Changed both of the ATTR{idWendor} to 1a86 and single the ATTRS{idProduct} to 7523.
I think the problem starts in step 5 when I try to make all gqgmc in the root directory and get these errors:
(.text+0x18): undefined reference to main'
(.text+0x1c): undefined reference to main'
collect2: error" ld returned 1 exit status
<builtin>: recipe for target "gqgmc" failed
make: *** [gqgmc] error 1</builtin>