commit e957e1becc0faab16b9225fcecd5d7c8d51298f9 Author: Slyvtt Date: Sun Feb 19 21:48:15 2023 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be51d83 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Build files +/build-fx +/build-cg +/*.g1a +/*.g3a + +# Python bytecode +__pycache__/ + +# Common IDE files +*.sublime-project +*.sublime-workspace +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..fb9de98 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.15) +project(MyAddin) + +include(GenerateG1A) +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.9 REQUIRED) + +set(SOURCES + src/main.c + # ... +) +# Shared assets, fx-9860G-only assets and fx-CG-50-only assets +set(ASSETS + # ... +) +set(ASSETS_fx + assets-fx/example.png + # ... +) +set(ASSETS_cg + assets-cg/example.png + # ... +) + +fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) + +add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) +target_compile_options(myaddin PRIVATE -Wall -Wextra -Os) +target_link_libraries(myaddin Gint::Gint) + +if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) + generate_g3a(TARGET myaddin OUTPUT "Scanftst.g3a" + NAME "ScanfTst" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) +endif() diff --git a/DispCap1.bmp b/DispCap1.bmp new file mode 100644 index 0000000..d98d9bf Binary files /dev/null and b/DispCap1.bmp differ diff --git a/assets-cg/example.png b/assets-cg/example.png new file mode 100644 index 0000000..8826800 Binary files /dev/null and b/assets-cg/example.png differ diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt new file mode 100644 index 0000000..d435d5f --- /dev/null +++ b/assets-cg/fxconv-metadata.txt @@ -0,0 +1,3 @@ +example.png: + type: bopti-image + name: img_example diff --git a/assets-cg/icon-sel.png b/assets-cg/icon-sel.png new file mode 100644 index 0000000..7137b50 Binary files /dev/null and b/assets-cg/icon-sel.png differ diff --git a/assets-cg/icon-uns.png b/assets-cg/icon-uns.png new file mode 100644 index 0000000..3c99f62 Binary files /dev/null and b/assets-cg/icon-uns.png differ diff --git a/assets-fx/example.png b/assets-fx/example.png new file mode 100644 index 0000000..b26ba9a Binary files /dev/null and b/assets-fx/example.png differ diff --git a/assets-fx/fxconv-metadata.txt b/assets-fx/fxconv-metadata.txt new file mode 100644 index 0000000..d435d5f --- /dev/null +++ b/assets-fx/fxconv-metadata.txt @@ -0,0 +1,3 @@ +example.png: + type: bopti-image + name: img_example diff --git a/assets-fx/icon.png b/assets-fx/icon.png new file mode 100644 index 0000000..c92f12a Binary files /dev/null and b/assets-fx/icon.png differ diff --git a/data.txt b/data.txt new file mode 100644 index 0000000..ad1a27a --- /dev/null +++ b/data.txt @@ -0,0 +1,7 @@ +z +12345 +6789.123 +a +b +987 +-456.321 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..d20f31d --- /dev/null +++ b/src/main.c @@ -0,0 +1,174 @@ +#include +#include +#include +#include +#include +#include + +char c; +char c1, c2; +char temp1, temp2; +int i1, i2; +float f1, f2; + +float sd; +float sf; +int n[9]; + +void operate( void ) +{ + + FILE* fichier = fopen( "data.txt", "r" ); + fscanf( fichier, "%c%n", &c, &n[0] ); + fscanf( fichier, "%d%n", &i1, &n[1] ); + fscanf( fichier, "%f%n", &f1, &n[2] ); + + /* + fscanf( fichier, "%c", &temp1 ); + fscanf( fichier, "%c", &c1 ); + fscanf( fichier, "%c", &temp2 ); + fscanf( fichier, "%c", &c2 ); + */ + + fscanf( fichier, "%c%n%c%n%c%n%c%n", &temp1, &n[3], &c1, &n[4], &temp2, &n[5], &c2, &n[6] ); + + fscanf( fichier, "%u%n", &i2, &n[7] ); + fscanf( fichier, "%g%n", &f2, &n[8] ); + fclose( fichier ); +} + + +int main(void) +{ + __printf_enable_fp(); + + dclear(C_WHITE); + dtext(1, 1, C_BLACK, "Sample fxSDK add-in."); + dupdate(); + + gint_world_switch( GINT_CALL( operate )); + + dprint( 1, 20, C_GREEN, "0/ FILE value : char : %c - n= %d ", c, n[0] ); + dprint( 1, 30, C_BLUE, "1/ FILE value : integer : %d - n= %d ", i1, n[1] ); + dprint( 1, 40, C_RED, "2/ FILE value : float : %f - n= %d ", f1, n[2] ); + dprint( 1, 50, C_GREEN, "3/ FILE value : char : %c - %c - n= %d ", temp1, c1, n[4] ); + dprint( 1, 60, C_GREEN, "4/ FILE value : char : %c - %c - n= %d ", temp2, c2, n[6] ); + dprint( 1, 70, C_BLUE, "5/ FILE value : integer : %d - n= %d ", i2, n[7] ); + dprint( 1, 80, C_RED, "6/ FILE value : float : %f - n= %d ", f2, n[8] ); + + + sscanf( "6789.123", "%f", &sf ); + sscanf( "-123456789.123456789", "%f", &sd ); + dprint( 1, 90, C_RED, "7/ STR value : float : %f ", sf ); + dprint( 1, 100, C_RED, "8/ STR value : float : %f ", sd ); + + char tab[10]={0}; + int n; + + sscanf( " AbCdEfgHiJkLmNoP", "%5c%n", &tab[0], &n ); + dprint( 1, 110, C_GREEN, "9/ STR value : char* : %s - n= %d", tab, n ); + + sscanf( " AbCdEfgHiJkLmNoP", " %5c%n", &tab[0], &n ); + dprint( 1, 120, C_GREEN, "10/ STR value : char* : %s n= %d", tab, n ); + + sscanf( " AbCdEfgHiJkLmNoP", "%% %10c%n", &tab[0], &n ); + dprint( 1, 130, C_GREEN, "11/ STR value : char* : %s n= %d", tab, n ); + + char str[30]; + sscanf( " AbCdEfgHiJkLmNoP", "%s%n", &str[0], &n ); + dprint( 1, 140, C_GREEN, "12/ STR value : char* : %s n= %d", str, n ); + + sscanf( " AbCdEfgHiJkLmNoP", " %s%n", &str[0], &n ); + dprint( 1, 150, C_GREEN, "12/ STR value : char* : %s n= %d", str, n ); + + sscanf( " AbCdEfgHiJkLmNoP", "%10s%n", &str[0], &n ); + dprint( 1, 160, C_GREEN, "13/ STR value : char* : %s n= %d", str, n ); + + sscanf( " AbCdEfgHiJkLmNoP", " %10s%n", &str[0], &n ); + dprint( 1, 170, C_GREEN, "14/ STR value : char* : %s n= %d", str, n ); + + + int val = 123; + char buf[100]; + sprintf(buf, "%p", (void*)&val); + dprint( 1, 180, C_BLACK,"15/ Original =%s\n", buf); + void *ptr; + sscanf(buf, "%p", &ptr); + dprint( 1, 190, C_BLACK,"16/ Read back=%p\n", ptr); + int *iPtr = ptr; + if (iPtr == &val) { + dprint( 1, 200, C_BLACK,"Pointers match\n"); + } + + char a; + short b; + unsigned int i; + int d; + + sscanf( "4294967295", "%u", &i ); + sscanf( "4294967295", "%hd", &b ); + sscanf( "4294967295", "%hhd", &a ); + dprint( 1, 210, C_BLUE, "17/ %d %d %u", a, b, i ); + + dupdate(); + + getkey(); + + dclear( C_WHITE); + + sscanf( "1234567890", "%u", &i ); + dprint( 1, 10, C_BLUE, "18/ full read : %u", i ); + + sscanf( "1234567890", "%1u", &i ); + dprint( 1, 20, C_BLUE, "19/ 1 char max read : %u", i ); + + sscanf( "1234567890", "%5u", &i ); + dprint( 1, 30, C_BLUE, "20/ 5 char max read : %u", i ); + + sscanf( "1234567890", "%20u", &i ); + dprint( 1, 40, C_BLUE, "21/ 20 char max read : %u", i ); + + sscanf( "-1234567890", "%d", &d ); + dprint( 1, 50, C_BLUE, "18/ full read : %d", d ); + + sscanf( "-1234567890", "%2d", &d ); + dprint( 1, 60, C_BLUE, "19/ 2 char max read : %d", d ); + + sscanf( "-1234567890", "%5d", &d ); + dprint( 1, 70, C_BLUE, "20/ 5 char max read : %d", d ); + + sscanf( "-1234567890", "%20d", &d ); + dprint( 1, 80, C_BLUE, "21/ 20 char max read : %d", d ); + + + float g; + + sscanf( "12345.67890", "%f", &g ); + dprint( 1, 100, C_RED, "18/ full read : %f", g ); + + sscanf( "12345.67890", "%1f", &g ); + dprint( 1, 110, C_RED, "19/ 1 char max read : %f", g ); + + sscanf( "12345.67890", "%5f", &g ); + dprint( 1, 120, C_RED, "20/ 5 char max read : %f", g ); + + sscanf( "12345.67890", "%20f", &g ); + dprint( 1, 130, C_RED, "21/ 20 char max read : %f", g ); + + sscanf( "-12345.67890", "%f", &g ); + dprint( 1, 140, C_RED, "18/ full read : %f", g ); + + sscanf( "-12345.67890", "%2f", &g ); + dprint( 1, 150, C_RED, "19/ 2 char max read : %f", g ); + + sscanf( "-12345.67890", "%5f", &g ); + dprint( 1, 160, C_RED, "20/ 5 char max read : %f", g ); + + sscanf( "-12345.67890", "%20f", &g ); + dprint( 1, 170, C_RED, "21/ 20 char max read : %f", g ); + + + dupdate(); + getkey(); + return 1; +}