BOOL CGretagScan::GetDensity(CCommRequest *pRequest, double *data) { int code[5]; int i; double temp; BOOL status = FALSE; if(!sscanf_n_i(pRequest->m_lpszResult, 1, 1, code)) { ErrorMessage(ERR_MEASUREMENT_DATA); goto bail; } if(code[0] != 189) { ErrorMessage(ERR_MEASUREMENT_DATA); goto bail; } //convert to data sscanf_n(pRequest->m_lpszResult ,3 ,4, data); //resequence temp = data[0]; for(i = 0; i < 3; i++) data[i] = data[i+1]; data[3] = temp; status = TRUE; bail: return status; }
BOOL CGretagScan::GetLab(CCommRequest *pRequest, double *data) { int code[5]; if(!sscanf_n_i(pRequest->m_lpszResult, 1, 1, code)) { ErrorMessage(ERR_MEASUREMENT_DATA); return FALSE; } if(code[0] != 187) { ErrorMessage(ERR_MEASUREMENT_DATA); return FALSE; } //convert to data sscanf_n(pRequest->m_lpszResult ,4 ,3, data); return TRUE; }
McoStatus SpectroChart::getNextPatch(long patchnum,double *lab) { char j1[255],j2[255],j3[255]; char st[5000]; char *p; int32 tc; double xyz[3]; int32 X,Y,Z; McoStatus status = MCO_SUCCESS; int code; double t; int i; if (sp == 0L) return MCO_SERIAL_ERROR; // do a calibration if 100 patches have been read so far if (patchCount >= 100) status = Calibrate(); if (status != MCO_SUCCESS) return status; // move to the patch status = moveToPatch(patchnum,0); if (status != MCO_SUCCESS) return status; // send read command status = sendReadCommand(st); if (status != MCO_SUCCESS) return status; if (mode == ReadLabMode) { // now read the data in sp->sendData("; 186 9 1\r\n",11); sp->getNextLine(st,5000,thermd); // check for an error sscanf_n_i(st,1,1,&code); if (code != 187) return MCO_FAILURE; // read in the data sscanf_n(st,2,3,lab); // check for an error again sscanf_n_i(st,6,1,&code); if (code != 0) return MCO_FAILURE; // now apply the tweak if it exist if (tweak != NULL) tweak->eval(lab,lab,1); } else if (mode == ReadDensityMode) { // now read the data in sp->sendData("; 188 9\r\n",9); sp->getNextLine(st,5000,thermd); // check for an error sscanf_n_i(st,1,1,&code); if (code != 189) return MCO_FAILURE; // read in the black sscanf_n(st,1,4,lab); // check for an error again sscanf_n_i(st,6,1,&code); if (code != 0) return MCO_FAILURE; t = lab[0]; lab[0] = lab[1]; lab[1] = lab[2]; lab[2] = lab[3]; lab[3] = t; if (lab != paperDensity) for (i=0; i<4; i++) { lab[i] -= paperDensity[i]; if (lab[i] < 0) lab[i] = 0; } } patchCount++; return MCO_SUCCESS; }