cleanup + add new build method
This commit is contained in:
parent
3d8b3f119b
commit
eb9a1d0068
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"configuration": "cpu=atmega328",
|
||||
"board": "arduino:avr:nano",
|
||||
"programmer": "avrisp",
|
||||
"sketch": "nano_c_mk1\\nano_c_mk1.ino"
|
||||
}
|
|
@ -0,0 +1,541 @@
|
|||
{
|
||||
"version": 4,
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Arduino",
|
||||
"compilerPath": "C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\bin\\avr-g++",
|
||||
"compilerArgs": [
|
||||
"-w",
|
||||
"-std=gnu++11",
|
||||
"-fpermissive",
|
||||
"-fno-exceptions",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
"-fno-threadsafe-statics",
|
||||
"-Wno-error=narrowing"
|
||||
],
|
||||
"intelliSenseMode": "gcc-x64",
|
||||
"includePath": [
|
||||
"C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino",
|
||||
"C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs",
|
||||
"C:\\Users\\yuhc2\\Documents\\Arduino\\libraries\\Adafruit_ADS1X15",
|
||||
"C:\\Users\\yuhc2\\Documents\\Arduino\\libraries\\Adafruit_BusIO",
|
||||
"C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src",
|
||||
"C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\SPI\\src",
|
||||
"c:\\users\\yuhc2\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include",
|
||||
"c:\\users\\yuhc2\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include-fixed",
|
||||
"c:\\users\\yuhc2\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\avr\\include"
|
||||
],
|
||||
"forcedInclude": [
|
||||
"C:\\Users\\yuhc2\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino\\Arduino.h"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++11",
|
||||
"defines": [
|
||||
"F_CPU=16000000L",
|
||||
"ARDUINO=10607",
|
||||
"ARDUINO_AVR_NANO",
|
||||
"ARDUINO_ARCH_AVR",
|
||||
"__DBL_MIN_EXP__=(-125)",
|
||||
"__HQ_FBIT__=15",
|
||||
"__cpp_attributes=200809",
|
||||
"__UINT_LEAST16_MAX__=0xffffU",
|
||||
"__ATOMIC_ACQUIRE=2",
|
||||
"__SFRACT_IBIT__=0",
|
||||
"__FLT_MIN__=1.17549435e-38F",
|
||||
"__GCC_IEC_559_COMPLEX=0",
|
||||
"__BUILTIN_AVR_SLEEP=1",
|
||||
"__BUILTIN_AVR_COUNTLSULLK=1",
|
||||
"__cpp_aggregate_nsdmi=201304",
|
||||
"__BUILTIN_AVR_COUNTLSULLR=1",
|
||||
"__UFRACT_MAX__=0XFFFFP-16UR",
|
||||
"__UINT_LEAST8_TYPE__=unsigned char",
|
||||
"__DQ_FBIT__=63",
|
||||
"__INTMAX_C(c)=c ## LL",
|
||||
"__ULFRACT_FBIT__=32",
|
||||
"__SACCUM_EPSILON__=0x1P-7HK",
|
||||
"__CHAR_BIT__=8",
|
||||
"__USQ_IBIT__=0",
|
||||
"__UINT8_MAX__=0xff",
|
||||
"__ACCUM_FBIT__=15",
|
||||
"__WINT_MAX__=0x7fff",
|
||||
"__FLT32_MIN_EXP__=(-125)",
|
||||
"__cpp_static_assert=200410",
|
||||
"__USFRACT_FBIT__=8",
|
||||
"__ORDER_LITTLE_ENDIAN__=1234",
|
||||
"__SIZE_MAX__=0xffffU",
|
||||
"__WCHAR_MAX__=0x7fff",
|
||||
"__LACCUM_IBIT__=32",
|
||||
"__DBL_DENORM_MIN__=double(1.40129846e-45L)",
|
||||
"__GCC_ATOMIC_CHAR_LOCK_FREE=1",
|
||||
"__GCC_IEC_559=0",
|
||||
"__FLT_EVAL_METHOD__=0",
|
||||
"__BUILTIN_AVR_LLKBITS=1",
|
||||
"__cpp_binary_literals=201304",
|
||||
"__LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK",
|
||||
"__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1",
|
||||
"__BUILTIN_AVR_HKBITS=1",
|
||||
"__BUILTIN_AVR_BITSLLK=1",
|
||||
"__FRACT_FBIT__=15",
|
||||
"__BUILTIN_AVR_BITSLLR=1",
|
||||
"__cpp_variadic_templates=200704",
|
||||
"__UINT_FAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__SIG_ATOMIC_TYPE__=char",
|
||||
"__BUILTIN_AVR_UHKBITS=1",
|
||||
"__UACCUM_FBIT__=16",
|
||||
"__DBL_MIN_10_EXP__=(-37)",
|
||||
"__FINITE_MATH_ONLY__=0",
|
||||
"__cpp_variable_templates=201304",
|
||||
"__LFRACT_IBIT__=0",
|
||||
"__GNUC_PATCHLEVEL__=0",
|
||||
"__FLT32_HAS_DENORM__=1",
|
||||
"__LFRACT_MAX__=0X7FFFFFFFP-31LR",
|
||||
"__UINT_FAST8_MAX__=0xff",
|
||||
"__has_include(STR)=__has_include__(STR)",
|
||||
"__DEC64_MAX_EXP__=385",
|
||||
"__INT8_C(c)=c",
|
||||
"__INT_LEAST8_WIDTH__=8",
|
||||
"__UINT_LEAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__SA_FBIT__=15",
|
||||
"__SHRT_MAX__=0x7fff",
|
||||
"__LDBL_MAX__=3.40282347e+38L",
|
||||
"__FRACT_MAX__=0X7FFFP-15R",
|
||||
"__UFRACT_FBIT__=16",
|
||||
"__UFRACT_MIN__=0.0UR",
|
||||
"__UINT_LEAST8_MAX__=0xff",
|
||||
"__GCC_ATOMIC_BOOL_LOCK_FREE=1",
|
||||
"__UINTMAX_TYPE__=long long unsigned int",
|
||||
"__LLFRACT_EPSILON__=0x1P-63LLR",
|
||||
"__BUILTIN_AVR_DELAY_CYCLES=1",
|
||||
"__DEC32_EPSILON__=1E-6DF",
|
||||
"__FLT_EVAL_METHOD_TS_18661_3__=0",
|
||||
"__UINT32_MAX__=0xffffffffUL",
|
||||
"__GXX_EXPERIMENTAL_CXX0X__=1",
|
||||
"__ULFRACT_MAX__=0XFFFFFFFFP-32ULR",
|
||||
"__TA_IBIT__=16",
|
||||
"__LDBL_MAX_EXP__=128",
|
||||
"__WINT_MIN__=(-__WINT_MAX__ - 1)",
|
||||
"__INT_LEAST16_WIDTH__=16",
|
||||
"__ULLFRACT_MIN__=0.0ULLR",
|
||||
"__SCHAR_MAX__=0x7f",
|
||||
"__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)",
|
||||
"__INT64_C(c)=c ## LL",
|
||||
"__DBL_DIG__=6",
|
||||
"__GCC_ATOMIC_POINTER_LOCK_FREE=1",
|
||||
"__AVR_HAVE_SPH__=1",
|
||||
"__LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK)",
|
||||
"__BUILTIN_AVR_KBITS=1",
|
||||
"__BUILTIN_AVR_ABSK=1",
|
||||
"__BUILTIN_AVR_ABSR=1",
|
||||
"__SIZEOF_INT__=2",
|
||||
"__SIZEOF_POINTER__=2",
|
||||
"__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1",
|
||||
"__USACCUM_IBIT__=8",
|
||||
"__USER_LABEL_PREFIX__",
|
||||
"__STDC_HOSTED__=1",
|
||||
"__LDBL_HAS_INFINITY__=1",
|
||||
"__LFRACT_MIN__=(-0.5LR-0.5LR)",
|
||||
"__HA_IBIT__=8",
|
||||
"__FLT32_DIG__=6",
|
||||
"__TQ_IBIT__=0",
|
||||
"__FLT_EPSILON__=1.19209290e-7F",
|
||||
"__GXX_WEAK__=1",
|
||||
"__SHRT_WIDTH__=16",
|
||||
"__USFRACT_IBIT__=0",
|
||||
"__LDBL_MIN__=1.17549435e-38L",
|
||||
"__FRACT_MIN__=(-0.5R-0.5R)",
|
||||
"__AVR_SFR_OFFSET__=0x20",
|
||||
"__DEC32_MAX__=9.999999E96DF",
|
||||
"__cpp_threadsafe_static_init=200806",
|
||||
"__DA_IBIT__=32",
|
||||
"__INT32_MAX__=0x7fffffffL",
|
||||
"__UQQ_FBIT__=8",
|
||||
"__INT_WIDTH__=16",
|
||||
"__SIZEOF_LONG__=4",
|
||||
"__UACCUM_MAX__=0XFFFFFFFFP-16UK",
|
||||
"__UINT16_C(c)=c ## U",
|
||||
"__PTRDIFF_WIDTH__=16",
|
||||
"__DECIMAL_DIG__=9",
|
||||
"__LFRACT_EPSILON__=0x1P-31LR",
|
||||
"__AVR_2_BYTE_PC__=1",
|
||||
"__ULFRACT_MIN__=0.0ULR",
|
||||
"__INTMAX_WIDTH__=64",
|
||||
"__has_include_next(STR)=__has_include_next__(STR)",
|
||||
"__BUILTIN_AVR_ULLRBITS=1",
|
||||
"__LDBL_HAS_QUIET_NAN__=1",
|
||||
"__ULACCUM_IBIT__=32",
|
||||
"__UACCUM_EPSILON__=0x1P-16UK",
|
||||
"__BUILTIN_AVR_SEI=1",
|
||||
"__GNUC__=7",
|
||||
"__ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK",
|
||||
"__cpp_delegating_constructors=200604",
|
||||
"__HQ_IBIT__=0",
|
||||
"__BUILTIN_AVR_SWAP=1",
|
||||
"__FLT_HAS_DENORM__=1",
|
||||
"__SIZEOF_LONG_DOUBLE__=4",
|
||||
"__BIGGEST_ALIGNMENT__=1",
|
||||
"__STDC_UTF_16__=1",
|
||||
"__UINT24_MAX__=16777215UL",
|
||||
"__BUILTIN_AVR_NOP=1",
|
||||
"__GNUC_STDC_INLINE__=1",
|
||||
"__DQ_IBIT__=0",
|
||||
"__FLT32_HAS_INFINITY__=1",
|
||||
"__DBL_MAX__=double(3.40282347e+38L)",
|
||||
"__ULFRACT_IBIT__=0",
|
||||
"__cpp_raw_strings=200710",
|
||||
"__INT_FAST32_MAX__=0x7fffffffL",
|
||||
"__DBL_HAS_INFINITY__=1",
|
||||
"__INT64_MAX__=0x7fffffffffffffffLL",
|
||||
"__ACCUM_IBIT__=16",
|
||||
"__DEC32_MIN_EXP__=(-94)",
|
||||
"__BUILTIN_AVR_UKBITS=1",
|
||||
"__INTPTR_WIDTH__=16",
|
||||
"__BUILTIN_AVR_FMULSU=1",
|
||||
"__LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK",
|
||||
"__INT_FAST16_TYPE__=int",
|
||||
"__LDBL_HAS_DENORM__=1",
|
||||
"__BUILTIN_AVR_BITSK=1",
|
||||
"__BUILTIN_AVR_BITSR=1",
|
||||
"__cplusplus=201402L",
|
||||
"__cpp_ref_qualifiers=200710",
|
||||
"__DEC128_MAX__=9.999999999999999999999999999999999E6144DL",
|
||||
"__INT_LEAST32_MAX__=0x7fffffffL",
|
||||
"__USING_SJLJ_EXCEPTIONS__=1",
|
||||
"__DEC32_MIN__=1E-95DF",
|
||||
"__ACCUM_MAX__=0X7FFFFFFFP-15K",
|
||||
"__DEPRECATED=1",
|
||||
"__cpp_rvalue_references=200610",
|
||||
"__DBL_MAX_EXP__=128",
|
||||
"__USACCUM_EPSILON__=0x1P-8UHK",
|
||||
"__WCHAR_WIDTH__=16",
|
||||
"__FLT32_MAX__=3.40282347e+38F32",
|
||||
"__DEC128_EPSILON__=1E-33DL",
|
||||
"__SFRACT_MAX__=0X7FP-7HR",
|
||||
"__FRACT_IBIT__=0",
|
||||
"__PTRDIFF_MAX__=0x7fff",
|
||||
"__UACCUM_MIN__=0.0UK",
|
||||
"__UACCUM_IBIT__=16",
|
||||
"__BUILTIN_AVR_NOPS=1",
|
||||
"__BUILTIN_AVR_WDR=1",
|
||||
"__FLT32_HAS_QUIET_NAN__=1",
|
||||
"__GNUG__=7",
|
||||
"__LONG_LONG_MAX__=0x7fffffffffffffffLL",
|
||||
"__SIZEOF_SIZE_T__=2",
|
||||
"__ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK",
|
||||
"__cpp_rvalue_reference=200610",
|
||||
"__cpp_nsdmi=200809",
|
||||
"__SIZEOF_WINT_T__=2",
|
||||
"__LONG_LONG_WIDTH__=64",
|
||||
"__cpp_initializer_lists=200806",
|
||||
"__FLT32_MAX_EXP__=128",
|
||||
"__SA_IBIT__=16",
|
||||
"__ULLACCUM_MIN__=0.0ULLK",
|
||||
"__BUILTIN_AVR_ROUNDUHK=1",
|
||||
"__BUILTIN_AVR_ROUNDUHR=1",
|
||||
"__cpp_hex_float=201603",
|
||||
"__GXX_ABI_VERSION=1011",
|
||||
"__INT24_MAX__=8388607L",
|
||||
"__UTA_FBIT__=48",
|
||||
"__FLT_MIN_EXP__=(-125)",
|
||||
"__USFRACT_MAX__=0XFFP-8UHR",
|
||||
"__UFRACT_IBIT__=0",
|
||||
"__BUILTIN_AVR_ROUNDFX=1",
|
||||
"__BUILTIN_AVR_ROUNDULK=1",
|
||||
"__BUILTIN_AVR_ROUNDULR=1",
|
||||
"__cpp_lambdas=200907",
|
||||
"__BUILTIN_AVR_COUNTLSLLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSLLR=1",
|
||||
"__BUILTIN_AVR_ROUNDHK=1",
|
||||
"__INT_FAST64_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_ROUNDHR=1",
|
||||
"__DBL_MIN__=double(1.17549435e-38L)",
|
||||
"__BUILTIN_AVR_COUNTLSK=1",
|
||||
"__BUILTIN_AVR_ROUNDLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSR=1",
|
||||
"__BUILTIN_AVR_ROUNDLR=1",
|
||||
"__LACCUM_MIN__=(-0X1P31LK-0X1P31LK)",
|
||||
"__ULLACCUM_FBIT__=48",
|
||||
"__BUILTIN_AVR_LKBITS=1",
|
||||
"__ULLFRACT_EPSILON__=0x1P-64ULLR",
|
||||
"__DEC128_MIN__=1E-6143DL",
|
||||
"__REGISTER_PREFIX__",
|
||||
"__UINT16_MAX__=0xffffU",
|
||||
"__DBL_HAS_DENORM__=1",
|
||||
"__BUILTIN_AVR_ULKBITS=1",
|
||||
"__ACCUM_MIN__=(-0X1P15K-0X1P15K)",
|
||||
"__AVR_ARCH__=2",
|
||||
"__SQ_IBIT__=0",
|
||||
"__FLT32_MIN__=1.17549435e-38F32",
|
||||
"__UINT8_TYPE__=unsigned char",
|
||||
"__BUILTIN_AVR_ROUNDUK=1",
|
||||
"__BUILTIN_AVR_ROUNDUR=1",
|
||||
"__UHA_FBIT__=8",
|
||||
"__NO_INLINE__=1",
|
||||
"__SFRACT_MIN__=(-0.5HR-0.5HR)",
|
||||
"__UTQ_FBIT__=128",
|
||||
"__FLT_MANT_DIG__=24",
|
||||
"__LDBL_DECIMAL_DIG__=9",
|
||||
"__VERSION__=\"7.3.0\"",
|
||||
"__UINT64_C(c)=c ## ULL",
|
||||
"__ULLFRACT_FBIT__=64",
|
||||
"__cpp_unicode_characters=200704",
|
||||
"__FRACT_EPSILON__=0x1P-15R",
|
||||
"__ULACCUM_MIN__=0.0ULK",
|
||||
"__UDA_FBIT__=32",
|
||||
"__cpp_decltype_auto=201304",
|
||||
"__LLACCUM_EPSILON__=0x1P-47LLK",
|
||||
"__GCC_ATOMIC_INT_LOCK_FREE=1",
|
||||
"__FLT32_MANT_DIG__=24",
|
||||
"__BUILTIN_AVR_BITSUHK=1",
|
||||
"__BUILTIN_AVR_BITSUHR=1",
|
||||
"__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__USFRACT_MIN__=0.0UHR",
|
||||
"__BUILTIN_AVR_BITSULK=1",
|
||||
"__ULLACCUM_IBIT__=16",
|
||||
"__BUILTIN_AVR_BITSULR=1",
|
||||
"__UQQ_IBIT__=0",
|
||||
"__BUILTIN_AVR_LLRBITS=1",
|
||||
"__SCHAR_WIDTH__=8",
|
||||
"__BUILTIN_AVR_BITSULLK=1",
|
||||
"__BUILTIN_AVR_BITSULLR=1",
|
||||
"__INT32_C(c)=c ## L",
|
||||
"__DEC64_EPSILON__=1E-15DD",
|
||||
"__ORDER_PDP_ENDIAN__=3412",
|
||||
"__DEC128_MIN_EXP__=(-6142)",
|
||||
"__UHQ_FBIT__=16",
|
||||
"__LLACCUM_FBIT__=47",
|
||||
"__FLT32_MAX_10_EXP__=38",
|
||||
"__BUILTIN_AVR_ROUNDULLK=1",
|
||||
"__BUILTIN_AVR_ROUNDULLR=1",
|
||||
"__INT_FAST32_TYPE__=long int",
|
||||
"__BUILTIN_AVR_HRBITS=1",
|
||||
"__UINT_LEAST16_TYPE__=unsigned int",
|
||||
"__BUILTIN_AVR_UHRBITS=1",
|
||||
"__INT16_MAX__=0x7fff",
|
||||
"__SIZE_TYPE__=unsigned int",
|
||||
"__UINT64_MAX__=0xffffffffffffffffULL",
|
||||
"__UDQ_FBIT__=64",
|
||||
"__INT8_TYPE__=signed char",
|
||||
"__cpp_digit_separators=201309",
|
||||
"__ELF__=1",
|
||||
"__ULFRACT_EPSILON__=0x1P-32ULR",
|
||||
"__LLFRACT_FBIT__=63",
|
||||
"__FLT_RADIX__=2",
|
||||
"__INT_LEAST16_TYPE__=int",
|
||||
"__BUILTIN_AVR_ABSFX=1",
|
||||
"__LDBL_EPSILON__=1.19209290e-7L",
|
||||
"__UINTMAX_C(c)=c ## ULL",
|
||||
"__INT24_MIN__=(-__INT24_MAX__-1)",
|
||||
"__SACCUM_MAX__=0X7FFFP-7HK",
|
||||
"__BUILTIN_AVR_ABSHR=1",
|
||||
"__SIG_ATOMIC_MAX__=0x7f",
|
||||
"__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1",
|
||||
"__cpp_sized_deallocation=201309",
|
||||
"__SIZEOF_PTRDIFF_T__=2",
|
||||
"__AVR=1",
|
||||
"__BUILTIN_AVR_ABSLK=1",
|
||||
"__BUILTIN_AVR_ABSLR=1",
|
||||
"__LACCUM_EPSILON__=0x1P-31LK",
|
||||
"__DEC32_SUBNORMAL_MIN__=0.000001E-95DF",
|
||||
"__INT_FAST16_MAX__=0x7fff",
|
||||
"__UINT_FAST32_MAX__=0xffffffffUL",
|
||||
"__UINT_LEAST64_TYPE__=long long unsigned int",
|
||||
"__USACCUM_MAX__=0XFFFFP-8UHK",
|
||||
"__SFRACT_EPSILON__=0x1P-7HR",
|
||||
"__FLT_HAS_QUIET_NAN__=1",
|
||||
"__FLT_MAX_10_EXP__=38",
|
||||
"__LONG_MAX__=0x7fffffffL",
|
||||
"__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL",
|
||||
"__FLT_HAS_INFINITY__=1",
|
||||
"__cpp_unicode_literals=200710",
|
||||
"__USA_FBIT__=16",
|
||||
"__UINT_FAST16_TYPE__=unsigned int",
|
||||
"__DEC64_MAX__=9.999999999999999E384DD",
|
||||
"__INT_FAST32_WIDTH__=32",
|
||||
"__BUILTIN_AVR_RBITS=1",
|
||||
"__CHAR16_TYPE__=unsigned int",
|
||||
"__PRAGMA_REDEFINE_EXTNAME=1",
|
||||
"__SIZE_WIDTH__=16",
|
||||
"__INT_LEAST16_MAX__=0x7fff",
|
||||
"__DEC64_MANT_DIG__=16",
|
||||
"__UINT_LEAST32_MAX__=0xffffffffUL",
|
||||
"__SACCUM_FBIT__=7",
|
||||
"__FLT32_DENORM_MIN__=1.40129846e-45F32",
|
||||
"__GCC_ATOMIC_LONG_LOCK_FREE=1",
|
||||
"__SIG_ATOMIC_WIDTH__=8",
|
||||
"__INT_LEAST64_TYPE__=long long int",
|
||||
"__INT16_TYPE__=int",
|
||||
"__INT_LEAST8_TYPE__=signed char",
|
||||
"__SQ_FBIT__=31",
|
||||
"__DEC32_MAX_EXP__=97",
|
||||
"__INT_FAST8_MAX__=0x7f",
|
||||
"__INTPTR_MAX__=0x7fff",
|
||||
"__QQ_FBIT__=7",
|
||||
"__cpp_range_based_for=200907",
|
||||
"__UTA_IBIT__=16",
|
||||
"__AVR_ERRATA_SKIP__=1",
|
||||
"__FLT32_MIN_10_EXP__=(-37)",
|
||||
"__LDBL_MANT_DIG__=24",
|
||||
"__SFRACT_FBIT__=7",
|
||||
"__SACCUM_MIN__=(-0X1P7HK-0X1P7HK)",
|
||||
"__DBL_HAS_QUIET_NAN__=1",
|
||||
"__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)",
|
||||
"AVR=1",
|
||||
"__BUILTIN_AVR_FMULS=1",
|
||||
"__cpp_return_type_deduction=201304",
|
||||
"__INTPTR_TYPE__=int",
|
||||
"__UINT16_TYPE__=unsigned int",
|
||||
"__WCHAR_TYPE__=int",
|
||||
"__SIZEOF_FLOAT__=4",
|
||||
"__AVR__=1",
|
||||
"__BUILTIN_AVR_INSERT_BITS=1",
|
||||
"__USQ_FBIT__=32",
|
||||
"__UINTPTR_MAX__=0xffffU",
|
||||
"__INT_FAST64_WIDTH__=64",
|
||||
"__DEC64_MIN_EXP__=(-382)",
|
||||
"__cpp_decltype=200707",
|
||||
"__FLT32_DECIMAL_DIG__=9",
|
||||
"__INT_FAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1",
|
||||
"__FLT_DIG__=6",
|
||||
"__UINT_FAST64_TYPE__=long long unsigned int",
|
||||
"__BUILTIN_AVR_BITSHK=1",
|
||||
"__BUILTIN_AVR_BITSHR=1",
|
||||
"__INT_MAX__=0x7fff",
|
||||
"__LACCUM_FBIT__=31",
|
||||
"__USACCUM_MIN__=0.0UHK",
|
||||
"__UHA_IBIT__=8",
|
||||
"__INT64_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_BITSLK=1",
|
||||
"__BUILTIN_AVR_BITSLR=1",
|
||||
"__FLT_MAX_EXP__=128",
|
||||
"__UTQ_IBIT__=0",
|
||||
"__DBL_MANT_DIG__=24",
|
||||
"__cpp_inheriting_constructors=201511",
|
||||
"__BUILTIN_AVR_ULLKBITS=1",
|
||||
"__INT_LEAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__DEC64_MIN__=1E-383DD",
|
||||
"__WINT_TYPE__=int",
|
||||
"__UINT_LEAST32_TYPE__=long unsigned int",
|
||||
"__SIZEOF_SHORT__=2",
|
||||
"__ULLFRACT_IBIT__=0",
|
||||
"__LDBL_MIN_EXP__=(-125)",
|
||||
"__UDA_IBIT__=32",
|
||||
"__WINT_WIDTH__=16",
|
||||
"__INT_LEAST8_MAX__=0x7f",
|
||||
"__LFRACT_FBIT__=31",
|
||||
"__LDBL_MAX_10_EXP__=38",
|
||||
"__ATOMIC_RELAXED=0",
|
||||
"__DBL_EPSILON__=double(1.19209290e-7L)",
|
||||
"__BUILTIN_AVR_BITSUK=1",
|
||||
"__BUILTIN_AVR_BITSUR=1",
|
||||
"__UINT8_C(c)=c",
|
||||
"__INT_LEAST32_TYPE__=long int",
|
||||
"__BUILTIN_AVR_URBITS=1",
|
||||
"__SIZEOF_WCHAR_T__=2",
|
||||
"__LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR",
|
||||
"__TQ_FBIT__=127",
|
||||
"__INT_FAST8_TYPE__=signed char",
|
||||
"__ULLACCUM_EPSILON__=0x1P-48ULLK",
|
||||
"__BUILTIN_AVR_ROUNDK=1",
|
||||
"__BUILTIN_AVR_ROUNDR=1",
|
||||
"__UHQ_IBIT__=0",
|
||||
"__LLACCUM_IBIT__=16",
|
||||
"__FLT32_EPSILON__=1.19209290e-7F32",
|
||||
"__DBL_DECIMAL_DIG__=9",
|
||||
"__STDC_UTF_32__=1",
|
||||
"__INT_FAST8_WIDTH__=8",
|
||||
"__DEC_EVAL_METHOD__=2",
|
||||
"__TA_FBIT__=47",
|
||||
"__UDQ_IBIT__=0",
|
||||
"__ORDER_BIG_ENDIAN__=4321",
|
||||
"__cpp_runtime_arrays=198712",
|
||||
"__WITH_AVRLIBC__=1",
|
||||
"__UINT64_TYPE__=long long unsigned int",
|
||||
"__ACCUM_EPSILON__=0x1P-15K",
|
||||
"__UINT32_C(c)=c ## UL",
|
||||
"__BUILTIN_AVR_COUNTLSUHK=1",
|
||||
"__INTMAX_MAX__=0x7fffffffffffffffLL",
|
||||
"__cpp_alias_templates=200704",
|
||||
"__BUILTIN_AVR_COUNTLSUHR=1",
|
||||
"__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__FLT_DENORM_MIN__=1.40129846e-45F",
|
||||
"__LLFRACT_IBIT__=0",
|
||||
"__INT8_MAX__=0x7f",
|
||||
"__LONG_WIDTH__=32",
|
||||
"__UINT_FAST32_TYPE__=long unsigned int",
|
||||
"__CHAR32_TYPE__=long unsigned int",
|
||||
"__BUILTIN_AVR_COUNTLSULK=1",
|
||||
"__BUILTIN_AVR_COUNTLSULR=1",
|
||||
"__FLT_MAX__=3.40282347e+38F",
|
||||
"__cpp_constexpr=201304",
|
||||
"__USACCUM_FBIT__=8",
|
||||
"__BUILTIN_AVR_COUNTLSFX=1",
|
||||
"__INT32_TYPE__=long int",
|
||||
"__SIZEOF_DOUBLE__=4",
|
||||
"__FLT_MIN_10_EXP__=(-37)",
|
||||
"__UFRACT_EPSILON__=0x1P-16UR",
|
||||
"__INT_LEAST32_WIDTH__=32",
|
||||
"__BUILTIN_AVR_COUNTLSHK=1",
|
||||
"__BUILTIN_AVR_COUNTLSHR=1",
|
||||
"__INTMAX_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_ABSLLK=1",
|
||||
"__BUILTIN_AVR_ABSLLR=1",
|
||||
"__DEC128_MAX_EXP__=6145",
|
||||
"__AVR_HAVE_16BIT_SP__=1",
|
||||
"__ATOMIC_CONSUME=1",
|
||||
"__GNUC_MINOR__=3",
|
||||
"__INT_FAST16_WIDTH__=16",
|
||||
"__UINTMAX_MAX__=0xffffffffffffffffULL",
|
||||
"__DEC32_MANT_DIG__=7",
|
||||
"__HA_FBIT__=7",
|
||||
"__BUILTIN_AVR_COUNTLSLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSLR=1",
|
||||
"__BUILTIN_AVR_CLI=1",
|
||||
"__DBL_MAX_10_EXP__=38",
|
||||
"__LDBL_DENORM_MIN__=1.40129846e-45L",
|
||||
"__INT16_C(c)=c",
|
||||
"__cpp_generic_lambdas=201304",
|
||||
"__STDC__=1",
|
||||
"__PTRDIFF_TYPE__=int",
|
||||
"__LLFRACT_MIN__=(-0.5LLR-0.5LLR)",
|
||||
"__BUILTIN_AVR_LRBITS=1",
|
||||
"__ATOMIC_SEQ_CST=5",
|
||||
"__DA_FBIT__=31",
|
||||
"__UINT32_TYPE__=long unsigned int",
|
||||
"__BUILTIN_AVR_ROUNDLLK=1",
|
||||
"__UINTPTR_TYPE__=unsigned int",
|
||||
"__BUILTIN_AVR_ROUNDLLR=1",
|
||||
"__USA_IBIT__=16",
|
||||
"__BUILTIN_AVR_ULRBITS=1",
|
||||
"__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD",
|
||||
"__DEC128_MANT_DIG__=34",
|
||||
"__LDBL_MIN_10_EXP__=(-37)",
|
||||
"__BUILTIN_AVR_COUNTLSUK=1",
|
||||
"__BUILTIN_AVR_COUNTLSUR=1",
|
||||
"__SIZEOF_LONG_LONG__=8",
|
||||
"__ULACCUM_EPSILON__=0x1P-32ULK",
|
||||
"__cpp_user_defined_literals=200809",
|
||||
"__SACCUM_IBIT__=8",
|
||||
"__GCC_ATOMIC_LLONG_LOCK_FREE=1",
|
||||
"__LDBL_DIG__=6",
|
||||
"__FLT_DECIMAL_DIG__=9",
|
||||
"__UINT_FAST16_MAX__=0xffffU",
|
||||
"__GCC_ATOMIC_SHORT_LOCK_FREE=1",
|
||||
"__BUILTIN_AVR_ABSHK=1",
|
||||
"__BUILTIN_AVR_FLASH_SEGMENT=1",
|
||||
"__INT_LEAST64_WIDTH__=64",
|
||||
"__ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR",
|
||||
"__UINT_FAST8_TYPE__=unsigned char",
|
||||
"__USFRACT_EPSILON__=0x1P-8UHR",
|
||||
"__ULACCUM_FBIT__=32",
|
||||
"__QQ_IBIT__=0",
|
||||
"__cpp_init_captures=201304",
|
||||
"__ATOMIC_ACQ_REL=4",
|
||||
"__ATOMIC_RELEASE=3",
|
||||
"__BUILTIN_AVR_FMUL=1",
|
||||
"USBCON"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,580 +0,0 @@
|
|||
RELEASE NOTES
|
||||
=============
|
||||
Silicon Labs Virtual COM Port (VCP) Universal Driver for Windows 10 version 1803 and later, windows 11
|
||||
|
||||
Package version: 11.2.0
|
||||
Release date: 2022-10-21
|
||||
|
||||
This package contains a Virtual COM Port Universal driver for Microsoft
|
||||
Windows 10 version 1803 and later, windows 11 versions of Windows for use with Silicon Labs VCP USB Serial Bridges. These devices
|
||||
include the CP2102N, CP2102, CP2103, CP2104, CP2105, CP2108, CP2109.
|
||||
|
||||
OS VERSIONS
|
||||
-----------
|
||||
This package provides the CP210x VCP driver for the following versions
|
||||
of Windows:
|
||||
|
||||
- Windows 10 version 1803 and later (x64, x86)
|
||||
- Windows 11 (x64)
|
||||
|
||||
CHOOSING VCP DRIVER VERSION
|
||||
---------------------------
|
||||
VCP drivers of version 11.1.0 and later are released for Microsoft
|
||||
Windows 10 version 1803 and later, windows 11 versions of Windows as Universal Drivers.
|
||||
This means they do not work on older version of Windows
|
||||
such as Window 7 and 8.1. You should use this driver if you only need
|
||||
support for Windows 10 version 1803 and later, windows 11, or you need the Universal driver. If you require
|
||||
support on older versions of Windows, you should use the legacy VCP driver
|
||||
which can be found on the Silicon Labs web site. The legacy Windows VCP
|
||||
drivers have version numbers less than 10.0.0.
|
||||
|
||||
CONTENTS
|
||||
--------
|
||||
The VCP driver package contains the following files and directories:
|
||||
- silabser.inf -- Driver information file
|
||||
- SLAB_License_Agreement_VCP_Windows.txt -- Software License
|
||||
- CP210x_Universal_Windows_Driver_ReleaseNotes.txt -- this file
|
||||
|
||||
Additional files needed by installer
|
||||
- silabser.cat
|
||||
- x64/silabser.sys
|
||||
- x86/silabser.sys
|
||||
|
||||
INSTALLING
|
||||
----------
|
||||
The VCP driver is automatically installed by Windows Update for CP210x with
|
||||
alternate PID values of 0xEA63, 0xEA7A, and 0xEA7B. These are not default
|
||||
values.
|
||||
|
||||
Otherwise, unzip the .zip file and you will have a directory containing the
|
||||
driver installer files.
|
||||
|
||||
### Prompted install ###
|
||||
|
||||
If Windows prompts you to install a driver for a CP210x device
|
||||
(for example, if you plug a CP210x into your computer):
|
||||
|
||||
1. Use the dialog to browse for the driver location
|
||||
2. Locate the driver folder (that you previously unzipped)
|
||||
3. Follow the instructions
|
||||
|
||||
### Manual install ###
|
||||
|
||||
1. Using Windows File Explorer, locate the driver folder
|
||||
(that you previously unzipped)
|
||||
2. Right click on the silabser.inf file and select Install
|
||||
3. Follow the instructions
|
||||
|
||||
UNINSTALLING
|
||||
------------
|
||||
1. The device must be plugged in
|
||||
2. Run Device Manager
|
||||
3. Locate the device you want to uninstall
|
||||
4. Right click on the device and choose "uninstall"
|
||||
5. Follow the instructions
|
||||
|
||||
SETUP REGISTRY KEY
|
||||
------------------
|
||||
Registry keys are used for setting some parameters of the serial port
|
||||
For setting these parameters, we have 2 ways:
|
||||
- Modify registry value using registry editor of Windows
|
||||
- Modify registry value using INF file
|
||||
|
||||
### Modify the registry key's value in Registry Editor ###
|
||||
|
||||
1. Open Command Prompt on windows => type command: regedit
|
||||
2. Registry tree is displayed
|
||||
3. Registry key is allocated at 3 position:
|
||||
- Parameters keys: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\silabser
|
||||
- Software keys: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<ClassID>\
|
||||
- Hardware keys: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\deviceID\
|
||||
4. Right-click each key => select modify => edit value for key
|
||||
|
||||
### Enable the registry key in driver's INF file ###
|
||||
|
||||
1. To enable the registry key, Please remove character ';' to uncomment the statement
|
||||
2. Registry key is allocated at 3 position:
|
||||
- Parameters keys: [silabser.AddService.AddReg] directives
|
||||
- Software keys: [silabser.AddReg] directives
|
||||
- Hardware keys: [SiLabsDDInstallSection.HW.AddReg] directives
|
||||
|
||||
SUPPORT
|
||||
-------
|
||||
For technical support please visit the Silicon Labs support site:
|
||||
|
||||
https://www.silabs.com/support
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 11.2.0 (2022-10-21)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-415 | Remove code paths for XP vs not XP which is used for
|
||||
| UsingWindows2000.
|
||||
MCUSW-416 | Improve debug statement readability by adding device specific
|
||||
| information.
|
||||
MCUSW-523 | add instruction how to setting up registry in .inf file.
|
||||
MCUSW-532 | Fix Automatic handshaking on RTS/CTS, and driver buffers
|
||||
| overran at high baud rate.
|
||||
MCUSW-1285 | add DisableIoctlIOCTL_SERIAL_PURGE in .inf file to prevent data
|
||||
| lost in close.
|
||||
|
||||
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 11.1.0 (2022-03-21)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-803 | CP210x device needs to send Xoff to the other side device
|
||||
| (FTDI for example) when Windows goes to sleep
|
||||
MCUSW-1038 | Fix DFx problem on Windows 11
|
||||
MCUSW-1039 | Do HLK DFx testing for Windows VCP driver version 11.1.0
|
||||
MCUSW-1045 | Update file version and driver version for Windows VCP
|
||||
| driver version 11.1.0
|
||||
MCUSW-1047 | Make the Windows VCP driver pass SDV
|
||||
MCUSW-1048 | Microsoft Windows Certified ("WHQL Certified") for Windows 11
|
||||
| version 21H2
|
||||
MCUSW-1049 | Using Dynamic api to make Windows VCP driver to be compatible
|
||||
| with different versions of Windows (Mininum required is Windows
|
||||
| 10 version 1803)
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 11.0.0 (2021-11-05)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-176 | Add report SERIAL_ERROR_QUEUEOVERRUN when driver-side receive
|
||||
| buffer is overrun
|
||||
MCUSW-889 | Fixed HLK Test error: Static Tools Logo Test
|
||||
MCUSW-749 | Fixed issue that RTS is not set to high when Windows goes to
|
||||
| sleep to make sure incoming data to CP210x won't be lost when
|
||||
| Windows is in sleeping state
|
||||
MCUSW-841 | Removed installer to make a standalone driver package. Users
|
||||
| need to use INF file to install the driver instead
|
||||
MCUSW-906 | Add Microsoft Windows Certified ("WHQL Certified") for Windows 11
|
||||
| version 21H2
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.10 (2021-01-13)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-651 | Support baud rate up to 2187500 for CP2102, CP2104, CP2109
|
||||
MCUSW-685 | Fixed the Blue Screen issue when running Windows Hardware Lab
|
||||
| Kit for customized driver
|
||||
MCUSW-783 | Microsoft Windows Certified (aka "WHQL Certified") for Windows
|
||||
| 10 version 20H2 (2020-10-20)
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.9 (2020-07-30)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-566 | Remove sanity/error checking on IOCTL_SERIAL_SET_BAUD_RATE for
|
||||
| CP2103 devices.
|
||||
MCUSW-596 | Microsoft Windows Certified (aka "WHQL Certified") for Windows
|
||||
| 10 version 2004 (2020-05-27)
|
||||
MCUSW-619 | Support for Directed PoFx (DFx - Directed Power Management
|
||||
| Framework).
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.8 (2019-06-24 (DriverVer = 06/20/2019,10.1.8.2466))
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-412 | Certified for Windows 10 RS6.
|
||||
MCUSW-484 | WDFVERIFY() added to the driver. Configurable via Registry.
|
||||
MCUSW-493 | Improved the tagging/tracking and parent-hierarchy of framework
|
||||
| objects and framework object reference counts.
|
||||
MCUSW-495 | Clear RTS on CloseHandle().
|
||||
MCUSW-508 | IOCTL_SERIAL_GET_COMMSTATUS refactored to reduce USB-bus
|
||||
| bandwidth, while still offering timely reporting.
|
||||
MCUSW-518 | WDFVerifier parameter ForceLogsInMiniDump Registry parameter
|
||||
| added for improved supportability.
|
||||
MCUSW-519 | Resolve an SDV-identified issue: do not double-complete a
|
||||
| Request on error paths.
|
||||
MCUSW-526 | Creates the framework USB device object with client contract
|
||||
| version USBD_CLIENT_CONTRACT_VERSION_602/0x602 (I.e. Register
|
||||
| with "new" (to Windows 8) Windows USB driver stack).
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.7 (2019-03-26 (DriverVer = 03/26/2019,10.1.7.2399))
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-473 | Fix length of nul-terminated legacy Dos Name string written to
|
||||
| HARDWARE\DEVICEMAP\SERIALCOMM Registry key.
|
||||
MCUSW-483 | Fixed bug for Max Baud rate for CP2101, CP2104, CP2105 and
|
||||
| CP2108 devices.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.6 (2019-03-19 (DriverVer = 03/15/2019,10.1.6.2388))
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-445 | Fix a blue-screen system crash bug with handling of ioctl
|
||||
| IOCTL_SERIAL_WAIT_ON_MASK during power state changes.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.5 (2019-02-19 (DriverVer = 02/19/2019,10.1.5.2368))
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-414 | Implement an undocumented Registry-configured feature to ignore
|
||||
| IOCTL_SERIAL_PURGE.
|
||||
MCUSW-417 | Read many of the Registry "parameter"-type settings first from
|
||||
| the "parameters key" and then from the "hardware key", with the
|
||||
| "hardware key" taking precedence (allows "driver wide, all
|
||||
| devices" setting, but provides the capability to specify per-
|
||||
| device settings (before we only supported per-device
|
||||
| settings)).
|
||||
|
|
||||
MCUSW-439 | Fixed a bug whereby Close()-Open() on a CP2102N could get USB
|
||||
| data toggle confused (I.e. issue USB CLEAR_FEATURE(HALT) to
|
||||
| bulk endpoints to reset data toggle back to DATA0).
|
||||
MCUSW-449 | Fix a Max Baud Rate bug (use device-specific MaxBauds (from the
|
||||
| data-sheets): 3 Mbaud for CP2102N, 1 Mbaud for all other CP210x
|
||||
| devices.).
|
||||
MCUSW-450 | Fix Verification BSOD (race condition in the VCP device driver
|
||||
| that can cause double completions): Only call
|
||||
| DetachForCompletionUNcancelable on success of UNmark as
|
||||
| cancelable in handling of IOCTL_SERIAL_WAIT_ON_MASK-related
|
||||
| requests.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.4 (2018-12-07 (DriverVer = 11/26/2018,10.1.4.2290))
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-134 | Fixed an issue with handling of IOCTL_SERIAL_SET_WAIT_MASK,
|
||||
| IOCTL_SERIAL_WAIT_ON_MASK, with the SERIAL_EV_RXCHAR event and
|
||||
| data arriving from the device into the driver. Previously, an
|
||||
| indication of arriving data was made before making the data
|
||||
| available, causing, in some conditions, subsequent requests for
|
||||
| data after notification of data available to not deliver any
|
||||
| data.
|
||||
MCUSW-144 | Onecore-based editions of Windows 10 (I.e. Windows 10 IoT Core)
|
||||
| do not, by design, create PortName entries in the Registry to
|
||||
| specify the device's legacy DOS name (I.e. COM<n).
|
||||
| Consequently, VCP enhanced to not treat this as a failing
|
||||
| condition and to continue without creating legacy COM<n> DOS
|
||||
| devices.
|
||||
MCUSW-148 | Rearchitected into two VCP driver packages:
|
||||
| 1) Windows 7 and later Desktop Editions x86 and x64 driver
|
||||
| package, and
|
||||
| 2) Windows Universal (10 and later; Desktop, tablet, mobile,
|
||||
| embedded) x86, x64, ARM, ARM64 driver package.
|
||||
MCUSW-214 | Windows 10 Universal driver release (I.e. no Windows 7, 8 or
|
||||
| 8.1 support)
|
||||
MCUSW-352 | Workaround to issue where close during receipt of serial data
|
||||
| caused CP2102N to hang.
|
||||
MCUSW-369 | Certified for Windows 10 RS5.
|
||||
MCUSW-393 | Fix bug due to some BaudRate-related math causing a divide-by-
|
||||
| zero.
|
||||
MCUSW-396 | Be defensive against the impossible case of getting a NULL
|
||||
| object in the object completion routine.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.3 (2018-05-29)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-326 | Clear DTR on CloseHandle().
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.2 (2018-05-14)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-134 | Fixed an issue with handling of IOCTL_SERIAL_SET_WAIT_MASK,
|
||||
| IOCTL_SERIAL_WAIT_ON_MASK, with the SERIAL_EV_RXCHAR event and
|
||||
| data arriving from the device into the driver. Previously, an
|
||||
| indication of arriving data was made before making the data
|
||||
| available, causing, in some conditions, subsequent requests for
|
||||
| data after notification of data available to not deliver any
|
||||
| data.
|
||||
MCUSW-211 | Windows 10 Universal driver release (I.e. no Windows 7, 8 or
|
||||
| 8.1 support)
|
||||
MCUSW-288 | Fix IOCTL_SERIAL_GET_PROPERTIES.
|
||||
MCUSW-291 | Fix IOCTL_SERIAL_GET_PROPERTIES/SERIAL_COMMPROP for CP210x-like
|
||||
| "Voice MB v2.0" device.
|
||||
MCUSW-315 | Certified for RS4/1803.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 10.1.1 (DriverVer=11/15/2017,10.1.1.1951)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-134 | Fixed an issue with handling of IOCTL_SERIAL_SET_WAIT_MASK,
|
||||
| IOCTL_SERIAL_WAIT_ON_MASK, with the SERIAL_EV_RXCHAR event
|
||||
| and data arriving from the device into the driver. Previously,
|
||||
| an indication of arriving data was made before making the data
|
||||
| available, causing, in some conditions, subsequent requests
|
||||
| for data after notification of data available to not deliver
|
||||
| any data.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
LEGACY HISTORY
|
||||
--------------
|
||||
Everything below is the shared development history before creation of the
|
||||
Windows 10 Universal driver. Everything above is development history of
|
||||
the Universal driver.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7.5 (2017-10-13)
|
||||
|
||||
Changes for VCP Driver
|
||||
==============================================================================
|
||||
MCUSW-17 | IOCTL_SERIAL_GET_STATUS TransmittedCount fixed.
|
||||
MCUSW-19 | CP210x_GET_CONFIG_DESCRIPTOR_IOCTL returned byte count fixed.
|
||||
MCUSW-21 | Revert IOCTL_SERIAL_GET_COMMSTATUS behaviour to return cached
|
||||
| information (reverse slowdown reported with v6.7.4 in some
|
||||
| applications)
|
||||
|
|
||||
| Improve windbg logging, w.r.t. doing less when logging is not
|
||||
| enabled (say, Release builds), or when particular subsystem is
|
||||
| not enabled for logging.
|
||||
|
|
||||
MCUSW-110 | Windows 10 certified against RS2 (Creators Update).
|
||||
MCUSW-207 | In a failed initialization, discard a reference to dynamically
|
||||
| allocated memory once memory has been freed.
|
||||
MCUSW-234 | timestamp SHA2 Signatures with SHA2 timestamps
|
||||
|
||||
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7.4.261 (2017/01/30)
|
||||
|
||||
- Device Guard compliant
|
||||
- CP210XFW-747: Add 3 new parallel PIDs one each for the single-, dual- &
|
||||
quad-port CP210x devices (to be distributed via Windows Update)
|
||||
- CP210XFW-741: Fix driver to use correct interface string index for the
|
||||
multi-interface CP210x devices (CP2105 & CP2108). Return iProduct string
|
||||
for other CP210x devices.
|
||||
- CP210XFW-713: Add protection against IRP_MJ_CLOSE coming before
|
||||
IRP_MJ_CLEANUP. In such case EvtFileCleanup callback was called with 0
|
||||
FileObject, causeing a crash. Serenum is suspected of causing this, even
|
||||
though there is no proof except that it's present, was introduced recently
|
||||
and this crash was never registered before.
|
||||
- CP210XFW-691: Fixed race between timer activation and request cancelation
|
||||
during processing of read rwquests.
|
||||
- Changed raw WDF read request timer to our wrapper.
|
||||
- CP210XFW-693: bugfix: WMI command "wmic path Win32_SerialPort get
|
||||
Availability^, DeviceID^, Name" is unable to enumerate the port.
|
||||
- CP210XFW-686: EvtRequestCancel for wait mask IRP crashed because the
|
||||
request was already completed. It didn't serialize well with other places
|
||||
that can complete it. It looked like XOff IRP may have the same proble. This
|
||||
patch is adding an extra check into *all* other EvtRequestCancel functions
|
||||
to make sure this doesn't happen again.
|
||||
- Changed IOCTLs returning polled-cached MDMSTS to explicitly read the
|
||||
status. Use reg value DisableHwAccessInModemStatusIoctls to revert this
|
||||
new functionality to old behavior.
|
||||
- Improved debug prints.
|
||||
- SerialDbgPrintEx used 1K of stack for the string, reduced to 256.
|
||||
- Resolved many static Code Analysis warnings
|
||||
- Added accounting for data in chip's TX queue. Added translation of
|
||||
COMM_STATUS::ulErrors into SERIAL_EV_BREAK and SERIAL_EV_ERR.
|
||||
- CP210XFW-549, CP210XFW-536, CP210XFW-546: Generate events for
|
||||
IOCTL_SERIAL_SET_WAIT_MASK from COMM_STATUS::ulErrors. Can be disabled by
|
||||
DisableCommStatusPolling reg value.
|
||||
- Added spinlock around ModemStatus change detection. Refactored modem
|
||||
status event signalling to use common function.
|
||||
- Move passive level functions into the paged section.
|
||||
- MCUFW-740: Made device close operation wait for chip's Tx queue to empty.
|
||||
Added registry settings DisableTxEmptyCheckInClose and
|
||||
TxEmptyTimeoutOnCloseInMs.
|
||||
- Improve control transfer debug prints and clean up code, otherwise no
|
||||
functional changes.
|
||||
- MCUFW-740: Fixed EV_TXEMPTY to account for bytes in chip's Tx queue.
|
||||
- MCUFW-740: New functions to sync access to comm error storage from
|
||||
multiple threads.
|
||||
- Added DisableTxEmptyCheckInGetCommStatusIoctl reg value.
|
||||
- Refactor control request I/O. MCUFW-740: Fixed
|
||||
IOCTL_SERIAL_GET_COMMSTATUS.
|
||||
- MCUFW-740: Made device close operation wait for chip's Tx queue to empty.
|
||||
Added registry settings DisableTxEmptyCheckInClose and
|
||||
TxEmptyTimeoutOnCloseInMs.
|
||||
- CP210XFW-648: Set a three second timeout on
|
||||
WdfUsbTargetDeviceSendControlTransferSynchronously().
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7.3 (2016/03/03)
|
||||
|
||||
- Down-rev the verison of KMDF the driver uses (CP210XFW-591. Use version of
|
||||
KMDF natively included on Windows release)
|
||||
- Bug fix of blue-screen system crash (CP210XFW-575. driver tries to clear a
|
||||
Cancel Routine in a Request that doesn't have it.)
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7.2 (2015/11/23)
|
||||
|
||||
- Unified Windows 7, 8, 8.1 & 10 support (XP, Vista and Server 2003
|
||||
available in version 6.7).
|
||||
- ARM support added for Windows 10 and Windows 10 IoT Core.
|
||||
- Silicon Labs-specific Serial Enumeration driver silabenm removed in favor
|
||||
of the Windows "in-box" serenm.
|
||||
- UpperFilter Serial Enumeration driver not enabled by default
|
||||
- Updated to latest Microsoft build tools
|
||||
- Resolved /W4 compilation warnings
|
||||
- Resolved code analysis warnings
|
||||
- Added a registry value ControlHandShakeForcedSetBits that can force
|
||||
certain bits in the ControlHandShake variable to always be set.
|
||||
- Add SAL-annotations to API header files.
|
||||
- Bugfix an invalid memory access on device stop.
|
||||
- Standardize branding Properties resources across all deliverables.
|
||||
- Digitally sign all signable deliverables.
|
||||
- Rewrote driver synchronization for data transmission paths.
|
||||
- Resolve bugs arising from extended stress test.
|
||||
- Added diagnostic variables to device extension.
|
||||
- Bugfix a Write IRP stuck forever cauding bugcheck 9f-4 if call to USB
|
||||
returns with error.
|
||||
- Bugfix "packetized write" timeout may fail to act. And improved debug
|
||||
prints.
|
||||
- New reg value DisableS0Idle (default: 0) to replace EnablePowerManagewment
|
||||
(default: 0 which actually ment "enable"). Also, DisableS0Idle=1 now
|
||||
forces AllowIdleWhileOpen to 0.
|
||||
- Driver ignores BreakOnEntry, DebugLevel and DebugFlag in registry.
|
||||
- New CP2108 bug workarounds - GET_LINE_CTL byte swap and tx_empty().
|
||||
- Fixed crash in read path.
|
||||
- Simplified, commented and synchronized with NEWSTUFF EvtIoStop and
|
||||
EvtIoResume.
|
||||
- Fixed memory leak on device removal when multiple devices are present.
|
||||
- Bugfix Read IRP may never complete if other read IRPs are already waiting
|
||||
when it arrives.
|
||||
- Add CP2102N part numbers. Hnadle new part numbers in
|
||||
WriteLatch()/ReadLatch().
|
||||
- Resolve HCK INF warnings that became errors on HLK.
|
||||
- Bugfix: Potential invalid memory access on device stop.
|
||||
- Fixed possible memory overrun when writing CP2108 latch.
|
||||
- Cumulative collection of improvements (due to code analysis, application
|
||||
of latest toolset, etc.) and bug fixes.
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7.1 (2015/06/29)
|
||||
|
||||
- Added certification for Windows 10 Preview (Note: Windows 10 only;
|
||||
use v6.7 for Windows prior to Windows 10)
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.7 (2014/04/11)
|
||||
|
||||
- Added vendor-specific commands to the driver that do not affect normal
|
||||
operation with standard CP210x devices.
|
||||
- Modified write behavior to packetize data as a work around for a rare
|
||||
USB 2.0 hub behavior seen only in Windows XP (x86).
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.6.1 (2013/10/24)
|
||||
|
||||
- Added certification for Windows 8.1
|
||||
- Added support for CP2108 devices
|
||||
- Corrected bug where OS would hang on repetition of many rapid open/closes on
|
||||
certain systems.
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.6
|
||||
|
||||
- Moving installer format to DPInst
|
||||
- Supported under Windows 8
|
||||
- Corrected bug in total write timeout calculation
|
||||
- Corrected bug where EV_BREAK event could be misreported based on incoming
|
||||
data
|
||||
- Corrected another BSOD corner case regarding write cancellation
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.5.3
|
||||
|
||||
- Corrected BSOD corner case for a write cancellation
|
||||
- Corrected memory leak that occurs when a device is plugged/unplugged
|
||||
rapidly enough to allow driver startup function to fail
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.5
|
||||
|
||||
- Corrected BSOD corner case issue for handling control requests
|
||||
- Corrected issue where USB 3.0 hubs would deliver data to the driver out
|
||||
of order
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.4
|
||||
|
||||
- Corrected multiple BSOD issues by updating request handling for control
|
||||
requests to the USB device, and the write completion method
|
||||
- Corrected device removal routine to also undo the COM port naming in the
|
||||
registry at removal time instead of when the device is closed after the
|
||||
removal.
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.3a
|
||||
|
||||
- Updated to 3.2 DriverInstaller to correct a bug seen when updating from an
|
||||
old driver installer version
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.3
|
||||
|
||||
- Corrected a bug introduced in 6.2 which caused BSOD during surprise removal.
|
||||
- Corrected a bug found in I/O cancellation corner case
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.2
|
||||
|
||||
- Corrected return value for DeviceIoControl() and other COM API functions
|
||||
once the device is removed to properly show ERROR_ACCESS_DENIED (0x05)
|
||||
instead of ERROR_BAD_COMMAND in GetLastError()
|
||||
- Corrected bug in DTR/RTS reporting latency seen if you set DTR/RTS and ask
|
||||
for it before the device has reported it to the host - now when it is
|
||||
written it reads back immediately
|
||||
- Corrected several USB requests that were improperly defined as device
|
||||
requests when they are actually interface requests - this doesn't exhibit
|
||||
and bugs in current single interface devices but was changed to be complete
|
||||
and correct
|
||||
- Added support for CP2104 and CP2105 devices
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.1
|
||||
|
||||
- Corrected a memory leak which could bog the system down after extended use
|
||||
of a contiuously opened COM port, and conditionally yield bluescreens on
|
||||
certain systems
|
||||
- Corrected a problem where an IO reqest would sometimes return a busy
|
||||
status to user mode, instead the queue is restarted if necessary before
|
||||
adding an IO request to the queue
|
||||
- Corrected a condition which would blue screen on cancelling write request
|
||||
that hasn't been fully sent out USB
|
||||
- Corrected the Capabilites return value, which incorrectly reported that
|
||||
timeouts are not supported
|
||||
- Corrected several Queue size return values, which affected behavior in the
|
||||
MSCOMM control
|
||||
- Corrected DTR/RTS value on device insertion, visible when Serial
|
||||
Enumeration is disabled
|
||||
- Corrected the ability to override Baud Rate and Line Control from the INF
|
||||
file
|
||||
|
||||
******************************************************************************
|
||||
RELEASE NOTES FOR 6.0
|
||||
|
||||
- Corrected multiple blue screens and driver hangs related to race
|
||||
conditions in the driver
|
||||
- Corrected problem where driver hangs when 4 or more devices are connected
|
||||
to a single transaction translator hub
|
||||
- Corrected bugs that prohibited serial enumeration
|
||||
- Corrected problem where IO requests were not completed/cancelled on a
|
||||
close
|
||||
- Corrected problem with dialing out or PPP connections
|
||||
- Created IO queueing mechanism so that multiple reads, writes, etc. can be
|
||||
queued and waited on
|
||||
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
LICENSE AGREEMENT
|
||||
SILICON LABS VCP DRIVER
|
||||
IMPORTANT: READ CAREFULLY BEFORE AGREEING TO TERMS
|
||||
|
||||
THIS PRODUCT CONTAINS THE SILICON LABS VCP DRIVER AND INSTALLER PROGRAMS AND OTHER THIRD PARTY SOFTWARE.TOGETHER THESE PRODUCTS ARE REFERRED TO AS THE "LICENSED SOFTWARE". USE OF THE LICENSED SOFTWARE IS SUBJECT TO THE TERMS OF THIS LICENSE AGREEMENT. DOWNLOADING THE LICENSED SOFTWARE AND INDICATING YOUR CONSENT TO THE TERMS OF THIS LICENSE CONSTITUTES A BINDING AGREMENT BETWEEN SILICON LABORATORIES, INC. ("SILICON LABS") AND YOU OR YOUR EMPLOYER (IF APPLICABLE). IF YOU ARE ACCEPTING THE TERMS OF THIS AGREEMENT ON BEHALF YOUR EMPLOYER, THE TERMS "YOU" AND "YOUR" REFER TO YOUR EMPLOYER. WRITTEN APPROVAL IS NOT A PREREQUISITE TO THE VALIDITY OR ENFORCEABILITY OF THIS AGREEMENT. IF THESE TERMS ARE CONSIDERED AN OFFER BY SILICON LABS, ACCEPTANCE IS EXPRESSLY LIMITED TO THESE TERMS.
|
||||
IF YOU DO NOT AGREE WITH ALL OF THE TERMS OF THIS LICENSE AGREEMENT, YOU MUST NOT USE THE LICENSED SOFTWARE AND YOU MUST DELETE ALL OF COPIES OF THE LICENSED SOFTWARE FROM YOUR COMPUTER.
|
||||
1. LICENSE: The Licensed Software is and will remain the property of Silicon Labs or a third party from whom Silicon Labs has the authorization to distribute to you subject to the terms of this Agreement. This Licensed Software is protected by state, federal, and international copyright laws. Subject at all times to your compliance with the terms of this License Agreement, Silicon Labs grants to you a nonexclusive license to use the Licensed Software as described in this License Agreement. Silicon Labs may revoke this license at any time if you fail to comply with the terms of this License Agreement. Certain parts of the Licensed Software, including DPInst.exe, are licensed from Microsoft Corporation. For information concerning licensing DPInst.exe and the redistributable pieces of WDF used in the driver, refer to the license.rtf file in the 7600.16385.1 version of the Windows Driver Kit, available through Microsoft.
|
||||
2. CONTENTS OF THE LICENSED SOFTWARE: The Licensed Software consists of the following items:
|
||||
a. Driver binaries
|
||||
b. INF file that describes the driver installation
|
||||
c. DPInst.exe that provides the GUI interface to install the drivers
|
||||
d. XML file that describes the DPInst.exe and GUI items
|
||||
3. INSTALLATION AND USE RIGHTS:
|
||||
a. You may download and install the Licensed Software on one or more computers and make any number of copies.
|
||||
b. You may internally evaluate the Licensed Software. If you elect to use the Licensed Software for any other purpose, including modification and distribution, then the following additional terms apply to you.
|
||||
c. You may modify only the INF and XML files. You may modify these files with information concerning your company or your company's products.
|
||||
d. You may not modify the driver binary files or the DPInst.exe files.
|
||||
e. You may redistribute to your customers the Licensed Software only with the modified INF and XML files. Your redistribution may be in any form, including physical media and Internet downloads.
|
||||
4. RESTRICTIONS:
|
||||
a. You may not use the Licensed Software with any integrated circuit products other than those designed and manufactured by Silicon Labs.
|
||||
b. Except as provided above, you may not redistribute, sublicense, assign, rent or lease any portion of the Licensed Software to any third party.
|
||||
c. You may not reverse engineer, decompile, disassemble, modify, translate, or make any attempt to discover the source code of the Licensed Software. You may not work around any technical limitation in the Licensed Software.
|
||||
d. Except as provided above, you may not modify or create derivative works from the Licensed Software.
|
||||
e. You may not modify or distribute the Licensed Software so that any part of it becomes subject to an excluded license. An excluded license is one that requires, as a condition of use, modification or distribution, that the software be disclosed or distributed in source code form, or that others have the right to modify it.
|
||||
f. You may not obscure or remove any product identification, copyright or other notices that appear on the Licensed Software, including any notices from third parties.
|
||||
g. You may not redistribute any modified or unmodified version of the Licensed Software to any third party as a standalone product. You may not redistribute any modified or unmodified version of the Licensed Software to any third party who has not accepted the terms of an end-user license agreement that contains terms at least as protective of Silicon Labs' rights as those contained in this License Agreement.
|
||||
5. WARRANTY: Silicon Labs does not warrant that the Licensed Software will meet your requirements or that operation of the Licensed Software will be uninterrupted or error-free. You agree that the Licensed Software is provided "AS IS" and that Silicon Labs makes no other warranties regarding the Licensed Software. SILICON LABS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT, RELATED TO THE LICENSED SOFTWARE, ITS USE OR ANY INABILITY TO USE IT, THE RESULTS OF ITS USE AND THIS AGREEMENT. YOU MAY HAVE OTHER RIGHTS, WHICH VARY FROM STATE TO STATE.
|
||||
6. DISCLAIMER OF DAMAGES: IN NO EVENT WILL SILICON LABS BE LIABLE TO YOU FOR ANY SPECIAL, CONSEQUENTIAL, INDIRECT, OR SIMILAR DAMAGES, INCLUDING ANY LOST PROFITS OR LOST DATA ARISING OUT OF THE USE OR INABILITY TO USE THE LICENSED SOFTWARE EVEN IF SILICON LABS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY TO YOU. IN NO CASE SHALL SILICON LABS' CUMULATIVE LIABILITY TO YOU FOR ALL PURPOSES EXCEED FIFTY UNITED STATES DOLLARS ($50). The disclaimers and limitations set forth above will apply regardless of whether you accept the Licensed Software.
|
||||
7. TERM AND TERMINATION: The term of this Agreement and the License granted herein shall begin upon use of the Licensed Software and continue in perpetuity unless you breach any of the obligations set out under this Agreement. Upon any breach of this Agreement by you, the license granted hereunder shall terminate immediately and you shall cease all use of the Licensed Software and return or destroy all copies of the Licensed Software to Silicon Labs immediately. Termination of this License upon your breach is only one remedy available to Silicon Labs. In addition to termination of this Agreement upon your breach, Silicon Labs shall be entitled to seek any and all other available remedies, at law or at equity, arising from your breach. Termination of this Agreement shall not affect your customers' ability to continue using copies of the modified or unmodified Licensed Software they obtained from you.
|
||||
8. EXPORT: You shall comply with all applicable federal, provincial, state and local laws, regulations and ordinances including but not limited to applicable U.S. Export Administration Laws and Regulations. You shall not export or re-export, or allow the export or re-export of the Licensed Software to any country specified in the then-current Supplement No. 1 to Part 740, or, in violation of the embargo provisions in Part 746, of the U.S. Export Administration Regulations (or any successor regulations or supplement), except in compliance with and with all licenses and approvals required under applicable export laws and regulations, including without limitation, those of the U.S. Department of Commerce.
|
||||
9. GENERAL: This Agreement will be governed by the laws of the State of Texas and any applicable federal laws or regulations. The waiver by either Party of any default or breach of this Agreement shall not constitute a waiver of any other or subsequent default or breach. This Agreement constitutes the complete and exclusive statement of the mutual understanding between you and Silicon Labs with respect to this subject matter herein. This Agreement may only be modified by a written addendum, which has been signed by both you and Silicon Labs.
|
||||
|
||||
BY CLICKING "I ACCEPT THE TERMS OF THIS AGREEMENT" YOU AGREE TO ACCEPT AND COMPLY WITH THE TERMS OF THIS LICENSE AGREEMENT WITH SILICON LABORATORIES INC.
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,247 +0,0 @@
|
|||
;/*++
|
||||
;
|
||||
;Module Name:
|
||||
;
|
||||
; SILABSER.INF
|
||||
;
|
||||
; Copyright 2019, Silicon Laboratories Inc.
|
||||
;
|
||||
;Abstract:
|
||||
; Installation INF for Silicon Labs CP210x device
|
||||
;
|
||||
;--*/
|
||||
|
||||
[Version]
|
||||
Signature="$WINDOWS NT$"
|
||||
Class=Ports
|
||||
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
|
||||
Provider=%Provider%
|
||||
DriverVer = 10/04/2022,11.2.0.167
|
||||
CatalogFile = silabser.cat
|
||||
PnpLockDown=1
|
||||
|
||||
; ================= Device section =====================
|
||||
|
||||
[Manufacturer]
|
||||
%ManufacturerName%=SiLabsModelsSection, NTamd64.10.0...17134, NTarm.10.0...17134, NTarm64.10.0...17134, NTx86.10.0...17134
|
||||
|
||||
; "Architecture must be specified in INF Models sections names" -- meaning lots of
|
||||
; cut'n'paste duplication in these next four per-Architecture ModelsSections
|
||||
;Models sections (one per CPU Architecture)
|
||||
;Models section for installation of x64 driver on Windows 10 and above
|
||||
[SiLabsModelsSection.NTamd64.10.0...17134]
|
||||
%USB\VID_10C4&PID_EA60.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA60
|
||||
%USB\VID_10C4&PID_EA63.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA63
|
||||
%USB\VID_10C4&PID_EA70&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_00
|
||||
%USB\VID_10C4&PID_EA70&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_00
|
||||
%USB\VID_10C4&PID_EA71&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_02
|
||||
%USB\VID_10C4&PID_EA71&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_03
|
||||
%USB\VID_10C4&PID_EA7A&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_00
|
||||
%USB\VID_10C4&PID_EA7A&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_00
|
||||
%USB\VID_10C4&PID_EA7B&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_02
|
||||
%USB\VID_10C4&PID_EA7B&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_03
|
||||
|
||||
;Models section for installation of ARM (32-bit) driver on Windows 10 and above
|
||||
[SiLabsModelsSection.NTarm.10.0...17134]
|
||||
%USB\VID_10C4&PID_EA60.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA60
|
||||
%USB\VID_10C4&PID_EA63.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA63
|
||||
%USB\VID_10C4&PID_EA70&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_00
|
||||
%USB\VID_10C4&PID_EA70&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_00
|
||||
%USB\VID_10C4&PID_EA71&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_02
|
||||
%USB\VID_10C4&PID_EA71&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_03
|
||||
%USB\VID_10C4&PID_EA7A&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_00
|
||||
%USB\VID_10C4&PID_EA7A&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_00
|
||||
%USB\VID_10C4&PID_EA7B&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_02
|
||||
%USB\VID_10C4&PID_EA7B&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_03
|
||||
|
||||
;Models section for installation of ARM (64-bit) driver on Windows 10 and above
|
||||
[SiLabsModelsSection.NTarm64.10.0...17134]
|
||||
%USB\VID_10C4&PID_EA60.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA60
|
||||
%USB\VID_10C4&PID_EA63.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA63
|
||||
%USB\VID_10C4&PID_EA70&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_00
|
||||
%USB\VID_10C4&PID_EA70&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_00
|
||||
%USB\VID_10C4&PID_EA71&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_02
|
||||
%USB\VID_10C4&PID_EA71&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_03
|
||||
%USB\VID_10C4&PID_EA7A&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_00
|
||||
%USB\VID_10C4&PID_EA7A&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_00
|
||||
%USB\VID_10C4&PID_EA7B&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_02
|
||||
%USB\VID_10C4&PID_EA7B&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_03
|
||||
|
||||
;Models section for installation of x86 driver on Windows 10 and above
|
||||
[SiLabsModelsSection.NTx86.10.0...17134]
|
||||
%USB\VID_10C4&PID_EA60.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA60
|
||||
%USB\VID_10C4&PID_EA63.DeviceDesc% =SiLabsDDInstallSection, USB\VID_10C4&PID_EA63
|
||||
%USB\VID_10C4&PID_EA70&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_00
|
||||
%USB\VID_10C4&PID_EA70&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA70&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_00
|
||||
%USB\VID_10C4&PID_EA71&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_01
|
||||
%USB\VID_10C4&PID_EA71&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_02
|
||||
%USB\VID_10C4&PID_EA71&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA71&Mi_03
|
||||
%USB\VID_10C4&PID_EA7A&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_00
|
||||
%USB\VID_10C4&PID_EA7A&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7A&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_00.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_00
|
||||
%USB\VID_10C4&PID_EA7B&Mi_01.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_01
|
||||
%USB\VID_10C4&PID_EA7B&Mi_02.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_02
|
||||
%USB\VID_10C4&PID_EA7B&Mi_03.DeviceDesc%=SiLabsDDInstallSection, USB\VID_10C4&PID_EA7B&Mi_03
|
||||
|
||||
|
||||
;DDInstall section
|
||||
[SiLabsDDInstallSection]
|
||||
AddReg=silabser.AddReg
|
||||
CopyFiles=Silabser_CopyFiles_FileListSection
|
||||
FeatureScore=0x40
|
||||
|
||||
|
||||
;DDInstall.Services section
|
||||
[SiLabsDDInstallSection.Services]
|
||||
AddService = silabser,0x00000002,silabser.AddService
|
||||
|
||||
|
||||
[silabser.AddService]
|
||||
DisplayName = %silabser.SvcDesc%
|
||||
ServiceType = 1
|
||||
StartType = 3
|
||||
ErrorControl = 1
|
||||
ServiceBinary = %12%\silabser.sys
|
||||
AddReg = silabser.AddService.AddReg
|
||||
|
||||
; Per-Service-level registry entries (the "parameters key")
|
||||
[silabser.AddService.AddReg]
|
||||
HKR, Parameters\Wdf, ForceLogsInMiniDump, 0x00010001, 1
|
||||
HKR, Parameters, DebugLevel, 0x00010001, 0
|
||||
HKR, Parameters, DebugFlag, 0x00010001, 0x1c01817
|
||||
;To break on entry if requested in Parameters
|
||||
;HKR, Parameters, BreakOnEntry, 0x00010001,1
|
||||
|
||||
|
||||
; common registry entries
|
||||
; Per-Driver-level registry entries (the "software key")
|
||||
[silabser.AddReg]
|
||||
HKR,,NTMPDriver,,silabser.sys
|
||||
HKR,,RateLimitPurgeMS, 0x10001, 0x64, 0x00, 0x00, 0x00
|
||||
;To override the default value for BaudRate/LineControl
|
||||
HKR,,OverrideDefaultPortSettings, 0x10001, 01,00,00,00
|
||||
HKR,,InitialBaudRate, 0x10001, 00,C2,01,00 ;115200 initial baud rate
|
||||
HKR,,InitialLineControl,, "8N1" ;8-bits, No parity, 1 stop bit
|
||||
HKR,,PortSubClass,1,01
|
||||
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
|
||||
;Prepare to hack ControlHandShake
|
||||
;HKR,,ControlHandShakeForcedSetBits,0x10001,01,00,00,00
|
||||
|
||||
|
||||
;DDInstall.HW section
|
||||
[SiLabsDDInstallSection.HW]
|
||||
AddReg=SiLabsDDInstallSection.HW.AddReg
|
||||
|
||||
|
||||
; Per-device-level registry entries (the "hardware key")
|
||||
[SiLabsDDInstallSection.HW.AddReg]
|
||||
;Amount of time the device must be idle before idling out
|
||||
HKR,,"SelectiveSuspendTimeout",0x00010001,10000
|
||||
HKR,,"DisableHwAccessInModemStatusIoctls",0x00010001,1
|
||||
HKR,,"DisableIoctlIOCTL_SERIAL_PURGE",0x00010001,1
|
||||
; Attention! The EnablePowerManagewment value is no longer supported.
|
||||
; To disable Selective Suspend, uncomment the following line:
|
||||
; HKR,,"DisableS0Idle",0x00010001,1
|
||||
; opt-in to DFx
|
||||
HKR,"WDF","WdfDirectedPowerTransitionEnable",0x00010001,1
|
||||
|
||||
;To disable the checking TxEmpty in Get Comm Status Ioctl, uncomment the following line:
|
||||
;HKR,,"DisableTxEmptyCheckInGetCommStatusIoctl",0x00010001,1
|
||||
|
||||
;To disable the checking TxEmpty in Ioctl Wait Mask, uncomment the following line:
|
||||
;HKR,,"DisableTxEmptyCheckInIoctlWaitMask",0x00010001,1
|
||||
|
||||
;To disable the checking remaining data in Tx queue, uncomment the following line:
|
||||
;HKR,,"DisableTxEmptyCheckInClose",0x00010001,1
|
||||
|
||||
;To disable purge In close, uncomment the following line:
|
||||
;HKR,,"DisablePurgeInClose",0x00010001,1
|
||||
|
||||
;Don't use polling to get Comm Status, uncomment the following line:
|
||||
;HKR,,"DisableCommStatusPolling",0x00010001,1
|
||||
|
||||
;To Skipping external naming, uncomment the following line:
|
||||
;HKR,,"SerialSkipExternalNaming",0x00010001,1
|
||||
|
||||
;To allow device to idle with an open handle, uncomment the following line:
|
||||
;HKR,,"AllowIdleWhileOpen",0x00010001,1
|
||||
|
||||
;To set the maximum time the close operation will wait for Tx queue to empty, uncomment the following line:
|
||||
;HKR,,"TxEmptyTimeoutOnCloseInMs",0x00010001,30000
|
||||
|
||||
;To disable the port, uncomment the following line:
|
||||
;HKR,,"DisablePort",0x00010001,1
|
||||
|
||||
;To obtain the polling interval to get information from the CP210x device, uncomment the following line:
|
||||
;HKR,,"EventMaskPollingInterval",0x00010001,80
|
||||
|
||||
; To obtain the number of read requests that the framework will queue to receive data from the CP210x device, uncomment the following line:
|
||||
;HKR,,"ContinuousReaderNumPendingReads",0x00010001,1
|
||||
|
||||
; To use of the custom 'dummy wait' code, uncomment the following line:
|
||||
;HKR,,"EnableCustomWait",0x00010001,1
|
||||
|
||||
; To set DTR for serial, uncomment the following line:
|
||||
;HKR,,"SetDTROnOpen",0x00010001,1
|
||||
|
||||
; To set RTS for serial, uncomment the following line:
|
||||
;HKR,,"SetRTSOnOpen",0x00010001,1
|
||||
|
||||
|
||||
[Silabser_CopyFiles_FileListSection]
|
||||
silabser.sys
|
||||
|
||||
[SourceDisksNames]
|
||||
1=%Disk_Description%,"silabser.cat"
|
||||
|
||||
[SourceDisksFiles.amd64]
|
||||
silabser.sys = 1,\x64
|
||||
[SourceDisksFiles.arm]
|
||||
silabser.sys = 1,\arm
|
||||
[SourceDisksFiles.arm64]
|
||||
silabser.sys = 1,\arm64
|
||||
[SourceDisksFiles.x86]
|
||||
silabser.sys = 1,\x86
|
||||
|
||||
|
||||
[DestinationDirs]
|
||||
Silabser_CopyFiles_FileListSection = 12 ; 13 = Driver package's Driver Store directory (%WINDIR%\System32\DriverStore\FileRepository); 12 = Drivers directory (%SystemRoot%\system32\drivers)) (make sure "ServiceBinary =" matches usage of 12 vs. 13)
|
||||
|
||||
|
||||
;---------------------------------------------------------------;
|
||||
|
||||
[Strings]
|
||||
; For provider, enter your Company Legal/Official/Long/Full Name
|
||||
Provider="Silicon Laboratories Inc."
|
||||
; For ManufacturerName, enter your Company "Colloquial" Name
|
||||
ManufacturerName="Silicon Labs"
|
||||
Disk_Description= "Silicon Labs CP210x USB to UART Bridge Installation Disk"
|
||||
USB\VID_10C4&PID_EA60.DeviceDesc= "Silicon Labs CP210x USB to UART Bridge"
|
||||
USB\VID_10C4&PID_EA63.DeviceDesc= "Silicon Labs CP210x USB to UART Bridge"
|
||||
USB\VID_10C4&PID_EA70&Mi_00.DeviceDesc="Silicon Labs Dual CP2105 USB to UART Bridge: Enhanced COM Port"
|
||||
USB\VID_10C4&PID_EA70&Mi_01.DeviceDesc="Silicon Labs Dual CP2105 USB to UART Bridge: Standard COM Port"
|
||||
USB\VID_10C4&PID_EA71&Mi_00.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 0"
|
||||
USB\VID_10C4&PID_EA71&Mi_01.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 1"
|
||||
USB\VID_10C4&PID_EA71&Mi_02.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 2"
|
||||
USB\VID_10C4&PID_EA71&Mi_03.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 3"
|
||||
USB\VID_10C4&PID_EA7A&Mi_00.DeviceDesc="Silicon Labs Dual CP2105 USB to UART Bridge: Enhanced COM Port"
|
||||
USB\VID_10C4&PID_EA7A&Mi_01.DeviceDesc="Silicon Labs Dual CP2105 USB to UART Bridge: Standard COM Port"
|
||||
USB\VID_10C4&PID_EA7B&Mi_00.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 0"
|
||||
USB\VID_10C4&PID_EA7B&Mi_01.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 1"
|
||||
USB\VID_10C4&PID_EA7B&Mi_02.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 2"
|
||||
USB\VID_10C4&PID_EA7B&Mi_03.DeviceDesc="Silicon Labs Quad CP2108 USB to UART Bridge: Interface 3"
|
||||
|
||||
silabser.SvcDesc="Silicon Labs CP210x USB to UART Bridge Driver"
|
Binary file not shown.
Binary file not shown.
|
@ -1,16 +0,0 @@
|
|||
# This is a sample Python script.
|
||||
import os, requests # TODO: we don't have 'requests' package build-in, and it kind of not works in conda environment, should we just use urllib.request instead?
|
||||
from zipfile import ZipFile
|
||||
URL = "https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip"
|
||||
|
||||
response = requests.get(URL)
|
||||
|
||||
open('ESP32driver', 'wb').write(response.content)
|
||||
# need to change user destination figure out how to get it to downloads
|
||||
# 11/5/22 --> Saving to downloads folder. No change made. Possible make a change in the inf file: https://learn.microsoft.com/en-us/windows-hardware/drivers/install/specifying-the-source-and-target-locations-for-device-files
|
||||
|
||||
with ZipFile('ESP32driver', 'r') as zipObj:
|
||||
zipObj.extractall(os.path.join(os.path.expanduser("~"), "Downloads", "ESP32driver"))
|
||||
# TODO: after extract the file, run the .inf file in it to actually install the driver
|
||||
# 11/5/22 --> Created bash script with same name to run files and control destination folder. MUST RUN AS AN ADMINISTRATOR
|
||||
# TODO: integrate the bash script into the python script so ppl don't have to run/have seperate files in their device
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
pnputil -i -a silabser.inf # Windows only command
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
.pio
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
.vscode/ipch
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": [
|
||||
"platformio.platformio-ide"
|
||||
],
|
||||
"unwantedRecommendations": [
|
||||
"ms-vscode.cpptools-extension-pack"
|
||||
]
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
# Run this first if running everything in non-VSCode ide
|
||||
import os
|
||||
|
||||
option = "upload" # build, upload, clean, or read
|
||||
|
||||
if os.name == 'nt':
|
||||
platformio = os.path.join(os.path.expanduser('~'), '.platformio', 'penv', 'Scripts', 'platformio.exe')
|
||||
else:
|
||||
platformio = os.path.join(os.path.expanduser('~'), '.platformio', 'penv', 'bin', 'platformio')
|
||||
if not os.path.exists(platformio):
|
||||
# Platformio not exist, run setup from web
|
||||
import requests, base64
|
||||
s = requests.Session()
|
||||
s.trust_env = None # for anyone running on proxy
|
||||
r = s.get('https://api.github.com/repos/platformio/platformio-core-installer/contents/get-platformio.py?ref=develop').json()
|
||||
exec(base64.b64decode(r['content']))
|
||||
|
||||
|
||||
params = {
|
||||
'build': 'run',
|
||||
'upload': 'run --target upload',
|
||||
'clean': 'run --target clean',
|
||||
'read': 'device monitor'
|
||||
}
|
||||
|
||||
|
||||
os.system(f'{platformio} {params[option]}') # put one of the three function from above
|
|
@ -1,39 +0,0 @@
|
|||
|
||||
This directory is intended for project header files.
|
||||
|
||||
A header file is a file containing C declarations and macro definitions
|
||||
to be shared between several project source files. You request the use of a
|
||||
header file in your project source file (C, C++, etc) located in `src` folder
|
||||
by including it, with the C preprocessing directive `#include'.
|
||||
|
||||
```src/main.c
|
||||
|
||||
#include "header.h"
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Including a header file produces the same results as copying the header file
|
||||
into each source file that needs it. Such copying would be time-consuming
|
||||
and error-prone. With a header file, the related declarations appear
|
||||
in only one place. If they need to be changed, they can be changed in one
|
||||
place, and programs that include the header file will automatically use the
|
||||
new version when next recompiled. The header file eliminates the labor of
|
||||
finding and changing all the copies as well as the risk that a failure to
|
||||
find one copy will result in inconsistencies within a program.
|
||||
|
||||
In C, the usual convention is to give header files names that end with `.h'.
|
||||
It is most portable to use only letters, digits, dashes, and underscores in
|
||||
header file names, and at most one dot.
|
||||
|
||||
Read more about using header files in official GCC documentation:
|
||||
|
||||
* Include Syntax
|
||||
* Include Operation
|
||||
* Once-Only Headers
|
||||
* Computed Includes
|
||||
|
||||
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
|
|
@ -1,46 +0,0 @@
|
|||
|
||||
This directory is intended for project specific (private) libraries.
|
||||
PlatformIO will compile them to static libraries and link into executable file.
|
||||
|
||||
The source code of each library should be placed in a an own separate directory
|
||||
("lib/your_library_name/[here are source files]").
|
||||
|
||||
For example, see a structure of the following two libraries `Foo` and `Bar`:
|
||||
|
||||
|--lib
|
||||
| |
|
||||
| |--Bar
|
||||
| | |--docs
|
||||
| | |--examples
|
||||
| | |--src
|
||||
| | |- Bar.c
|
||||
| | |- Bar.h
|
||||
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|
||||
| |
|
||||
| |--Foo
|
||||
| | |- Foo.c
|
||||
| | |- Foo.h
|
||||
| |
|
||||
| |- README --> THIS FILE
|
||||
|
|
||||
|- platformio.ini
|
||||
|--src
|
||||
|- main.c
|
||||
|
||||
and a contents of `src/main.c`:
|
||||
```
|
||||
#include <Foo.h>
|
||||
#include <Bar.h>
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
PlatformIO Library Dependency Finder will find automatically dependent
|
||||
libraries scanning project source files.
|
||||
|
||||
More information about PlatformIO Library Dependency Finder
|
||||
- https://docs.platformio.org/page/librarymanager/ldf.html
|
|
@ -1,27 +0,0 @@
|
|||
; PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
; uncommdent ONE of the three sections below only
|
||||
|
||||
; [env:upesy_wroom]
|
||||
; platform = espressif32
|
||||
; board = upesy_wroom
|
||||
; framework = arduino
|
||||
|
||||
[env:megaatmega2560]
|
||||
platform = atmelavr
|
||||
board = megaatmega2560
|
||||
framework = arduino
|
||||
|
||||
; [env:uno]
|
||||
; platform = atmelavr
|
||||
; board = uno
|
||||
; framework = arduino
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
#include <Arduino.h>
|
||||
#if defined(ESP32)
|
||||
#define A0 (36)
|
||||
#define A1 (39)
|
||||
#define A2 (34)
|
||||
#define A3 (35)
|
||||
#define A4 (32)
|
||||
#define A5 (33)
|
||||
#endif
|
||||
|
||||
// define the divident of sizeof()'s return value
|
||||
#if defined(ESP32)
|
||||
#define SIZE_DIV 4 // size / 4 for 12-bit device
|
||||
#else
|
||||
#define SIZE_DIV 2 // size / 2 for 10-bit device
|
||||
#endif
|
||||
#define WAIT_TIME 1000UL
|
||||
|
||||
int pins[] = {A0, A1, A2, A3, A4, A5};
|
||||
int i, j;
|
||||
unsigned long currTime; // non-blocking timer
|
||||
|
||||
void setup() {
|
||||
Serial.begin(19200);
|
||||
currTime = millis();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (millis() - currTime >= WAIT_TIME) { // non-blocking time delay
|
||||
Serial.print("[");
|
||||
for (i = 0; i < sizeof(pins)/SIZE_DIV; i++) {
|
||||
Serial.print(analogRead(pins[i]));
|
||||
if (i != sizeof(pins)/SIZE_DIV - 1) {
|
||||
Serial.print(", ");
|
||||
}
|
||||
}
|
||||
Serial.println("]");
|
||||
currTime = millis();
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
This directory is intended for PlatformIO Unit Testing and project tests.
|
||||
|
||||
Unit Testing is a software testing method by which individual units of
|
||||
source code, sets of one or more MCU program modules together with associated
|
||||
control data, usage procedures, and operating procedures, are tested to
|
||||
determine whether they are fit for use. Unit testing finds problems early
|
||||
in the development cycle.
|
||||
|
||||
More information about PlatformIO Unit Testing:
|
||||
- https://docs.platformio.org/page/plus/unit-testing.html
|
|
@ -1,34 +0,0 @@
|
|||
// manually define all the An ports on ESP32 board
|
||||
#define A0 (36)
|
||||
#define A1 (39)
|
||||
#define A2 (34)
|
||||
#define A3 (35)
|
||||
#define A4 (32)
|
||||
#define A5 (33)
|
||||
|
||||
// define the divident of sizeof()'s return value, to the correct length of our list
|
||||
#define SIZE_DIV 4 // for esp32, the resolution is doubled than the usual arduino board, so we double the factor, too
|
||||
#define WAIT_TIME 1000UL
|
||||
int pins[] = { A0, A1, A2, A3, A4, A5 };
|
||||
int i, j;
|
||||
unsigned long currTime; // non-blocking time tracker
|
||||
|
||||
void setup() {
|
||||
Serial.begin(19200);
|
||||
currTime = millis();
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (millis() - currTime >= WAIT_TIME) { // non-blocking time delay
|
||||
Serial.print("[");
|
||||
for (i = 0; i < sizeof(pins) / SIZE_DIV; i++) {
|
||||
Serial.print(analogReadMilliVolts(pins[i]), DEC);
|
||||
if (i != sizeof(pins) / SIZE_DIV - 1) { // fence-post the list print
|
||||
Serial.print(", ");
|
||||
}
|
||||
}
|
||||
Serial.println("]");
|
||||
currTime = millis();
|
||||
}
|
||||
}
|
50
README.md
50
README.md
|
@ -1,31 +1,42 @@
|
|||
# Read Resistances
|
||||
|
||||
Read the resistance of a voltage divider using Arduino boards
|
||||
|
||||
## Required & Dependencies
|
||||
|
||||
### Required
|
||||
- Python 3 (but below 3.10). And the following packages using `pip`.
|
||||
Alternatively, you can just switch the file source of the Command line Prompt by using 'cd <Project_File_Directory>' and after that, run `pip install -r requirements.txt` in to have all packages installed automatically
|
||||
|
||||
- Python 3 (but below 3.10). And the following packages using `pip`. Alternatively, you can just switch the file source of the Command line Prompt by using 'cd <Project_File_Directory>' and after that, run `pip install -r requirements.txt` in to have all packages installed automatically
|
||||
- matplotlib
|
||||
- pyserial
|
||||
- wxPython
|
||||
- PlatformIO extension, if you use VSCode for embedded programmings
|
||||
- [Arduino ](https://github.com/microsoft/vscode-arduino)extension, if you use VSCode for embedded programmings
|
||||
- An Arduino-based microcontroller
|
||||
- ADS1115 16-bit ADC chip
|
||||
|
||||
### Recommended
|
||||
|
||||
- Code Runner (for VSCode only)
|
||||
- [vscode-arduino](https://github.com/microsoft/vscode-arduino) (for VSCode only)
|
||||
- wxFormBuilder
|
||||
- [Arduino IDE](https://makeabilitylab.github.io/physcomp/arduino/arduino-ide.html)
|
||||
|
||||
## How to use
|
||||
|
||||
To get a general idea of this project as well as hardware setup, please refer to [this video demo](https://youtu.be/vbVPXj8gbmI)
|
||||
|
||||
### Direct use
|
||||
First open the `.ino` file from `nano_c_mk1` directory using Arduino IDE and download it onto an Arduino board. ~~Or if you are using Arduino Mega 2560 you can
|
||||
|
||||
First open the `.ino` file from `nano_c_mk1` directory using Arduino IDE and download it onto an Arduino board. Alternatively, you can use the arduino extension on VSCode to download it into your boards and run the interface python code. ~~Or if you are using Arduino Mega 2560 you can
|
||||
use the code in `ReadAnalog` folder by open the folder in VSCode and run with PlatformIO, or just run `flash.py` in a terminal~~
|
||||
~~(Arduino Mega and Uno boards are no longer supported. Please use [this link](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html) to
|
||||
use on Arduino IDE or PlatformIO for VSCode)~~ (There's a hardware upgrade so that the firmware has been re-written for the new hardware.
|
||||
Therefore the old hardware are no longer in use. You may still find them in `OldFirmware` directory for reference but we are not using them anymore)
|
||||
use on Arduino IDE or PlatformIO for VSCode)~~ (There's a hardware upgrade so that the firmware has been re-written for the new hardware. You can checkout the 'esp32' branch or the old stuff)
|
||||
For Windows you can just [download the released executable](https://github.com/Seal-Ammonia/Read-Sensor-Resistances/releases/download/beta1_1_1/SeeDatResistance.exe) from the release section to use. Make sure to disable any virus-scanning software when download as Microsoft incorrectly recognized PyInstaller as virus. For non-Windows systems you can just run `python test.py` and start from the UI. Enter the relevant information and start collect and measuring data. If you do not have a board avaliable, leave the dropdown menu in the UI as "no device" and it will run a simulation.
|
||||
|
||||
### develop & build
|
||||
|
||||
For windows, you may use the pseudo Makefile `make.bat` to build a python environment for the front end codes. Call `make run` to run the program. And `make clean` to delet all local temporary files and environment files before you make any commit. We recomment to use VSCode to do both interface and firmware development.
|
||||
|
||||
Beside the c-based code for the Arduino board to read raw data from the board, everything has now been done in the python
|
||||
files. The main program is `test.py`, which calls `UI.py` to prompt for input. It is NOT recommended modifying the `ui.py`
|
||||
as it is generated from wxFormBuilder from `sealammonia.fbp`, which could be modified if any frontend feature need to change.
|
||||
|
@ -34,9 +45,11 @@ sensor's values. It also creates a .csv file under `RecordedData` directory to s
|
|||
`read_arduino.py` read raw data from Arduino board and convert it to the correct resistance, which could be plotted out
|
||||
using `serial_plotter.py`. To make your own executable, use `PyInstaller` using this command in your python environment:
|
||||
`pyinstaller build.spec`.
|
||||
|
||||
ATTENTION MAC USER: currently the software cannot correctly functional on mac (especially arm-based ones). You might need to consider to use it on a windows VM or using parallel desktop
|
||||
|
||||
## Issues
|
||||
|
||||
- Newer hardware will require 3.3V. ~~Currently can only use 5V as input voltage.~~ May need to change the algorithm in `read_arduino.py`.
|
||||
- axis window size is not correct
|
||||
- on PyInstaller, windows misdetected our executable as a virus (seems resolved)
|
||||
|
@ -44,23 +57,26 @@ ATTENTION MAC USER: currently the software cannot correctly functional on mac (e
|
|||
- ~~Errors thrown when >1 reference resistances entered~~
|
||||
|
||||
## Todos:
|
||||
|
||||
- [ ] Fix Issues
|
||||
- [ ] Add an option to change the font size of the graph
|
||||
- [ ] Add different shapes to different lines one the graph in addition to differen colors
|
||||
- [ ] Automatically setup the driver for ESP32
|
||||
- [ ] programically to stablize the graph (change the y-scale of the graph to make the less dramatic)
|
||||
- [ ] (not urgent) make it runnable on Mac
|
||||
- [x] display sensor value in either the UI or on the plot
|
||||
- [x] Reopen plot window from the UI when closed
|
||||
- [x] Need to continue writing to file when graphing window is closed
|
||||
- [x] Make it so the time stamp is the actual time
|
||||
- [x] No blank line in between lines of csv file (new line may be added when file is closed)
|
||||
- [X] display sensor value in either the UI or on the plot
|
||||
- [X] Reopen plot window from the UI when closed
|
||||
- [X] Need to continue writing to file when graphing window is closed
|
||||
- [X] Make it so the time stamp is the actual time
|
||||
- [X] No blank line in between lines of csv file (new line may be added when file is closed)
|
||||
- [ ] Make it so we have the option to run multiple graphs at the same time, setting window size in UI
|
||||
- [x] Inputting value of 0 for window size should have an infinite window size
|
||||
- [x] Accept any inputs (such as resistor values, plot window size, base voltage etc.) as either command line argument or as input at beginning of program
|
||||
- [x] Write random values to simulate a sensor if no sensor available (this feature might be removed in the future)
|
||||
- [x] Advanced option menu in the UI to allow user to make more adjustments
|
||||
- [X] Inputting value of 0 for window size should have an infinite window size
|
||||
- [X] Accept any inputs (such as resistor values, plot window size, base voltage etc.) as either command line argument or as input at beginning of program
|
||||
- [X] Write random values to simulate a sensor if no sensor available (this feature might be removed in the future)
|
||||
- [X] Advanced option menu in the UI to allow user to make more adjustments
|
||||
- [X] Add resolution option in the UI to allow interchange between arduino (10bit) and esp32 (12 bits) (Not Applicable in new hardware)
|
||||
- [x] Possibly adding new module to support ESP32
|
||||
|
||||
- ~~ Possibly adding new module to support ESP32~~
|
||||
|
||||
- [ ] Support for non-Windows platforms (and maybe mobile)
|
||||
- [ ] Make it into one executable
|
||||
- [ ] Possibly adding new module to support Arduino MEGA and older firmwares (Need testing)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
@REM "make" file for windows-side compiling
|
||||
@ECHO OFF
|
||||
for %%I in ("%cd%") do set env=%%~nxI
|
||||
|
||||
if "%~1"=="build" GOTO build
|
||||
if "%~1"=="clean" GOTO clean
|
||||
if "%~1"=="run" GOTO run
|
||||
|
||||
:build
|
||||
python -m venv %env%
|
||||
%env%\Scripts\activate && pip install -r requirements.txt
|
||||
GOTO run
|
||||
|
||||
:clean
|
||||
del *.json 2>nul
|
||||
rmdir /s /q RecordedData 2>nul
|
||||
rmdir /s /q __pycache__ 2>nul
|
||||
rmdir /s /q %env% 2>nul
|
||||
rmdir /s /q build 2>nul
|
||||
rmdir /s /q dist 2>nul
|
||||
GOTO End
|
||||
|
||||
:run
|
||||
%env%\Scripts\python test.py
|
||||
pause
|
||||
|
||||
:End
|
|
@ -1,6 +1,16 @@
|
|||
/**
|
||||
* @file nano_c_mk1.ino
|
||||
* @author SEAL Ammonia subdivision
|
||||
* @brief Firmware to allow a Arduino board to read the analog values from the ADS1115 and send them to the main board
|
||||
* @version 0.1
|
||||
* @date 2023-03-03
|
||||
*
|
||||
* @copyright Copyright (c) 2023
|
||||
*
|
||||
*/
|
||||
#include <Adafruit_ADS1X15.h> // https://github.com/adafruit/Adafruit_ADS1X15, with partially its "continuous" example code integrated in ths
|
||||
|
||||
#define WAIT_TIME 1000UL // default wait time each value read
|
||||
#define WAIT_TIME 1000UL //
|
||||
#define ADS_MAX 4 // # of analog input pins of an ADS1115
|
||||
#define VOLTAGE_RANGE 6.144f // ADS1115 default gain (+/- 6.144V). Change this number smaller will reduced its actual magnutude, and vice versa
|
||||
#define CONST_I2C 32768 // a constant value
|
||||
|
@ -16,18 +26,11 @@ float adcReadings[ADS_MAX]; // buffer to hold all values read from an adc
|
|||
constexpr int READY_PIN = 3; // pin # that connects the "ALRT" pin of the ADS1115 to the board
|
||||
volatile bool new_data = false; // "ready" flag for the ADS1115
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief parse data from the ADS1115 and record to the buffer array
|
||||
|
||||
Upon data recieved, call getLastConversionResults() once to record the
|
||||
value into the adcReadings array. Increment/cycle back the channel mux
|
||||
selector and call startADCReading() to read the next channel. set back
|
||||
the new_data flag back to false
|
||||
|
||||
@acknowladgement https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_continuous_4_channel/ADS_continuous_4_channel.ino
|
||||
*/
|
||||
/**************************************************************************/
|
||||
/**
|
||||
* @brief parse data from each channel (AIN0-AIN3) of ADS1115 to read the analog value from. See ADS1115 datasheet for details
|
||||
*
|
||||
* @acknowledgement https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_continuous_4_channel/ADS_continuous_4_channel.ino
|
||||
*/
|
||||
void readData() {
|
||||
// we only wanna grab/set data if the ADS is ready to
|
||||
if (new_data) { // TODO: for some reason some board get the channel index off
|
||||
|
|
144
sealammonia.fbp
144
sealammonia.fbp
|
@ -88,7 +88,7 @@
|
|||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxBoxSizer" expanded="0">
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size">451,324</property>
|
||||
<property name="name">bSizer1</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
|
@ -817,11 +817,11 @@
|
|||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="0">
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxStaticBoxSizer" expanded="0">
|
||||
<object class="wxStaticBoxSizer" expanded="1">
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Additional Parameters (Do not change unless you know what you are doing!)</property>
|
||||
<property name="minimum_size"></property>
|
||||
|
@ -829,11 +829,11 @@
|
|||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="sizeritem" expanded="0">
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER|wxTOP</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxGridBagSizer" expanded="0">
|
||||
<object class="wxGridBagSizer" expanded="1">
|
||||
<property name="empty_cell_size"></property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
<property name="growablecols"></property>
|
||||
|
@ -848,7 +848,7 @@
|
|||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="flag">wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</property>
|
||||
<property name="row">0</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
|
@ -1024,12 +1024,98 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="0">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
|
||||
<property name="row">0</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Volts</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">unit3</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="0">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
|
||||
<property name="row">2</property>
|
||||
<property name="row">1</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -1115,7 +1201,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT</property>
|
||||
<property name="row">2</property>
|
||||
<property name="row">1</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxTextCtrl" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -1204,14 +1290,14 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="0">
|
||||
<object class="gbsizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="row">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALL|wxALIGN_RIGHT</property>
|
||||
<property name="row">2</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
|
@ -1239,7 +1325,7 @@
|
|||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label"></property>
|
||||
<property name="label">Font Size</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
|
@ -1247,7 +1333,7 @@
|
|||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">unit2</property>
|
||||
<property name="name">font_prompt</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
|
@ -1258,7 +1344,7 @@
|
|||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
|
@ -1290,14 +1376,14 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="0">
|
||||
<object class="gbsizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="row">0</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="row">2</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<object class="wxTextCtrl" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
|
@ -1325,15 +1411,15 @@
|
|||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Volts</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">unit3</property>
|
||||
<property name="name">fontSize</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
|
@ -1344,13 +1430,17 @@
|
|||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value">16</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
|
@ -1373,6 +1463,10 @@
|
|||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText"></event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
|
|
|
@ -7,7 +7,7 @@ import matplotlib.pyplot as plt
|
|||
import decimal
|
||||
from itertools import islice
|
||||
matplotlib.use("WXAgg") # for JetBrains IDE to force use wxPython as backend UI for plotting
|
||||
|
||||
matplotlib.rcParams['font.size'] = 16 # TODO: make this an UI option than "16"
|
||||
|
||||
class SerialPlotter:
|
||||
def __init__(self, parent: wx.Frame = None) -> None:
|
||||
|
@ -93,5 +93,5 @@ class SerialPlotter:
|
|||
|
||||
def plotting(self) -> FuncAnimation:
|
||||
""" animate the dynamic plot """
|
||||
ani = FuncAnimation(self.fig, self.animation, blit=False, interval=self.delay * 1000)
|
||||
ani = FuncAnimation(self.fig, self.animation, blit=False, interval=self.delay * 1000, save_count=60)
|
||||
return ani
|
||||
|
|
2
test.py
2
test.py
|
@ -20,7 +20,7 @@ WIDTH = 800
|
|||
|
||||
global ani, t1
|
||||
|
||||
|
||||
# TODO: add the option to change the font size of the graph
|
||||
def main():
|
||||
#################### USER INPUTS ###########################
|
||||
r_ref = np.array(
|
||||
|
|
21
ui.py
21
ui.py
|
@ -72,29 +72,32 @@ class Frame ( wx.Frame ):
|
|||
|
||||
self.vin_prompt = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, u"Source Voltage", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_ELLIPSIZE_END )
|
||||
self.vin_prompt.Wrap( -1 )
|
||||
gbSizer8.Add( self.vin_prompt, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
gbSizer8.Add( self.vin_prompt, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||
|
||||
self.input_voltage = wx.TextCtrl( v_entre.GetStaticBox(), wx.ID_ANY, u"3.3", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.input_voltage.SetToolTipString( u"Input voltage of the resistors, default 3.3 volts" )
|
||||
|
||||
gbSizer8.Add( self.input_voltage, wx.GBPosition( 0, 1 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 )
|
||||
|
||||
self.unit3 = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, u"Volts", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.unit3.Wrap( -1 )
|
||||
gbSizer8.Add( self.unit3, wx.GBPosition( 0, 2 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||
|
||||
self.sizer_prompt = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, u"Window Size", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT|wx.ST_ELLIPSIZE_END )
|
||||
self.sizer_prompt.Wrap( -1 )
|
||||
gbSizer8.Add( self.sizer_prompt, wx.GBPosition( 2, 0 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 5 )
|
||||
gbSizer8.Add( self.sizer_prompt, wx.GBPosition( 1, 0 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 5 )
|
||||
|
||||
self.m_textCtrl26 = wx.TextCtrl( v_entre.GetStaticBox(), wx.ID_ANY, u"50", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.m_textCtrl26.SetToolTipString( u"Window size for the plot window. If want infinite/maximum size, type 0" )
|
||||
|
||||
gbSizer8.Add( self.m_textCtrl26, wx.GBPosition( 2, 1 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.TOP|wx.RIGHT|wx.LEFT, 5 )
|
||||
gbSizer8.Add( self.m_textCtrl26, wx.GBPosition( 1, 1 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.TOP|wx.RIGHT|wx.LEFT, 5 )
|
||||
|
||||
self.unit2 = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.unit2.Wrap( -1 )
|
||||
gbSizer8.Add( self.unit2, wx.GBPosition( 1, 2 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
self.font_prompt = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, u"Font Size", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.font_prompt.Wrap( -1 )
|
||||
gbSizer8.Add( self.font_prompt, wx.GBPosition( 2, 0 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.ALIGN_RIGHT, 5 )
|
||||
|
||||
self.unit3 = wx.StaticText( v_entre.GetStaticBox(), wx.ID_ANY, u"Volts", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.unit3.Wrap( -1 )
|
||||
gbSizer8.Add( self.unit3, wx.GBPosition( 0, 2 ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
self.fontSize = wx.TextCtrl( v_entre.GetStaticBox(), wx.ID_ANY, u"16", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
gbSizer8.Add( self.fontSize, wx.GBPosition( 2, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
|
||||
|
||||
|
||||
v_entre.Add( gbSizer8, 1, wx.ALIGN_CENTER|wx.TOP, 5 )
|
||||
|
|
Loading…
Reference in New Issue