#include "ScannerStatus.h" ScannerStatus::ScannerStatus() { } ScannerStatus::~ScannerStatus() { } void ScannerStatus::CreateIfNoExist(SQLite::Database* db) { if (db == nullptr)return; char buffer[1024]; if (db->tableExists(SCAN_TABLE_NAME)) { sprintf_s(buffer, sizeof(buffer), "SELECT * FROM %s LIMIT 0", SCAN_TABLE_NAME.c_str()); SQLite::Statement query(*db, buffer); try { query.getColumnIndex(SCAN_FIELD_ACTUAL_POSITION_X.c_str()); } catch (SQLite::Exception&) { sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_ACTUAL_POSITION_X.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_SET_POSITION_X.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_POSITION_ERROR_X.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_ACTUAL_POSITION_Y.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_SET_POSITION_Y.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' FLOAD", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_POSITION_ERROR_Y.c_str()); db->exec(buffer); sprintf_s(buffer, "UPDATE %s SET %s=0,%s=0,%s=0,%s=0,%s=0,%s=0", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_ACTUAL_POSITION_X.c_str(), SCAN_FIELD_SET_POSITION_X.c_str(), SCAN_FIELD_POSITION_ERROR_X.c_str(), SCAN_FIELD_ACTUAL_POSITION_Y.c_str(), SCAN_FIELD_SET_POSITION_Y.c_str(), SCAN_FIELD_POSITION_ERROR_Y.c_str() ); db->exec(buffer); } try { query.getColumnIndex(SCAN_FIELD_LOW_STATE_X.c_str()); } catch (SQLite::Exception&) { sprintf_s(buffer, "ALTER TABLE %s ADD '%s' INTEGER", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_LOW_STATE_X.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' INTEGER", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_LOW_STATE_Y.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' INTEGER", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_HIGH_STATE_X.c_str()); db->exec(buffer); sprintf_s(buffer, "ALTER TABLE %s ADD '%s' INTEGER", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_HIGH_STATE_Y.c_str()); db->exec(buffer); sprintf_s(buffer, "UPDATE %s SET %s=0,%s=0,%s=0,%s=0", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_LOW_STATE_X.c_str(), SCAN_FIELD_LOW_STATE_Y.c_str(), SCAN_FIELD_HIGH_STATE_X.c_str(), SCAN_FIELD_HIGH_STATE_Y.c_str() ); db->exec(buffer); } return; } //char buffer[1024]; string createsql = "CREATE TABLE IF NOT EXISTS %s(%s INTEGER PRIMARY KEY AUTOINCREMENT,%s INTEGER,%s LONG,\ %s INTEGER,%s INTEGER,%s REAL, %s REAL,%s REAL,%s REAL, %s REAL,%s REAL,%s REAL, %s REAL,%s REAL,%s REAL,\ %s INTEGER,%s INTEGER,%s INTEGER,%s INTEGER)"; sprintf_s(buffer, sizeof(buffer), createsql.c_str(), SCAN_TABLE_NAME.c_str(), SCAN_FIELD_ID.c_str(), SCAN_FIELD_SCAN_ID.c_str(), SCAN_FIELD_INSERT_TIME.c_str(), SCAN_FIELD_JOB_ID.c_str(), SCAN_FIELD_LAYER_INDEX.c_str(), SCAN_FIELD_SCAN_TEMP_X.c_str(), SCAN_FIELD_SCAN_TEMP_Y.c_str(), SCAN_FIELD_SERVO_TEMP_X.c_str(), SCAN_FIELD_SERVO_TEMP_Y.c_str(), SCAN_FIELD_ACTUAL_POSITION_X.c_str(), SCAN_FIELD_SET_POSITION_X.c_str(), SCAN_FIELD_POSITION_ERROR_X.c_str(), SCAN_FIELD_ACTUAL_POSITION_Y.c_str(), SCAN_FIELD_SET_POSITION_Y.c_str(), SCAN_FIELD_POSITION_ERROR_Y.c_str(), SCAN_FIELD_LOW_STATE_X.c_str(), SCAN_FIELD_LOW_STATE_Y.c_str(), SCAN_FIELD_HIGH_STATE_X.c_str(), SCAN_FIELD_HIGH_STATE_Y.c_str() ); db->exec(buffer); sprintf_s(buffer, sizeof(buffer), "CREATE INDEX IF NOT EXISTS idx_%s_%s ON %s (%s)", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_JOB_ID.c_str(), SCAN_TABLE_NAME.c_str(), SCAN_FIELD_JOB_ID.c_str() ); db->exec(buffer); sprintf_s(buffer, sizeof(buffer), "CREATE INDEX IF NOT EXISTS idx_%s_%s ON %s (%s)", SCAN_TABLE_NAME.c_str(), SCAN_FIELD_INSERT_TIME.c_str(), SCAN_TABLE_NAME.c_str(), SCAN_FIELD_INSERT_TIME.c_str() ); db->exec(buffer); } const string ScannerStatus::SCAN_TABLE_NAME = "ScannerStatus"; const string ScannerStatus::SCAN_FIELD_ID = "Id"; const string ScannerStatus::SCAN_FIELD_SCAN_ID = "ScanId"; const string ScannerStatus::SCAN_FIELD_INSERT_TIME = "InsertTime"; const string ScannerStatus::SCAN_FIELD_JOB_ID = "JobId"; const string ScannerStatus::SCAN_FIELD_LAYER_INDEX = "LayerIndex"; const string ScannerStatus::SCAN_FIELD_SCAN_TEMP_X = "ScanTempX"; const string ScannerStatus::SCAN_FIELD_SCAN_TEMP_Y = "ScanTempY"; const string ScannerStatus::SCAN_FIELD_SERVO_TEMP_X = "ServoTempX"; const string ScannerStatus::SCAN_FIELD_SERVO_TEMP_Y = "ServoTempY"; const string ScannerStatus::SCAN_FIELD_ACTUAL_POSITION_X = "ActualPositionX"; const string ScannerStatus::SCAN_FIELD_SET_POSITION_X = "SetPositionX"; const string ScannerStatus::SCAN_FIELD_POSITION_ERROR_X = "PositionErrorX"; const string ScannerStatus::SCAN_FIELD_ACTUAL_POSITION_Y = "ActualPositionY"; const string ScannerStatus::SCAN_FIELD_SET_POSITION_Y = "SetPositionY"; const string ScannerStatus::SCAN_FIELD_POSITION_ERROR_Y = "PositionErrorY"; const string ScannerStatus::SCAN_FIELD_LOW_STATE_X = "LowStateX"; const string ScannerStatus::SCAN_FIELD_LOW_STATE_Y = "LowStateY"; const string ScannerStatus::SCAN_FIELD_HIGH_STATE_X = "HighStateX"; const string ScannerStatus::SCAN_FIELD_HIGH_STATE_Y = "HighStateY";