From 71f90a5839f86a4e2dfe418326c30ca5ea1418b4 Mon Sep 17 00:00:00 2001 From: Kevin Lyda <kevin@ie.suberic.net> Date: Mon, 30 Jan 2017 00:30:32 +0000 Subject: [PATCH] Further. --- devices/geiger/gqgmc.go | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go index 43dccdc..07b1031 100644 --- a/devices/geiger/gqgmc.go +++ b/devices/geiger/gqgmc.go @@ -106,13 +106,13 @@ const ( cmdGetSerial = "<GETSERIAL>>" cmdGetVersion = "<GETVER>>" cmdGetVoltage = "<GETVOLT>>" - cmdGetCpm = "<GETCPM>>" - cmdGetCps = "<GETCPS>>" + cmdGetCPM = "<GETCPM>>" + cmdGetCPS = "<GETCPS>>" cmdGetCfg = "<GETCFG>>" cmdEraseCfg = "<ECFG>>" cmdUpdateCfg = "<CFGUPDATE>>" - cmdTurnOnCps = "<HEARTBEAT1>>" - cmdTurnOffCps = "<HEARTBEAT0>>" + cmdTurnOnCPS = "<HEARTBEAT1>>" + cmdTurnOffCPS = "<HEARTBEAT0>>" cmdTurnOffPwr = "<POWEROFF>>" ) @@ -192,14 +192,13 @@ func (gc *GQGMCCounter) SerialNum() (string, error) { // GetCPM returns CPM func (gc *GQGMCCounter) GetCPM() (uint16, error) { - //uint32_t cpmsize = 2; // 2 bytes of returned data - //communicate(get_cpm_cmd, cpm_char, cpmsize); - // 1st byte is MSB, but note that upper two bits are reserved bits. - // Note that shifting and bitmasking performed in uP register, so - // endianess is irrevelant. - //cpm_int |= ((uint16_t(cpm_char[0]) << 8) & 0x3f00); - //cpm_int |= (uint16_t(cpm_char[1]) & 0x00ff); - return 0, nil + buf, err := gc.communicate([]byte(cmdGetCPM), 2) + if err != nil { + return 0, err + } + cpm := ((uint16(buf[0]) << 8) & 0x3f00) + cpm |= (uint16(buf[1]) & 0x00ff) + return cpm, nil } // GetCPS returns CPS @@ -344,19 +343,22 @@ func (gc *GQGMCCounter) SetTime(time string) { } func (gc *GQGMCCounter) communicate(cmd []byte, length uint32) ([]byte, error) { - //clearUSB(); - //if (cmd.size() > 0) sendCmd(cmd); - //if (retbytes > 0) readCmdReturn(retdata, retbytes); + gc.Clear() + if len(cmd) > 0 { + gc.sendCmd(cmd) + } + if length != 0 { + return gc.readCmd(length) + } return nil, nil } func (gc *GQGMCCounter) sendCmd(cmd []byte) { - // The port write thing gc.port.Write(cmd) return } -func (gc *GQGMCCounter) readCmdReturn(length uint32) ([]byte, error) { +func (gc *GQGMCCounter) readCmd(length uint32) ([]byte, error) { buf := make([]byte, length) n, err := gc.port.Read(buf) if err != nil { -- GitLab