136 lines
5.3 KiB
C++
136 lines
5.3 KiB
C++
#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"; |