sqlite数据库,exfat支持

This commit is contained in:
sc committed 2025-10-22 00:22:34 +08:00
1 parent 43f2057b44
commit 855a50bfeb
8 files changed
+917 -546

No files matched your search

+349 -9
View File
@@ -10,24 +10,364 @@
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <dfs_posix.h>
#include "DB_SQLite.h"
#include "sqlite3.h"
#include <dbhelper.h>
#define DB_NAME "/rt.db"
#define DB_NAME "/SC828.db"
int db_HelperInit;
sqlite3 **db;
static const char *sql_upgrade_workorder_steps =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM WorkorderSteps; "
"DROP TABLE WorkorderSteps; "
"CREATE TABLE WorkorderSteps ("
"WorkOrder VARCHAR,"
"DYELOT VARCHAR,"
"ProgramID VARCHAR,"
"Program VARCHAR,"
"ReDye INT DEFAULT (0),"
"Mode VARCHAR,"
"Step INT,"
"StepID VARCHAR,"
"StepName VARCHAR,"
"ParameterName VARCHAR,"
"Parameter1 DOUBLE,"
"Parameter2 DOUBLE,"
"Parameter3 DOUBLE,"
"Parameter4 DOUBLE,"
"Parameter5 DOUBLE,"
"Parameter6 INT,"
"Parameter7 INT,"
"Parameter8 INT,"
"Parameter9 INT,"
"Parameter10 INT,"
"Remark VARCHAR,"
"StepTime INT,"
"StepID_S1 VARCHAR,"
"StepID_S2 VARCHAR,"
"StepID_S3 VARCHAR,"
"StepName_S1 VARCHAR,"
"StepName_S2 VARCHAR,"
"StepName_S3 VARCHAR,"
"Parameter1_S1 DOUBLE,"
"Parameter1_S2 DOUBLE,"
"Parameter1_S3 DOUBLE,"
"Parameter2_S1 DOUBLE,"
"Parameter2_S2 DOUBLE,"
"Parameter2_S3 DOUBLE,"
"Parameter3_S1 DOUBLE,"
"Parameter3_S2 DOUBLE,"
"Parameter3_S3 DOUBLE,"
"Parameter4_S1 DOUBLE,"
"Parameter4_S2 DOUBLE,"
"Parameter4_S3 DOUBLE,"
"Parameter5_S1 DOUBLE,"
"Parameter5_S2 DOUBLE,"
"Parameter5_S3 DOUBLE"
"); "
"INSERT INTO WorkorderSteps ("
"WorkOrder, DYELOT, ProgramID, Program, ReDye, Mode, Step, StepID, StepName, "
"ParameterName, Parameter1, Parameter2, Parameter3, Parameter4, Parameter5, "
"Parameter6, Parameter7, Parameter8, Parameter9, Parameter10, Remark, StepTime, "
"StepID_S1, StepID_S2, StepID_S3, StepName_S1, StepName_S2, StepName_S3, "
"Parameter1_S1, Parameter1_S2, Parameter1_S3, Parameter2_S1, Parameter2_S2, Parameter2_S3, "
"Parameter3_S1, Parameter3_S2, Parameter3_S3, Parameter4_S1, Parameter4_S2, Parameter4_S3, "
"Parameter5_S1, Parameter5_S2, Parameter5_S3"
") "
"SELECT "
"WorkOrder, DYELOT, ProgramID, Program, ReDye, Mode, Step, StepID, StepName, "
"ParameterName, Parameter1, Parameter2, Parameter3, Parameter4, Parameter5, "
"Parameter6, Parameter7, Parameter8, Parameter9, Parameter10, Remark, StepTime, "
"StepID_S1, StepID_S2, StepID_S3, StepName_S1, StepName_S2, StepName_S3, "
"Parameter1_S1, Parameter1_S2, Parameter1_S3, Parameter2_S1, Parameter2_S2, Parameter2_S3, "
"Parameter3_S1, Parameter3_S2, Parameter3_S3, Parameter4_S1, Parameter4_S2, Parameter4_S3, "
"Parameter5_S1, Parameter5_S2, Parameter5_S3 "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_workorder_set =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM WorkOrderSet; "
"DROP TABLE WorkOrderSet; "
"CREATE TABLE WorkOrderSet ("
"WorkOrder VARCHAR,"
"ReDye INT DEFAULT (0),"
"PumpSpeed INT,"
"Blower INT,"
"Swing INT,"
"ClothWheel INT,"
"Nozzle INT"
"); "
"INSERT INTO WorkOrderSet ("
"WorkOrder, ReDye, PumpSpeed, Blower, Swing, ClothWheel, Nozzle"
") "
"SELECT "
"WorkOrder, ReDye, PumpSpeed, Blower, Swing, ClothWheel, Nozzle "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_workorder =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM WorkOrder; "
"DROP TABLE WorkOrder; "
"CREATE TABLE WorkOrder ("
"WorkOrder VARCHAR,"
"Dyelot VARCHAR,"
"ReDye INT DEFAULT (0),"
"ProgramName VARCHAR,"
"StartTime DATETIME,"
"EndTime DATETIME,"
"Time TEXT,"
"lock INT,"
"State INT,"
"ProgramID VARCHAR,"
"Machines VARCHAR,"
"color VARCHAR,"
"ColorNumber VARCHAR,"
"Client VARCHAR,"
"ClothWeight VARCHAR,"
"ClothSpecies VARCHAR,"
"BathRatio VARCHAR,"
"Total VARCHAR,"
"USER VARCHAR,"
"ColorName VARCHAR,"
"Remark TEXT"
"); "
"INSERT INTO WorkOrder ("
"WorkOrder, Dyelot, ReDye, ProgramName, StartTime, EndTime, Time, "
"lock, State, ProgramID, Machines, color, ColorNumber, Client, "
"ClothWeight, ClothSpecies, BathRatio, Total, USER, ColorName, Remark"
") "
"SELECT "
"WorkOrder, Dyelot, ReDye, ProgramName, StartTime, EndTime, Time, "
"lock, State, ProgramID, Machines, color, ColorNumber, Client, "
"ClothWeight, ClothSpecies, BathRatio, Total, USER, ColorName, Remark "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_run_table =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM RUN; "
"DROP TABLE RUN; "
"CREATE TABLE RUN ("
"WorkOrder VARCHAR,"
"DYELOT VARCHAR,"
"ReDye INT DEFAULT (0),"
"RUN INT,"
"Mode VARCHAR,"
"ProgramID VARCHAR,"
"Program VARCHAR,"
"StepID VARCHAR,"
"Step INT,"
"StepName VARCHAR,"
"ParameterName VARCHAR,"
"Parameter1 DOUBLE,"
"Parameter2 DOUBLE,"
"Parameter3 DOUBLE,"
"Parameter4 DOUBLE,"
"Parameter5 DOUBLE,"
"Parameter6 INT,"
"Parameter7 INT,"
"Parameter8 INT,"
"Parameter9 INT,"
"Parameter10 INT,"
"Remark VARCHAR,"
"StepTime INT,"
"StepID_S1 VARCHAR,"
"StepID_S2 VARCHAR,"
"StepID_S3 VARCHAR,"
"StepName_S1 VARCHAR,"
"StepName_S2 VARCHAR,"
"StepName_S3 VARCHAR,"
"Parameter1_S1 DOUBLE,"
"Parameter1_S2 DOUBLE,"
"Parameter1_S3 DOUBLE,"
"Parameter2_S1 DOUBLE,"
"Parameter2_S2 DOUBLE,"
"Parameter2_S3 DOUBLE,"
"Parameter3_S1 DOUBLE,"
"Parameter3_S2 DOUBLE,"
"Parameter3_S3 DOUBLE,"
"Parameter4_S1 DOUBLE,"
"Parameter4_S2 DOUBLE,"
"Parameter4_S3 DOUBLE,"
"Parameter5_S1 DOUBLE,"
"Parameter5_S2 DOUBLE,"
"Parameter5_S3 DOUBLE"
"); "
"INSERT INTO RUN ("
"WorkOrder, DYELOT, ReDye, RUN, Mode, ProgramID, Program, "
"StepID, Step, StepName, ParameterName, "
"Parameter1, Parameter2, Parameter3, Parameter4, Parameter5, "
"Parameter6, Parameter7, Parameter8, Parameter9, Parameter10, "
"Remark, StepTime, "
"StepID_S1, StepID_S2, StepID_S3, "
"StepName_S1, StepName_S2, StepName_S3, "
"Parameter1_S1, Parameter1_S2, Parameter1_S3, "
"Parameter2_S1, Parameter2_S2, Parameter2_S3, "
"Parameter3_S1, Parameter3_S2, Parameter3_S3, "
"Parameter4_S1, Parameter4_S2, Parameter4_S3, "
"Parameter5_S1, Parameter5_S2, Parameter5_S3"
") "
"SELECT "
"WorkOrder, DYELOT, ReDye, RUN, Mode, ProgramID, Program, "
"StepID, Step, StepName, ParameterName, "
"Parameter1, Parameter2, Parameter3, Parameter4, Parameter5, "
"Parameter6, Parameter7, Parameter8, Parameter9, Parameter10, "
"Remark, StepTime, "
"StepID_S1, StepID_S2, StepID_S3, "
"StepName_S1, StepName_S2, StepName_S3, "
"Parameter1_S1, Parameter1_S2, Parameter1_S3, "
"Parameter2_S1, Parameter2_S2, Parameter2_S3, "
"Parameter3_S1, Parameter3_S2, Parameter3_S3, "
"Parameter4_S1, Parameter4_S2, Parameter4_S3, "
"Parameter5_S1, Parameter5_S2, Parameter5_S3 "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_dyelot_table =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM Dyelot; "
"DROP TABLE Dyelot; "
"CREATE TABLE Dyelot ("
"WorkOrder VARCHAR,"
"Dyelot VARCHAR,"
"ReDye INT,"
"Machine VARCHAR,"
"Step INT,"
"Tank INT,"
"State INT,"
"ProductCode VARCHAR,"
"ProductName VARCHAR,"
"ProductType INT,"
"Grams FLOAT,"
"Amount FLOAT,"
"CALL_TIME VARCHAR,"
"DispenseEndTime VARCHAR,"
"Type INT"
"); "
"INSERT INTO Dyelot ("
"WorkOrder, Dyelot, ReDye, Machine, Step, Tank, State, "
"ProductCode, ProductName, ProductType, Grams, Amount, "
"CALL_TIME, DispenseEndTime, Type"
") "
"SELECT "
"WorkOrder, Dyelot, Redye, Machine, Step, Tank, State, "
"ProductCode, ProductName, ProductType, Grams, Amount, "
"CALL_TIME, DispenseEndTime, Type "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_iolog_table =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM IOLog; "
"DROP TABLE IOLog; "
"CREATE TABLE IOLog ("
"ID VARCHAR,"
"IOName VARCHAR,"
"type VARCHAR,"
"Value DOUBLE DEFAULT (0),"
"DIO BOOLEAN,"
"AIO INTEGER DEFAULT (0),"
"PLC VARCHAR"
"); "
"INSERT INTO IOLog ("
"ID, IOName, type, Value, DIO, AIO, PLC"
") "
"SELECT "
"ID, IOName, type, Value, DIO, AIO, PLC "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
static const char *sql_upgrade_chart_table =
"PRAGMA foreign_keys = OFF; "
"BEGIN TRANSACTION; "
"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM Chart; "
"DROP TABLE Chart; "
"CREATE TABLE Chart ("
"WorkOrder VARCHAR,"
"DYELOT VARCHAR,"
"ReDye INT,"
"Name VARCHAR,"
"Time VARCHAR,"
"MTT DOUBLE DEFAULT (0),"
"MTL DOUBLE DEFAULT (0),"
"STTA DOUBLE DEFAULT (0),"
"STLA DOUBLE DEFAULT (0),"
"STTB DOUBLE DEFAULT (0),"
"STLB DOUBLE DEFAULT (0),"
"STTC DOUBLE DEFAULT (0),"
"STLC DOUBLE DEFAULT (0),"
"MTH DOUBLE DEFAULT (0),"
"MST DOUBLE DEFAULT (0),"
"MSL DOUBLE DEFAULT (0),"
"MUT DOUBLE DEFAULT (0)"
"); "
"INSERT INTO Chart ("
"WorkOrder, DYELOT, ReDye, Name, Time, "
"MTT, MTL, STTA, STLA, STTB, STLB, STTC, STLC, "
"MTH, MST, MSL, MUT"
") "
"SELECT WorkOrder, DYELOT, COALESCE(ReDye, 0), Name, Time, "
"MTT, MTL, STTA, STLA, STTB, STLB, STTC, STLC, "
"MTH, MST, MSL, MUT "
"FROM sqlitestudio_temp_table; "
"DROP TABLE sqlitestudio_temp_table; "
"CREATE UNIQUE INDEX IF NOT EXISTS idx_chart_time_desc ON Chart (Time DESC); "
"PRAGMA foreign_keys = ON; "
"COMMIT;";
void db_sqlite(void *parameter)
{
int db_HelperInit;
int db_;
if (access(DB_NAME, F_OK) == 0)
{
rt_kprintf("DB ok\n");
sqlite3_open(DB_NAME, db);
}else{
rt_kprintf("DB no \n");
sqlite3_open(DB_NAME, db);
//创建表
sqlite3_exec(db, sql_upgrade_workorder_steps, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_workorder_set, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_workorder, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_run_table, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_dyelot_table, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_iolog_table, NULL, NULL, NULL);
sqlite3_exec(db, sql_upgrade_chart_table, NULL, NULL, NULL);
}
db_HelperInit = db_helper_init();
if(db_HelperInit =RT_EOK){
rt_kprintf("HelperInit database\n");
}else {
// db_HelperInit = db_helper_init();
// if(db_HelperInit =RT_EOK){
// rt_kprintf("HelperInit database\n");
// }else {
// sqlite3_open(DB_NAME, db);
// db_ = db_create_database("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(32) NOT NULL,score INT NOT NULL);");
// if(db_=0){rt_kprintf("database ok\n");}else{rt_kprintf("database no\n");}
}
// }
/* int fd = 0;
const char *dbname = db_get_name();
@@ -57,7 +397,7 @@ void thread_DB_SQLite(void)
{
/* 初始化线程 1,名称是 thread1,入口是 thread1_entry*/
rt_thread_t tid;
tid = rt_thread_create("db_sqlite", db_sqlite, RT_NULL, 1024*32, 3, 10);
tid = rt_thread_create("db_sqlite", db_sqlite, RT_NULL, 1024*64, 3, 10);
if (tid != RT_NULL)
{