You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

334 lines
11 KiB

/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-10-20 Administrator the first version
*/
#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 "/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"
"); ";
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"
"); ";
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"
"); ";
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"
");";
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"
"); ";
static const char *sql_upgrade_iolog_table =
// "CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM IOLog; "
// "DROP TABLE IOLog; "
"CREATE TABLE IOLog ("
"ID varchar(32),"
"IOName varchar(32),"
"type varchar(32),"
"Value DOUBLE DEFAULT (0),"
"DIO BOOLEAN,"
"AIO INTEGER DEFAULT (0),"
"PLC varchar(32)"
"); ";
static const char *sql_upgrade_chart_table =
//"CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM Chart; "
// "DROP TABLE Chart; "
"CREATE TABLE Chart ("
"WorkOrder varchar(32),"
"DYELOT varchar(32),"
"ReDye INTEGER ,"
"Name varchar(32),"
"Time varchar(32),"
"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)"
"); ";
void db_sqlite(void *parameter)
{
if (access(DB_NAME, F_OK) == 0)
{
rt_kprintf("DB open\n");
if (db_connect(DB_NAME) == RT_EOK){
if(db_table_is_exist("WorkorderSteps")<=0){
if(db_create_database(sql_upgrade_workorder_steps)==0)
{rt_kprintf("WorkorderSteps Created successfully \n");}else{rt_kprintf("WorkorderSteps Creation failed \n");}
}
if(db_table_is_exist("WorkOrderSet")<=0){
if(db_create_database(sql_upgrade_workorder_set)==0)
{rt_kprintf("WorkOrderSet Created successfully \n");}else{rt_kprintf("WorkOrderSet Creation failed \n");}
}
if(db_table_is_exist("WorkOrder")<=0){
if(db_create_database(sql_upgrade_workorder)==0)
{rt_kprintf("WorkOrder Created successfully \n");}else{rt_kprintf("WorkOrder Creation failed \n");}
}
if(db_table_is_exist("RUN")<=0){
if(db_create_database(sql_upgrade_run_table)==0)
{rt_kprintf("RUN Created successfully \n");}else{rt_kprintf("RUN Creation failed \n");}
}
if(db_table_is_exist("Dyelot")<=0){
if(db_create_database(sql_upgrade_dyelot_table)==0)
{rt_kprintf("Dyelot Created successfully \n");}else{rt_kprintf("Dyelot Creation failed \n");}
}
if(db_table_is_exist("IOLog")<=0){
if(db_create_database(sql_upgrade_iolog_table)==0)
{rt_kprintf("IOLog Created successfully \n");}else{rt_kprintf("IOLog Creation failed \n");}
}
if(db_table_is_exist("Chart")<=0){
if(db_create_database(sql_upgrade_chart_table)==0)
{rt_kprintf("Chart Created successfully \n");}else{rt_kprintf("Chart Creation failed \n");}
}
const char *sql = "CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(32) NOT NULL,score INT NOT NULL);";
db_create_database(sql);
}else{
rt_kprintf("DB open failed \n");
}
}else{
rt_kprintf("DB open failed \n");
sqlite3_open(DB_NAME, db);
//创建表
db_create_database(sql_upgrade_workorder_steps);
db_create_database(sql_upgrade_workorder_set);
db_create_database(sql_upgrade_workorder);
db_create_database(sql_upgrade_run_table);
db_create_database(sql_upgrade_dyelot_table);
db_create_database(sql_upgrade_iolog_table);
db_create_database(sql_upgrade_chart_table);
}
// 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();
fd = open(dbname, O_RDONLY);
if (fd > 0)
rt_kprintf("%s exist\r\n", dbname);
else
rt_kprintf("%s not exist\r\n");
const char *sql = "CREATE TABLE IF NOT EXISTS student(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(32) NOT NULL,score INT NOT NULL);";
rt_kprintf("sql cmd: %s\r\n\r\n", sql);
int ret = db_create_database(sql);
rt_kprintf("sql ret: %d\r\n", ret);*/
// sqlite3_os_init();
/* int rc = db_connect("/rt.db");
if (rc <0) {
const char *sql = "CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(32) NOT NULL,score INT NOT NULL);";
int db_create_database(sql);
}*/
}
/* 线程 */
void thread_DB_SQLite(void)
{
/* 初始化线程 1,名称是 thread1,入口是 thread1_entry*/
rt_thread_t tid;
tid = rt_thread_create("db_sqlite", db_sqlite, RT_NULL, 1024*64, 3, 15);
if (tid != RT_NULL)
{
rt_thread_startup(tid);
}
else
{
rt_kprintf("Failed to create sqlite_sys thread!\n");
}
// return 0;
}