diff --git a/.config b/.config index e45f21e..7cfba4c 100644 --- a/.config +++ b/.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 # diff --git a/.cproject b/.cproject index fb30876..ec676f4 100644 --- a/.cproject +++ b/.cproject @@ -1,529 +1,529 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.settings/.rtmenus b/.settings/.rtmenus index 740e67b..c35ae97 100644 Binary files a/.settings/.rtmenus and b/.settings/.rtmenus differ diff --git a/applications/DBSQL/DB_SQLite.c b/applications/DBSQL/DB_SQLite.c index 0548067..8195904 100644 --- a/applications/DBSQL/DB_SQLite.c +++ b/applications/DBSQL/DB_SQLite.c @@ -10,24 +10,364 @@ #include #include #include +#include #include "DB_SQLite.h" +#include "sqlite3.h" #include -#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) { diff --git a/applications/main.c b/applications/main.c index a8a5478..6cf955a 100644 --- a/applications/main.c +++ b/applications/main.c @@ -29,6 +29,7 @@ int main(void) thread_RUN_LED();//运行指示灯线程 thread_DB_SQLite(); + start_uart_thread(); data_comm_init(); diff --git a/rt-thread/components/dfs/filesystems/elmfat/dfs_elm.c b/rt-thread/components/dfs/filesystems/elmfat/dfs_elm.c index eb57034..d862cd3 100644 --- a/rt-thread/components/dfs/filesystems/elmfat/dfs_elm.c +++ b/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 */ diff --git a/rt-thread/components/dfs/filesystems/elmfat/ffconf.h b/rt-thread/components/dfs/filesystems/elmfat/ffconf.h index d028648..0a72331 100644 --- a/rt-thread/components/dfs/filesystems/elmfat/ffconf.h +++ b/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 diff --git a/rtconfig.h b/rtconfig.h index d7332ff..6db0f28 100644 --- a/rtconfig.h +++ b/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