string& VTDROderMeter::Write(string& buf) { OderMeter meter = { 0 }; ToBCDTime(tNow, meter.vTime); ToBCDTime(tInstall, meter.installTime); int v = (int) (startMeter * 10.0); int i; for (i = 0; i < sizeof(meter.startValue); i++) { meter.startValue[sizeof(meter.startValue) - i] = INT2BCDchar(v % 100); v = v / 100; if (v == 0) break; } for (i = 0; i < sizeof(meter.oderMeter); i++) { meter.oderMeter[sizeof(meter.startValue) - i] = INT2BCDchar(v % 100); v = v / 100; if (v == 0) break; } buf.append((const char*) &meter, sizeof(meter)); return buf; }
string& VTDROutPoweredRecord::Write(string& buf) { PowerLog log; ToBCDTime(tTime, log.vTime); log.cType = cType; buf.append((const char*) &log, sizeof(log)); return buf; }
string& VTDRParameterModifyRecord::Write(string& buf) { ModifyLog log = { 0 }; ToBCDTime(tTime, log.vTime); log.cType = cType; buf.append((const char*) &log, sizeof(log)); return buf; }
string& VTDRDriverIDRecord::Write(string& buf) { DriverIDRecord rec = { 0 }; ToBCDTime(tStart, rec.startTime); SET(rec.License, strLicenseNumber); rec.cType = cType; buf.append((const char*) &rec, sizeof(rec)); return buf; }
string& VTDRPositionRecord::Write(string& buf) { PositionRecord rec; ToBCDTime(tStart, rec.vStart); for (int i = 0; i < 60; i++) { writePosition(rec.record[i].pos, Longititude[i], Latitude[i], Altitude[i]); rec.record[i].speed = (unsigned char) (Speed[i] & 0x0FF); } buf.append((const char*) &rec, sizeof(rec)); return buf; }