Browse Source

sqlite数据库,exfat支持

master
sc 7 hours ago
parent
commit
855a50bfeb
  1. 11
      .config
  2. 1052
      .cproject
  3. BIN
      .settings/.rtmenus
  4. 358
      applications/DBSQL/DB_SQLite.c
  5. 1
      applications/main.c
  6. 31
      rt-thread/components/dfs/filesystems/elmfat/dfs_elm.c
  7. 4
      rt-thread/components/dfs/filesystems/elmfat/ffconf.h
  8. 6
      rtconfig.h

11
.config

@ -133,11 +133,11 @@ CONFIG_RT_DFS_ELM_WORD_ACCESS=y
# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
CONFIG_RT_DFS_ELM_USE_LFN_3=y
CONFIG_RT_DFS_ELM_USE_LFN=3
CONFIG_RT_DFS_ELM_LFN_UNICODE_0=y
# CONFIG_RT_DFS_ELM_LFN_UNICODE_0 is not set
# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set
# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set
CONFIG_RT_DFS_ELM_LFN_UNICODE_2=y
# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set
CONFIG_RT_DFS_ELM_LFN_UNICODE=0
CONFIG_RT_DFS_ELM_LFN_UNICODE=2
CONFIG_RT_DFS_ELM_MAX_LFN=255
CONFIG_RT_DFS_ELM_DRIVES=2
CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512
@ -174,7 +174,9 @@ CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_MTD_NOR is not set
# CONFIG_RT_USING_MTD_NAND is not set
# CONFIG_RT_USING_PM is not set
# CONFIG_RT_USING_RTC is not set
CONFIG_RT_USING_RTC=y
CONFIG_RT_USING_ALARM=y
# CONFIG_RT_USING_SOFT_RTC is not set
CONFIG_RT_USING_SDIO=y
CONFIG_RT_SDIO_STACK_SIZE=1024
CONFIG_RT_SDIO_THREAD_PRIORITY=15
@ -536,6 +538,7 @@ CONFIG_PKG_CJSON_VER="v1.7.17"
# CONFIG_PKG_USING_RVBACKTRACE is not set
# CONFIG_PKG_USING_HPATCHLITE is not set
# CONFIG_PKG_USING_THREAD_METRIC is not set
# CONFIG_PKG_USING_UORB is not set
# end of tools packages
#

1052
.cproject

File diff suppressed because it is too large

BIN
.settings/.rtmenus

Binary file not shown.

358
applications/DBSQL/DB_SQLite.c

@ -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();
// db_HelperInit = db_helper_init();
if(db_HelperInit =RT_EOK){
rt_kprintf("HelperInit database\n");
}else {
// 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)
{

1
applications/main.c

@ -29,6 +29,7 @@ int main(void)
thread_RUN_LED();//运行指示灯线程
thread_DB_SQLite();
start_uart_thread();
data_comm_init();

31
rt-thread/components/dfs/filesystems/elmfat/dfs_elm.c

@ -863,7 +863,7 @@ DSTATUS disk_status(BYTE drv)
}
/* Read Sector(s) */
DRESULT disk_read(BYTE drv, BYTE *buff, DWORD sector, UINT count)
/*DRESULT disk_read(BYTE drv, BYTE *buff, DWORD sector, UINT count)
{
rt_size_t result;
rt_device_t device = disk[drv];
@ -875,10 +875,22 @@ DRESULT disk_read(BYTE drv, BYTE *buff, DWORD sector, UINT count)
}
return RES_ERROR;
}
}*/
DRESULT disk_read(BYTE drv, BYTE *buff, LBA_t sector, UINT count)
{
rt_size_t result;
rt_device_t device = disk[drv];
result = rt_device_read(device, sector, buff, count);
if (result == count)
{
return RES_OK;
}
return RES_ERROR;
}
/* Write Sector(s) */
DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, UINT count)
/*DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, UINT count)
{
rt_size_t result;
rt_device_t device = disk[drv];
@ -890,6 +902,19 @@ DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, UINT count)
}
return RES_ERROR;
}*/
DRESULT disk_write(BYTE drv, const BYTE *buff, LBA_t sector, UINT count)
{
rt_size_t result;
rt_device_t device = disk[drv];
result = rt_device_write(device, sector, buff, count);
if (result == count)
{
return RES_OK;
}
return RES_ERROR;
}
/* Miscellaneous Functions */

4
rt-thread/components/dfs/filesystems/elmfat/ffconf.h

@ -233,7 +233,7 @@
/ GET_SECTOR_SIZE command. */
#define FF_LBA64 0
#define FF_LBA64 1
/* This option switches support for 64-bit LBA. (0:Disable or 1:Enable)
/ To enable the 64-bit LBA, also exFAT needs to be enabled. (FF_FS_EXFAT == 1) */
@ -259,7 +259,7 @@
/ At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes.
/ Instead of private sector buffer eliminated from the file object, common sector
/ buffer in the filesystem object (FATFS) is used for the file data transfer. */
#define RT_DFS_ELM_USE_EXFAT//exfat支持
#ifdef RT_DFS_ELM_USE_EXFAT
#define FF_FS_EXFAT 1
#else

6
rtconfig.h

@ -91,8 +91,8 @@
#define RT_DFS_ELM_WORD_ACCESS
#define RT_DFS_ELM_USE_LFN_3
#define RT_DFS_ELM_USE_LFN 3
#define RT_DFS_ELM_LFN_UNICODE_0
#define RT_DFS_ELM_LFN_UNICODE 0
#define RT_DFS_ELM_LFN_UNICODE_2
#define RT_DFS_ELM_LFN_UNICODE 2
#define RT_DFS_ELM_MAX_LFN 255
#define RT_DFS_ELM_DRIVES 2
#define RT_DFS_ELM_MAX_SECTOR_SIZE 512
@ -109,6 +109,8 @@
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_PIN
#define RT_USING_RTC
#define RT_USING_ALARM
#define RT_USING_SDIO
#define RT_SDIO_STACK_SIZE 1024
#define RT_SDIO_THREAD_PRIORITY 15

Loading…
Cancel
Save