Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FT800_2 mbed Encoder
main.cpp
00001 #include "mbed.h" 00002 #include "encoder.h" 00003 #include "FT_Platform.h" 00004 #include "arm_const_structs.h" 00005 #include "math.h" 00006 00007 #define screen_width 480 00008 #define screen_heigth 272 00009 #define DIR_ICON_ADDR 210000 00010 #define FILE_ICON_ADDR 212000 00011 #define CLOSE_ICON_ADDR 214000 00012 #define PALETTE_ADDR 216000 00013 00014 #define FILE_SAVE 1 00015 #define FILE_DELETE 2 00016 00017 #define MENU_SCAN 1 00018 #define MENU_FILES 2 00019 00020 #define ROOT_DIR 254 00021 #define TEST_LENGTH_SAMPLES 1024 00022 00023 #define KEY_SCAN 1 00024 #define KEY_ASCAN 2 00025 #define KEY_BSCAN 3 00026 #define KEY_START 4 00027 #define KEY_STOP 5 00028 #define KEY_FILES 6 00029 #define KEY_EPS 7 00030 #define KEY_OPTIONS 8 00031 #define KEY_LEFT 10 00032 #define KEY_RIGHT 11 00033 #define KEY_UP 12 00034 #define KEY_DOWN 13 00035 #define KEY_CLOSE 14 00036 #define KEY_TIME 15 00037 #define KEY_OK 16 00038 00039 #define STATUS_MAIN 20 00040 #define STATUS_ASCAN 21 00041 #define STATUS_BSCAN 22 00042 #define STATUS_START 23 00043 #define STATUS_STOP 24 00044 #define STATUS_FILES 25 00045 #define STATUS_BIN 26 00046 #define STATUS_TIME 27 00047 #define STATUS_EPS 28 00048 #define STATUS_OTHER 29 00049 00050 #define TRACK_SLIDER 34 00051 #define TRACK_DEPTH 35 00052 #define TRACK_DISTANCE 36 00053 00054 #define MATERIAL_AIR 10 00055 #define MATERIAL_GYPSUM 27 00056 #define MATERIAL_CONCRETE 40 00057 #define MATERIAL_BRICK 37 00058 #define MATERIAL_OTHER 99 00059 00060 #define CLICK 0x50 00061 00062 //Serial pc(SERIAL_TX, SERIAL_RX, 2250000); 00063 AnalogIn in0(A0); 00064 AnalogIn in1(A1); 00065 AnalogOut out(PA_4); 00066 Encoder enc(D5, D6, false); 00067 FT800 TFT(D11, D12, D13, D10, D9, D8); 00068 00069 //----------------------------------------------------------------------------- 00070 // Encoder 00071 //----------------------------------------------------------------------------- 00072 uint8_t step_done = 0; 00073 uint16_t steps = 0; 00074 00075 //----------------------------------------------------------------------------- 00076 // FT800 00077 //----------------------------------------------------------------------------- 00078 uint8_t eps = 10, eps_temp, eps_position, ReadWord = 0, status = 0, offset = 52, temp_value[401] = {0}, meanValue[201] = {0}, sig[201], time_position, xscale = 8, yscale = 4, filename[20] = {0}; 00079 uint8_t data[24] = {0xAD, 0x81, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x92, 0x8F, 0xE5, 0xFF, 0x4A, 0xFE, 0xFF, 0xFF, 0x3C, 0xB1, 0xFF, 0xFF, 0xA3, 0x2D, 0x27, 0x01}; 00080 uint8_t palette[1024] = {143, 0, 0, 255, 147, 0, 0, 255, 151, 0, 0, 255, 155, 0, 0, 255, 159, 0, 0, 255, 163, 0, 0, 255, 167, 0, 0, 255, 171, 0, 0, 255, 174, 0, 0, 255, 178, 0, 0, 255, 182, 0, 0, 255, 186, 0, 0, 255, 190, 0, 0, 255, 194, 0, 0, 255, 198, 0, 0, 255, 202, 0, 0, 255, 206, 0, 0, 255, 210, 0, 0, 255, 214, 0, 0, 255, 218, 0, 0, 255, 222, 0, 0, 255, 226, 0, 0, 255, 230, 0, 0, 255, 234, 0, 0, 255, 237, 0, 0, 255, 241, 0, 0, 255, 245, 0, 0, 255, 249, 0, 0, 255, 253, 0, 0, 255, 255, 2, 0, 255, 255, 6, 0, 255, 255, 10, 0, 255, 255, 14, 0, 255, 255, 18, 0, 255, 255, 22, 0, 255, 255, 26, 0, 255, 255, 30, 0, 255, 255, 34, 0, 255, 255, 38, 0, 255, 255, 41, 0, 255, 255, 45, 0, 255, 255, 49, 0, 255, 255, 53, 0, 255, 255, 57, 0, 255, 255, 61, 0, 255, 255, 65, 0, 255, 255, 69, 0, 255, 255, 73, 0, 255, 255, 77, 0, 255, 255, 81, 0, 255, 255, 85, 0, 255, 255, 89, 0, 255, 255, 93, 0, 255, 255, 97, 0, 255, 255, 101, 0, 255, 255, 105, 0, 255, 255, 108, 0, 255, 255, 112, 0, 255, 255, 116, 0, 255, 255, 120, 0, 255, 255, 124, 0, 255, 255, 128, 0, 255, 255, 132, 0, 255, 255, 136, 0, 255, 255, 140, 0, 255, 255, 144, 0, 255, 255, 148, 0, 255, 255, 152, 0, 255, 255, 156, 0, 255, 255, 160, 0, 255, 255, 164, 0, 255, 255, 168, 0, 255, 255, 171, 0, 255, 255, 175, 0, 255, 255, 179, 0, 255, 255, 183, 0, 255, 255, 187, 0, 255, 255, 191, 0, 255, 255, 195, 0, 255, 255, 199, 0, 255, 255, 203, 0, 255, 255, 207, 0, 255, 255, 211, 0, 255, 255, 215, 0, 255, 255, 219, 0, 255, 255, 223, 0, 255, 255, 227, 0, 255, 255, 230, 0, 255, 255, 234, 0, 255, 255, 238, 0, 255, 255, 242, 0, 255, 255, 246, 0, 255, 255, 250, 0, 255, 255, 254, 0, 255, 251, 255, 3, 255, 247, 255, 7, 255, 243, 255, 11, 255, 239, 255, 15, 255, 235, 255, 19, 255, 231, 255, 23, 255, 227, 255, 27, 255, 223, 255, 31, 255, 219, 255, 35, 255, 216, 255, 38, 255, 212, 255, 42, 255, 208, 255, 46, 255, 204, 255, 50, 255, 200, 255, 54, 255, 196, 255, 58, 255, 192, 255, 62, 255, 188, 255, 66, 255, 184, 255, 70, 255, 180, 255, 74, 255, 176, 255, 78, 255, 172, 255, 82, 255, 168, 255, 86, 255, 164, 255, 90, 255, 160, 255, 94, 255, 156, 255, 98, 255, 153, 255, 101, 255, 149, 255, 105, 255, 145, 255, 109, 255, 141, 255, 113, 255, 137, 255, 117, 255, 133, 255, 121, 255, 129, 255, 125, 255, 125, 255, 129, 255, 121, 255, 133, 255, 117, 255, 137, 255, 113, 255, 141, 255, 109, 255, 145, 255, 105, 255, 149, 255, 101, 255, 153, 255, 97, 255, 157, 255, 93, 255, 161, 255, 90, 255, 164, 255, 86, 255, 168, 255, 82, 255, 172, 255, 78, 255, 176, 255, 74, 255, 180, 255, 70, 255, 184, 255, 66, 255, 188, 255, 62, 255, 192, 255, 58, 255, 196, 255, 54, 255, 200, 255, 50, 255, 204, 255, 46, 255, 208, 255, 42, 255, 212, 255, 38, 255, 216, 255, 34, 255, 220, 255, 30, 255, 224, 255, 27, 255, 227, 255, 23, 255, 231, 255, 19, 255, 235, 255, 15, 255, 239, 255, 11, 255, 243, 255, 7, 255, 247, 255, 3, 255, 251, 255, 0, 254, 255, 255, 0, 250, 255, 255, 0, 246, 255, 255, 0, 242, 255, 255, 0, 238, 255, 255, 0, 234, 255, 255, 0, 230, 255, 255, 0, 226, 255, 255, 0, 222, 255, 255, 0, 219, 255, 255, 0, 215, 255, 255, 0, 211, 255, 255, 0, 207, 255, 255, 0, 203, 255, 255, 0, 199, 255, 255, 0, 195, 255, 255, 0, 191, 255, 255, 0, 187, 255, 255, 0, 183, 255, 255, 0, 179, 255, 255, 0, 175, 255, 255, 0, 171, 255, 255, 0, 167, 255, 255, 0, 163, 255, 255, 0, 159, 255, 255, 0, 156, 255, 255, 0, 152, 255, 255, 0, 148, 255, 255, 0, 144, 255, 255, 0, 140, 255, 255, 0, 136, 255, 255, 0, 132, 255, 255, 0, 128, 255, 255, 0, 124, 255, 255, 0, 120, 255, 255, 0, 116, 255, 255, 0, 112, 255, 255, 0, 108, 255, 255, 0, 104, 255, 255, 0, 100, 255, 255, 0, 96, 255, 255, 0, 93, 255, 255, 0, 89, 255, 255, 0, 85, 255, 255, 0, 81, 255, 255, 0, 77, 255, 255, 0, 73, 255, 255, 0, 69, 255, 255, 0, 65, 255, 255, 0, 61, 255, 255, 0, 57, 255, 255, 0, 53, 255, 255, 0, 49, 255, 255, 0, 45, 255, 255, 0, 41, 255, 255, 0, 37, 255, 255, 0, 33, 255, 255, 0, 30, 255, 255, 0, 26, 255, 255, 0, 22, 255, 255, 0, 18, 255, 255, 0, 14, 255, 255, 0, 10, 255, 255, 0, 6, 255, 255, 0, 2, 255, 255, 0, 0, 253, 255, 0, 0, 249, 255, 0, 0, 245, 255, 0, 0, 241, 255, 0, 0, 237, 255, 0, 0, 233, 255, 0, 0, 229, 255, 0, 0, 225, 255, 0, 0, 222, 255, 0, 0, 218, 255, 0, 0, 214, 255, 0, 0, 210, 255, 0, 0, 206, 255, 0, 0, 202, 255, 0, 0, 198, 255, 0, 0, 194, 255, 0, 0, 190, 255, 0, 0, 186, 255, 0, 0, 182, 255, 0, 0, 178, 255, 0, 0, 174, 255, 0, 0, 170, 255, 0, 0, 166, 255, 0, 0, 162, 255, 0, 0, 159, 255, 0, 0, 155, 255, 0, 0, 151, 255, 0, 0, 147, 255, 0, 0, 143, 255, 0, 0, 139, 255, 0, 0, 135, 255, 0, 0, 131, 255, 0, 0, 127, 255}; 00081 uint8_t dir_icon[256] = {255, 144, 148, 176, 176, 145, 112, 176, 144, 144, 144, 176, 255, 255, 255, 255, 255, 144, 252, 253, 176, 144, 148, 253, 253, 253, 252, 253, 144, 255, 255, 255, 255, 140, 252, 252, 252, 253, 148, 252, 252, 252, 252, 253, 145, 255, 255, 255, 255, 144, 252, 252, 252, 253, 148, 252, 252, 252, 252, 253, 140, 255, 255, 255, 255, 144, 252, 252, 252, 252, 144, 252, 252, 252, 252, 253, 144, 255, 255, 255, 255, 145, 253, 252, 252, 252, 180, 253, 252, 252, 252, 253, 112, 255, 255, 255, 255, 144, 253, 252, 252, 253, 144, 253, 252, 252, 252, 252, 252, 112, 255, 255, 255, 145, 252, 252, 252, 252, 144, 252, 252, 252, 252, 253, 252, 144, 255, 255, 255, 144, 252, 252, 252, 253, 144, 252, 252, 252, 253, 254, 254, 144, 255, 255, 255, 140, 253, 252, 252, 253, 176, 252, 253, 252, 254, 255, 255, 110, 255, 255, 255, 145, 252, 252, 252, 252, 148, 253, 252, 252, 253, 255, 255, 142, 255, 255, 255, 145, 253, 252, 252, 253, 148, 253, 252, 252, 253, 68, 36, 110, 255, 255, 255, 112, 252, 252, 252, 252, 148, 253, 252, 252, 253, 36, 36, 112, 255, 255, 255, 145, 253, 252, 252, 253, 144, 252, 252, 253, 254, 254, 254, 145, 255, 255, 255, 141, 140, 144, 252, 253, 144, 144, 144, 176, 108, 145, 145, 255, 255, 255, 255, 255, 255, 255, 176, 144, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255}; 00082 uint8_t file_icon[256] = {255, 255, 219, 219, 251, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 255, 255, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 223, 255, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 187, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 255, 255, 255, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 255, 255, 255, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 255, 255, 255, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 255, 255, 255, 146, 182, 146, 145, 150, 146, 114, 182, 146, 146, 146, 146, 146, 255}; 00083 uint8_t close_icon[256] = {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 105, 69, 100, 69, 68, 69, 36, 69, 68, 65, 68, 73, 251, 255, 255, 69, 210, 251, 251, 251, 255, 250, 251, 255, 251, 251, 251, 214, 68, 255, 255, 68, 251, 247, 251, 247, 247, 246, 250, 247, 247, 246, 246, 255, 37, 255, 255, 69, 250, 246, 146, 109, 105, 142, 178, 105, 106, 178, 246, 246, 69, 255, 255, 101, 250, 250, 105, 255, 255, 110, 109, 255, 255, 110, 250, 251, 65, 255, 255, 68, 250, 246, 173, 106, 255, 255, 255, 255, 142, 141, 246, 247, 100, 255, 255, 68, 250, 246, 242, 178, 106, 255, 255, 105, 173, 246, 242, 247, 68, 255, 255, 64, 246, 205, 173, 142, 105, 255, 223, 105, 141, 173, 201, 246, 68, 255, 255, 64, 242, 205, 173, 106, 251, 255, 223, 223, 106, 173, 205, 246, 68, 255, 255, 68, 245, 174, 105, 255, 255, 110, 109, 255, 255, 105, 205, 242, 64, 255, 255, 68, 246, 209, 137, 110, 109, 142, 141, 105, 110, 173, 209, 242, 64, 255, 255, 68, 250, 242, 210, 209, 210, 242, 242, 242, 242, 241, 238, 246, 68, 255, 255, 101, 210, 246, 246, 247, 246, 246, 246, 246, 247, 246, 246, 210, 69, 255, 255, 251, 68, 68, 68, 65, 65, 64, 68, 96, 64, 68, 69, 105, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; 00084 uint16_t bitmap_height = 320, border_x = 30, depth = 201, buffer[201] = {0}, shift = 0, scroll_distance_val = 0, scroll_distance_size = 1000, slider_val = 0; 00085 uint16_t dac_value[201] = {489, 498, 507, 516, 525, 534, 544, 553, 562, 571, 580, 589, 598, 607, 616, 625, 633, 642, 651, 660, 669, 678, 686, 695, 704, 713, 722, 731, 740, 748, 757, 766, 775, 784, 793, 802, 810, 819, 828, 837, 846, 855, 864, 872, 881, 890, 899, 908, 917, 925, 934, 943, 952, 961, 969, 978, 987, 996, 1005, 1013, 1022, 1031, 1040, 1048, 1057, 1066, 1075, 1084, 1092, 1101, 1110, 1119, 1128, 1136, 1145, 1154, 1163, 1172, 1180, 1189, 1198, 1207, 1216, 1224, 1233, 1242, 1251, 1259, 1268, 1277, 1286, 1295, 1303, 1312, 1321, 1330, 1338, 1347, 1356, 1365, 1374, 1382, 1391, 1400, 1409, 1417, 1426, 1435, 1444, 1453, 1461, 1470, 1479, 1488, 1496, 1505, 1514, 1523, 1531, 1540, 1549, 1558, 1566, 1575, 1584, 1593, 1601, 1610, 1619, 1628, 1636, 1645, 1654, 1663, 1671, 1680, 1689, 1698, 1706, 1715, 1724, 1733, 1741, 1750, 1759, 1768, 1776, 1785, 1794, 1803, 1811, 1820, 1828, 1837, 1845, 1854, 1862, 1871, 1879, 1888, 1896, 1905, 1913, 1922, 1930, 1939, 1947, 1956, 1964, 1973, 1981, 1990, 1998, 2007, 2015, 2024, 2032, 2041, 2049, 2058, 2066, 2075, 2083, 2092, 2101, 2109, 2118, 2127, 2136, 2145, 2154, 2163, 2172, 2181, 2190, 2199, 2208, 2217, 2226, 2235, 2243}; 00086 uint16_t matched_load[201] = {2218, 2233, 2280, 2297, 2305, 2300, 2284, 2264, 2251, 2255, 2264, 2255, 2263, 2260, 2252, 2216, 2231, 2229, 2219, 2213, 2205, 2197, 2188, 2180, 2181, 2173, 2175, 2216, 2169, 2137, 2147, 2159, 2161, 2163, 2187, 2200, 2195, 2185, 2205, 2208, 2197, 2212, 2236, 2255, 2256, 2271, 2269, 2257, 2255, 2260, 2257, 2251, 2257, 2265, 2243, 2235, 2260, 2261, 2257, 2284, 2297, 2297, 2305, 2335, 2333, 2335, 2351, 2351, 2349, 2330, 2340, 2337, 2333, 2341, 2353, 2357, 2352, 2351, 2347, 2333, 2344, 2327, 2325, 2312, 2323, 2310, 2300, 2309, 2295, 2291, 2271, 2270, 2265, 2255, 2268, 2248, 2244, 2229, 2232, 2227, 2227, 2212, 2229, 2231, 2229, 2229, 2240, 2244, 2222, 2239, 2239, 2244, 2244, 2251, 2236, 2245, 2238, 2247, 2239, 2233, 2236, 2235, 2233, 2223, 2224, 2238, 2220, 2210, 2232, 2224, 2212, 2225, 2216, 2209, 2202, 2209, 2201, 2189, 2199, 2191, 2190, 2172, 2196, 2189, 2174, 2187, 2183, 2185, 2179, 2209, 2183, 2177, 2169, 2181, 2172, 2159, 2168, 2166, 2172, 2152, 2159, 2153, 2144, 2145, 2157, 2139, 2134, 2139, 2152, 2146, 2132, 2149, 2133, 2143, 2131, 2164, 2156, 2159, 2147, 2164, 2168, 2164, 2159, 2167, 2180, 2167, 2173, 2196, 2190, 2193, 2200, 2197, 2189, 2188, 2197, 2189, 2189, 2195, 2199, 2206, 2197}; 00087 uint32_t testIndex = 0, addr = 0, dloffset1 = 0, dloffset2 = 0, fftSize = 512, ifftFlag = 1, doBitReverse = 1, inx = 60; 00088 char keyPressed = 0, batt[6], eps_str[10], curr_time[20]; 00089 float blackman_win[201] = {0, 0.00008886, 0.0003558, 0.000802, 0.001429, 0.00224, 0.003238, 0.004428, 0.005813, 0.007399, 0.009193, 0.0112, 0.01343, 0.01589, 0.01858, 0.02152, 0.02471, 0.02817, 0.0319, 0.03591, 0.04021, 0.04482, 0.04973, 0.05497, 0.06054, 0.06645, 0.0727, 0.07932, 0.0863, 0.09365, 0.1014, 0.1095, 0.118, 0.1269, 0.1363, 0.146, 0.1561, 0.1667, 0.1776, 0.189, 0.2008, 0.213, 0.2256, 0.2385, 0.2519, 0.2657, 0.2798, 0.2944, 0.3092, 0.3245, 0.34, 0.3559, 0.372, 0.3885, 0.4052, 0.4221, 0.4393, 0.4567, 0.4742, 0.4919, 0.5098, 0.5277, 0.5457, 0.5638, 0.5819, 0.6, 0.618, 0.636, 0.6539, 0.6716, 0.6892, 0.7066, 0.7237, 0.7406, 0.7573, 0.7736, 0.7895, 0.8051, 0.8202, 0.835, 0.8492, 0.863, 0.8762, 0.8889, 0.901, 0.9125, 0.9234, 0.9336, 0.9432, 0.9521, 0.9602, 0.9677, 0.9744, 0.9803, 0.9855, 0.9899, 0.9935, 0.9964, 0.9984, 0.9996, 1, 0.9996, 0.9984, 0.9964, 0.9935, 0.9899, 0.9855, 0.9803, 0.9744, 0.9677, 0.9602, 0.9521, 0.9432, 0.9336, 0.9234, 0.9125, 0.901, 0.8889, 0.8762, 0.863, 0.8492, 0.835, 0.8202, 0.8051, 0.7895, 0.7736, 0.7573, 0.7406, 0.7237, 0.7066, 0.6892, 0.6716, 0.6539, 0.636, 0.618, 0.6, 0.5819, 0.5638, 0.5457, 0.5277, 0.5098, 0.4919, 0.4742, 0.4567, 0.4393, 0.4221, 0.4052, 0.3885, 0.372, 0.3559, 0.34, 0.3245, 0.3092, 0.2944, 0.2798, 0.2657, 0.2519, 0.2385, 0.2256, 0.213, 0.2008, 0.189, 0.1776, 0.1667, 0.1561, 0.146, 0.1363, 0.1269, 0.118, 0.1095, 0.1014, 0.09365, 0.0863, 0.07932, 0.0727, 0.06645, 0.06054, 0.05497, 0.04973, 0.04482, 0.04021, 0.03591, 0.0319, 0.02817, 0.02471, 0.02152, 0.01858, 0.01589, 0.01343, 0.0112, 0.009193, 0.007399, 0.005813, 0.004428, 0.003238, 0.00224, 0.001429, 0.000802, 0.0003558, 0.00008886, 0}; 00090 float detector[201] = {24.2753, 24.0337, 23.9496, 24.1734, 24.4779, 24.386, 24.1269, 23.8651, 23.7331, 23.9027, 24.1362, 24.4595, 24.896, 25.2451, 25.5632, 25.9206, 26.2048, 26.435, 26.6127, 26.7808, 26.7892, 26.5028, 26.2219, 26.3159, 26.35, 26.2305, 25.9379, 25.5456, 25.1114, 24.905, 24.6969, 24.6696, 24.7514, 24.8057, 24.887, 24.986, 25.1382, 25.3339, 25.6421, 25.9379, 26.1533, 26.452, 26.5874, 26.6296, 26.5705, 26.4265, 26.1619, 25.8946, 25.5192, 25.1472, 24.6605, 24.1827, 24.0057, 23.9402, 23.987, 24.1734, 24.3399, 24.432, 24.5053, 24.5145, 24.4595, 24.4136, 24.3584, 24.3584, 24.4412, 24.5876, 24.7786, 24.986, 25.0846, 25.0936, 24.9411, 24.6787, 24.3584, 24.0804, 23.9214, 23.7992, 23.7236, 23.6573, 23.5718, 23.4189, 23.2361, 23.0714, 22.9054, 22.817, 22.7777, 22.8072, 22.8564, 22.9739, 23.1005, 23.1975, 23.3325, 23.4381, 23.5622, 23.6478, 23.7236, 23.7803, 23.8086, 23.8651, 23.8651, 23.8745, 23.8463, 23.7803, 23.7141, 23.5718, 23.3902, 23.2458, 23.1393, 23.0227, 22.8858, 22.7283, 22.5897, 22.4402, 22.2695, 22.0569, 21.8627, 21.6253, 21.4377, 21.2167, 21.0681, 20.8647, 20.7352, 20.6485, 20.5723, 20.5395, 20.5067, 20.4629, 20.419, 20.3419, 20.2756, 20.209, 20.1423, 20.0306, 19.907, 19.8392, 19.7485, 19.6916, 19.646, 19.6345, 19.6116, 19.6116, 19.6002, 19.6231, 19.6345, 19.6802, 19.7144, 19.7599, 19.8505, 19.8957, 19.9969, 20.0753, 20.1757, 20.2977, 20.4848, 20.6593, 20.8324, 21.0041, 21.1319, 21.2801, 21.4377, 21.6978, 21.6045, 21.5421, 21.5213, 21.5421, 21.5629, 21.6564, 21.7598, 21.8627, 21.9447, 21.9753, 21.9447, 21.8627, 21.7392, 21.5941, 21.4272, 21.2484, 21.1107, 20.897, 20.7352, 20.5395, 20.408, 20.2423, 20.0977, 19.8844, 19.6916, 19.5658, 19.393, 19.3234, 19.2653, 19.3467, 19.3814, 19.4854, 19.6116, 19.7485, 19.8618, 19.9632, 20.0194, 20.0642, 20.0977, 20.12, 20.0753}; 00091 float gauss[11] = {0.00876415, 0.02699548, 0.06475879, 0.12098536, 0.17603266, 0.19947114, 0.17603266, 0.12098536, 0.06475879, 0.02699548, 0.00876415}; 00092 float sig_interp[401] = {0}, maxValue_concrete = 52, maxValue = 0, testInput[TEST_LENGTH_SAMPLES] = {0}, testOutput[TEST_LENGTH_SAMPLES/2]; 00093 float xs = 30/2/(3.5-1)/(fftSize-1)*(201-1); 00094 struct tm date, *tminfo; 00095 time_t seconds, temp_seconds; 00096 00097 void buttons(void) 00098 { 00099 TFT.FgColor(0xA0A0A0); 00100 TFT.DL(TAG(KEY_START)); 00101 TFT.Button(0.77*screen_width, 0.22*screen_heigth, 0.15*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "Start"); 00102 TFT.DL(TAG(KEY_STOP)); 00103 TFT.Button(0.77*screen_width, 0.38*screen_heigth, 0.15*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "Stop"); 00104 TFT.DL(TAG(KEY_UP)); 00105 TFT.Button(0.81*screen_width, 0.55*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "^"); 00106 TFT.DL(TAG(KEY_DOWN)); 00107 TFT.Button(0.81*screen_width, 0.85*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "v"); 00108 TFT.DL(TAG(KEY_LEFT)); 00109 TFT.Button(0.72*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "<"); 00110 TFT.DL(TAG(KEY_RIGHT)); 00111 TFT.Button(0.9*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, ">"); 00112 TFT.DL(TAG(KEY_CLOSE)); 00113 //TFT.Button(0.9*screen_width, 0.05*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "X"); 00114 TFT.DL(BITMAP_SOURCE(CLOSE_ICON_ADDR)); 00115 TFT.DL(BITMAP_LAYOUT(PALETTED, 16, 16)); 00116 TFT.DL(BITMAP_SIZE(BILINEAR, BORDER, BORDER, 32, 32)); 00117 TFT.DL(BEGIN(BITMAPS)); 00118 TFT.DL(SAVE_CONTEXT()); 00119 TFT.LoadIdentity(); 00120 TFT.Scale((int)(2*65536), (int)(2*65536)); 00121 TFT.SetMatrix(); 00122 TFT.DL(VERTEX2F((int)(0.95*screen_width*16), (int)(0.02*screen_heigth*16))); 00123 //TFT.Track(0.71*screen_width, 0.2*screen_heigth, 10, 200, 34); 00124 //TFT.DL(TAG(34)); 00125 //TFT.Slider(0.71*screen_width, 0.2*screen_heigth, 10, 200, 0, slider_val, 201); 00126 TFT.DL(END()); 00127 TFT.DL(RESTORE_CONTEXT()); 00128 } 00129 00130 void get_charge(void) 00131 { 00132 uint16_t batt_value = floor(3.3*in1.read_u16()/4095); 00133 sprintf(batt, "%d.%d V", batt_value/10, batt_value%10); 00134 } 00135 00136 char Read_Keys() 00137 { 00138 keyPressed = TFT.Rd8(REG_TOUCH_TAG); 00139 if(keyPressed) 00140 while(TFT.Rd8(REG_TOUCH_TAG)); 00141 return keyPressed; 00142 } 00143 00144 void start_screen() 00145 { 00146 TFT.DL(CMD_DLSTART); 00147 TFT.DL(CLEAR_COLOR_RGB(255, 255, 255)); 00148 TFT.DL(CLEAR(1, 1, 1)); 00149 TFT.FgColor(0xFFFFFF); 00150 TFT.DL(COLOR_RGB(0, 0, 0)); 00151 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00152 seconds = time(NULL); 00153 temp_seconds = seconds; 00154 //strftime(curr_time, 19, "%Y%m%d%H%M%S\n", localtime(&seconds)); 00155 strftime(curr_time, 19, "%I:%M:%S %d.%m.%Y\n", localtime(&seconds)); 00156 TFT.Text(0.5*screen_width, 0.3*screen_heigth, 30, OPT_CENTERX, curr_time); 00157 TFT.FgColor(0xA0A0A0); 00158 TFT.DL(COLOR_RGB(255, 255, 255)); 00159 TFT.DL(TAG(KEY_SCAN)); 00160 TFT.Button(0.2*screen_width, 0.7*screen_heigth, 0.12*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "Scan"); 00161 TFT.DL(TAG(KEY_FILES)); 00162 TFT.Button(0.45*screen_width, 0.7*screen_heigth, 0.12*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "Files"); 00163 TFT.DL(TAG(KEY_TIME)); 00164 TFT.Button(0.7*screen_width, 0.7*screen_heigth, 0.12*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "Time"); 00165 TFT.DL(DISPLAY()); 00166 TFT.Swap(); 00167 TFT.Flush_Co_Buffer(); 00168 TFT.WaitCmdfifo_empty(); 00169 } 00170 00171 void time_screen() 00172 { 00173 int16_t cursor_pos, cursor_width; 00174 00175 TFT.DL(CMD_DLSTART); 00176 TFT.DL(CLEAR_COLOR_RGB(255, 255, 255)); 00177 TFT.DL(CLEAR(1, 1, 1)); 00178 //TFT.DL(COLOR_RGB(0,0,0)); 00179 cursor_width = 0.07*screen_width; 00180 switch(time_position) 00181 { 00182 case 0: 00183 { 00184 cursor_pos = 0.215*screen_width; 00185 break; 00186 } 00187 case 1: 00188 { 00189 cursor_pos = 0.3*screen_width; 00190 break; 00191 } 00192 case 2: 00193 { 00194 cursor_pos = 0.39*screen_width; 00195 break; 00196 } 00197 case 3: 00198 { 00199 cursor_pos = 0.475*screen_width; 00200 break; 00201 } 00202 case 4: 00203 { 00204 cursor_pos = 0.56*screen_width; 00205 break; 00206 } 00207 case 5: 00208 { 00209 cursor_pos = 0.65*screen_width; 00210 cursor_width = 0.145*screen_width; 00211 break; 00212 } 00213 } 00214 TFT.FgColor(0xE0E0E0); 00215 TFT.Button(cursor_pos, 0.32*screen_heigth, cursor_width, 0.09*screen_heigth, 28, OPT_FLAT, ""); 00216 TFT.DL(COLOR_RGB(255,255,255)); 00217 TFT.FgColor(0xA0A0A0); 00218 TFT.DL(TAG(KEY_UP)); 00219 TFT.Button(0.81*screen_width, 0.55*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "^"); 00220 TFT.DL(TAG(KEY_DOWN)); 00221 TFT.Button(0.81*screen_width, 0.85*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "v"); 00222 TFT.DL(TAG(KEY_LEFT)); 00223 TFT.Button(0.72*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "<"); 00224 TFT.DL(TAG(KEY_RIGHT)); 00225 TFT.Button(0.9*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, ">"); 00226 TFT.DL(TAG(KEY_OK)); 00227 TFT.Button(0.81*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "OK"); 00228 // TFT.DL(TAG(KEY_CLOSE)); 00229 // TFT.Button(0.9*screen_width, 0.05*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "X"); 00230 // TFT.DL(TAG(0)); 00231 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00232 strftime(curr_time, 19, "%I:%M:%S %d.%m.%Y\n", localtime(&seconds)); 00233 TFT.DL(COLOR_RGB(0,0,0)); 00234 TFT.Text(0.5*screen_width, 0.3*screen_heigth, 30, OPT_CENTERX, curr_time); 00235 00236 TFT.DL(TAG(KEY_CLOSE)); 00237 TFT.DL(BITMAP_SOURCE(CLOSE_ICON_ADDR)); 00238 TFT.DL(BITMAP_LAYOUT(PALETTED, 16, 16)); 00239 TFT.DL(BITMAP_SIZE(BILINEAR, BORDER, BORDER, 32, 32)); 00240 TFT.DL(BEGIN(BITMAPS)); 00241 TFT.LoadIdentity(); 00242 TFT.Scale((int)(2*65536), (int)(2*65536)); 00243 TFT.SetMatrix(); 00244 TFT.DL(VERTEX2F((int)(0.95*screen_width*16), (int)(0.02*screen_heigth*16))); 00245 TFT.DL(END()); 00246 TFT.DL(TAG(0)); 00247 TFT.DL(DISPLAY()); 00248 TFT.Swap(); 00249 TFT.Flush_Co_Buffer(); 00250 TFT.WaitCmdfifo_empty(); 00251 } 00252 00253 void eps_dlg() 00254 { 00255 TFT.DL(CMD_DLSTART); 00256 TFT.DL(CLEAR_COLOR_RGB(255,255,255)); 00257 TFT.DL(CLEAR(1,1,1)); 00258 TFT.FgColor(0xA0A0A0); 00259 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00260 TFT.DL(TAG(MATERIAL_AIR)); 00261 TFT.Button(0.3*screen_width, 0.05*screen_heigth, 0.2*screen_width, 0.1*screen_heigth, 28, OPT_FLAT, "Air"); 00262 TFT.DL(TAG(MATERIAL_BRICK)); 00263 TFT.Button(0.3*screen_width, 0.25*screen_heigth, 0.2*screen_width, 0.1*screen_heigth, 28, OPT_FLAT, "Brick"); 00264 TFT.DL(TAG(MATERIAL_CONCRETE)); 00265 TFT.Button(0.3*screen_width, 0.45*screen_heigth, 0.2*screen_width, 0.1*screen_heigth, 28, OPT_FLAT, "Concrete"); 00266 TFT.DL(TAG(MATERIAL_GYPSUM)); 00267 TFT.Button(0.3*screen_width, 0.65*screen_heigth, 0.2*screen_width, 0.1*screen_heigth, 28, OPT_FLAT, "Gypsum"); 00268 TFT.DL(TAG(MATERIAL_OTHER)); 00269 TFT.Button(0.3*screen_width, 0.85*screen_heigth, 0.2*screen_width, 0.1*screen_heigth, 28, OPT_FLAT, "Other..."); 00270 TFT.DL(TAG(KEY_CLOSE)); 00271 TFT.Button(0.9*screen_width, 0.05*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "X"); 00272 TFT.DL(TAG(0)); 00273 TFT.DL(DISPLAY()); 00274 TFT.Swap(); 00275 TFT.Flush_Co_Buffer(); 00276 TFT.WaitCmdfifo_empty(); 00277 } 00278 00279 void other_dlg() 00280 { 00281 TFT.DL(CMD_DLSTART); 00282 TFT.DL(CLEAR_COLOR_RGB(255,255,255)); 00283 TFT.DL(CLEAR(1,1,1)); 00284 TFT.DL(COLOR_RGB(0,0,0)); 00285 //TFT.Romfont(2, 33); 00286 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00287 TFT.DL(COLOR_RGB(200,200,200)); 00288 00289 sprintf(eps_str, "%d", eps/10); 00290 TFT.Text(border_x-20, 0.4*screen_heigth, 2, 0, "Epsilon = "); 00291 if(eps_position==0) 00292 TFT.DL(COLOR_RGB(0,0,0)); 00293 TFT.Text(0.5*screen_width, 0.4*screen_heigth, 2, 0, eps_str); 00294 TFT.DL(COLOR_RGB(200,200,200)); 00295 TFT.Text(0.55*screen_width, 0.4*screen_heigth, 2, 0, "."); 00296 sprintf(eps_str, "%d", eps%10); 00297 if(eps_position==1) 00298 TFT.DL(COLOR_RGB(0,0,0)); 00299 TFT.Text(0.58*screen_width, 0.4*screen_heigth, 2, 0, eps_str); 00300 free(eps_str); 00301 00302 TFT.DL(COLOR_RGB(255,255,255)); 00303 TFT.FgColor(0xA0A0A0); 00304 TFT.DL(TAG(KEY_UP)); 00305 TFT.Button(0.81*screen_width, 0.55*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, 0, "^"); 00306 TFT.DL(TAG(KEY_DOWN)); 00307 TFT.Button(0.81*screen_width, 0.85*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, 0, "v"); 00308 TFT.DL(TAG(KEY_LEFT)); 00309 TFT.Button(0.72*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, 0, "<"); 00310 TFT.DL(TAG(KEY_RIGHT)); 00311 TFT.Button(0.9*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, 0, ">"); 00312 TFT.DL(TAG(KEY_OK)); 00313 TFT.Button(0.81*screen_width, 0.7*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 28, 0, "OK"); 00314 TFT.DL(TAG(KEY_CLOSE)); 00315 TFT.Button(0.9*screen_width, 0.05*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, OPT_FLAT, "X"); 00316 TFT.DL(TAG(0)); 00317 TFT.DL(DISPLAY()); 00318 TFT.Swap(); 00319 TFT.Flush_Co_Buffer(); 00320 TFT.WaitCmdfifo_empty(); 00321 } 00322 00323 void save_dlg() 00324 { 00325 TFT.DL(CMD_DLSTART); 00326 TFT.DL(CLEAR_COLOR_RGB(255,255,255)); 00327 TFT.DL(CLEAR(1,1,1)); 00328 TFT.FgColor(0xA0A0A0); 00329 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00330 TFT.DL(TAG(FILE_SAVE)); 00331 TFT.Button(0.2*screen_width, 0.6*screen_heigth, 0.2*screen_width, 0.12*screen_heigth, 28, 0, "Save"); 00332 TFT.DL(TAG(FILE_DELETE)); 00333 TFT.Button(0.6*screen_width, 0.6*screen_heigth, 0.2*screen_width, 0.12*screen_heigth, 28, 0, "Delete"); 00334 TFT.DL(COLOR_RGB(0, 0, 0)); 00335 //-->>TFT.Text(0.5*screen_width, 0.3*screen_heigth, 30, OPT_CENTERX, (char *)filename); 00336 TFT.DL(DISPLAY()); 00337 TFT.Swap(); 00338 TFT.Flush_Co_Buffer(); 00339 TFT.WaitCmdfifo_empty(); 00340 } 00341 00342 void scan_mode_dlg() 00343 { 00344 TFT.DL(CMD_DLSTART); 00345 TFT.DL(CLEAR_COLOR_RGB(255,255,255)); 00346 TFT.DL(CLEAR(1,1,1)); 00347 TFT.FgColor(0xA0A0A0); 00348 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00349 TFT.DL(TAG(KEY_ASCAN)); 00350 TFT.Button(0.2*screen_width, 0.5*screen_heigth, 0.2*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "A-SCAN"); 00351 TFT.DL(TAG(KEY_BSCAN)); 00352 TFT.Button(0.6*screen_width, 0.5*screen_heigth, 0.2*screen_width, 0.12*screen_heigth, 28, OPT_FLAT, "B-SCAN"); 00353 TFT.DL(TAG(KEY_CLOSE)); 00354 TFT.Button(0.9*screen_width, 0.05*screen_heigth, 0.07*screen_width, 0.12*screen_heigth, 30, OPT_FLAT, "X"); 00355 TFT.DL(TAG(0)); 00356 TFT.DL(DISPLAY()); 00357 TFT.Swap(); 00358 TFT.Flush_Co_Buffer(); 00359 TFT.WaitCmdfifo_empty(); 00360 } 00361 00362 /* 00363 void disp_encoder(uint8_t count) 00364 { 00365 TFT.DLstart(); 00366 TFT.DL(CLEAR_COLOR_RGB(0,0,0)); 00367 TFT.DL(CLEAR(1,1,1)); 00368 TFT.Text(200, 10, 31, OPT_RIGHTX, "Encoder:"); 00369 TFT.Number(270, 10, 31, OPT_RIGHTX, enc.getPosition()); 00370 TFT.DL(TAG(2)); 00371 TFT.Button(360, 0, 120, 36, 27, 0, "Start"); 00372 TFT.DL(TAG(3)); 00373 TFT.Button(360, 38, 120, 36, 27, 0, "Exit"); 00374 TFT.DL(END()); 00375 TFT.DL(DISPLAY()); 00376 TFT.Swap(); 00377 00378 uint8_t ReadWord = TFT.Rd8(REG_TOUCH_TAG); 00379 if (ReadWord == KEY_CLOSE) 00380 { 00381 status = STATUS_MAIN; 00382 } 00383 } 00384 00385 void disp_adc(uint16_t data_adc) 00386 { 00387 TFT.DLstart(); 00388 TFT.DL(CLEAR_COLOR_RGB(0,0,0)); 00389 TFT.DL(CLEAR(1,1,1)); 00390 TFT.Text(220, 200, 31, OPT_RIGHTX, "ADC Value:"); 00391 TFT.Number(315, 200, 31, OPT_RIGHTX, (uint32_t)data_adc); 00392 TFT.DL(TAG(2)); 00393 TFT.Button(360, 0, 120, 36, 27, 0, "Start"); 00394 TFT.DL(TAG(3)); 00395 TFT.Button(360, 38, 120, 36, 27, 0, "Exit"); 00396 TFT.DL(END()); 00397 TFT.DL(DISPLAY()); 00398 TFT.Swap(); 00399 ReadWord = TFT.Rd8(REG_TOUCH_TAG); 00400 if (ReadWord == KEY_CLOSE) 00401 { 00402 status = STATUS_MAIN; 00403 } 00404 } 00405 00406 void disp_freq(uint64_t freq) 00407 { 00408 TFT.DLstart(); 00409 TFT.DL(CLEAR_COLOR_RGB(0,0,0)); 00410 TFT.DL(CLEAR(1,1,1)); 00411 TFT.Text(220, 100, 31, OPT_RIGHTX, "Frequency:"); 00412 TFT.Number(315, 100, 31, OPT_RIGHTX, (uint32_t)(freq/1000000)); 00413 TFT.Text(325, 100, 31, OPT_RIGHTX, "."); 00414 TFT.Number(350, 100, 31, OPT_RIGHTX, (uint32_t)(freq/100000)%10); 00415 TFT.DL(TAG(2)); 00416 TFT.Button(360, 0, 120, 36, 27, 0, "Start"); 00417 TFT.DL(TAG(3)); 00418 TFT.Button(360, 38, 120, 36, 27, 0, "Exit"); 00419 TFT.DL(END()); 00420 TFT.DL(DISPLAY()); 00421 TFT.Swap(); 00422 ReadWord = TFT.Rd8(REG_TOUCH_TAG); 00423 if (ReadWord == KEY_CLOSE) 00424 { 00425 status = STATUS_MAIN; 00426 } 00427 } 00428 */ 00429 void disp_image(void) 00430 { 00431 uint8_t i = 0, tick = 0; 00432 uint32_t j = 0; 00433 00434 TFT.DL(CMD_DLSTART); 00435 TFT.DL(CLEAR_COLOR_RGB(255,255,255)); 00436 TFT.DL(CLEAR(1,1,1)); 00437 buttons(); 00438 TFT.DL(COLOR_RGB(0, 0, 0)); 00439 TFT.Text(0.8*screen_width, 0.02*screen_heigth, 28, 0, batt); 00440 TFT.DL(BITMAP_LAYOUT(PALETTED, 201, bitmap_height)); 00441 TFT.DL(BITMAP_SIZE(BILINEAR, BORDER, BORDER, bitmap_height, 2*201)); 00442 00443 float* dist = (float*)calloc(depth, sizeof(float)); 00444 for(i=0; i<depth; i++) 00445 { 00446 dist[i] = i*xs/sqrt((float)(eps/10)); 00447 } 00448 00449 if(dist[depth-1]>0) 00450 { 00451 for(i=0; i<=dist[depth-1]/50; i++) 00452 { 00453 TFT.Number(0.05*screen_width, 2+200*i/(dist[depth-1]/50), 21, OPT_RIGHTX, (uint32_t)(50*i)); 00454 } 00455 } 00456 if(dist[depth-1]>25&&dist[depth-1]<=50) 00457 { 00458 for(i=0; i<=dist[depth-1]/20; i++) 00459 { 00460 TFT.Number(0.05*screen_width, 2+200*i/(dist[depth-1]/20), 21, OPT_RIGHTX, (uint32_t)(20*i)); 00461 } 00462 } 00463 if(dist[depth-1]>10&&dist[depth-1]<=25) 00464 { 00465 for(i=0; i<=dist[depth-1]/10; i++) 00466 { 00467 TFT.Number(0.05*screen_width, 2+200*i/(dist[depth-1]/10), 21, OPT_RIGHTX, (uint32_t)(10*i)); 00468 } 00469 } 00470 if(dist[depth-1]>1&&dist[depth-1]<=10) 00471 { 00472 for(i=0; i<=dist[depth-1]/5; i++) 00473 { 00474 TFT.Number(0.05*screen_width, 2+200*i/(dist[depth-1]/5), 21, OPT_RIGHTX, (uint32_t)(5*i)); 00475 } 00476 } 00477 free(dist); 00478 00479 if(xscale*steps>bitmap_height) 00480 { 00481 TFT.DL(BITMAP_SOURCE(RAM_G+201*((xscale*steps-bitmap_height)/xscale))); 00482 for(j=0; j<12+(steps%5==0); j++) 00483 { 00484 TFT.Number(border_x+xscale*(steps%5)+40*j, 0.88*screen_heigth, 22, OPT_RIGHTX, 5*(floor((float)(steps/5))-j)); 00485 } 00486 } 00487 else 00488 { 00489 TFT.DL(BITMAP_SOURCE(RAM_G)); 00490 for(j=0; j<=12; j++) 00491 { 00492 TFT.Number(border_x+bitmap_height-5*xscale*j, 0.88*screen_heigth, 22, OPT_RIGHTX, 5*j); 00493 } 00494 } 00495 00496 char* eps_str = (char*)calloc(8, sizeof(char)); 00497 sprintf(eps_str, "e = %d.%d", eps/10, eps%10); 00498 TFT.DL(COLOR_RGB(255, 255, 255)); 00499 TFT.DL(TAG(KEY_EPS)); 00500 TFT.Button(0.67*screen_width, 0.02*screen_heigth, 0.12*screen_width, 0.07*screen_heigth, 22, OPT_FLAT, eps_str); 00501 free(eps_str); 00502 00503 TFT.DL(BEGIN(BITMAPS)); 00504 TFT.DL(BLEND_FUNC(ONE, ZERO)); 00505 TFT.LoadIdentity(); 00506 TFT.Rotate(90*65536/360); 00507 TFT.Translate(65536*0, 65536*(-bitmap_height)); 00508 TFT.Scale(yscale*201*65536/depth, xscale*65536); 00509 TFT.SetMatrix(); 00510 00511 //Draw Alpha channel 00512 //TFT.DL(COLOR_MASK(0, 0, 0, 1)); 00513 //TFT.DL(PALETTE_SOURCE(PALETTE_ADDR+3)); 00514 //TFT.DL(VERTEX2II(border_x, border_y, 0, 0)); 00515 00516 //Draw Red channel 00517 //TFT.DL(BLEND_FUNC(DST_ALPHA, ONE_MINUS_DST_ALPHA)); 00518 //TFT.DL(COLOR_MASK(1, 0, 0, 0)); 00519 //TFT.DL(PALETTE_SOURCE(PALETTE_ADDR+2)); 00520 //TFT.DL(VERTEX2II(border_x, 10, 0, 0)); 00521 00522 //Draw Green channel 00523 //TFT.DL(COLOR_MASK(0, 1, 0, 0)); 00524 //TFT.DL(PALETTE_SOURCE(PALETTE_ADDR+1)); 00525 //TFT.DL(VERTEX2II(border_x, 10, 0, 0)); 00526 00527 //Draw Blue channel 00528 //TFT.DL(COLOR_MASK(0, 0, 1, 0)); 00529 //TFT.DL(PALETTE_SOURCE(PALETTE_ADDR)); 00530 //TFT.DL(VERTEX2II(border_x, 10, 0, 0)); 00531 TFT.DL(END()); 00532 00533 TFT.DL(DISPLAY()); 00534 TFT.DL(CMD_SWAP); 00535 //finish(); 00536 } 00537 00538 void line(uint8_t *data_in, int points)//, uint32_t color) 00539 { 00540 uint16_t i; 00541 TFT.DL(BEGIN(LINE_STRIP)); 00542 for(i=0; i<points; i++) 00543 { 00544 TFT.DL(VERTEX2II(i+30, 255-(uint32_t)(data_in[i]), 0, 0)); 00545 } 00546 TFT.DL(END()); 00547 } 00548 00549 void plot() 00550 { 00551 TFT.DLstart(); 00552 TFT.DL(POINT_SIZE(16*2)); 00553 TFT.DL(CLEAR_COLOR_RGB(0,0,0)); 00554 TFT.DL(CLEAR(1,1,1)); 00555 TFT.FgColor(0x404040); 00556 TFT.DL(TAG(3)); 00557 TFT.DL(COLOR_RGB(0xFF, 0x00, 0x00)); 00558 line(sig, 201); 00559 TFT.DL(COLOR_RGB(0x00, 0x00, 0xFF)); 00560 line(temp_value, 401); 00561 TFT.DL(DISPLAY()); 00562 TFT.Swap(); 00563 ReadWord = TFT.Rd8(REG_TOUCH_TAG); 00564 if(ReadWord == KEY_CLOSE) 00565 { 00566 status = STATUS_MAIN; 00567 } 00568 } 00569 00570 void sweep() 00571 { 00572 for (uint8_t j=0; j<201; j++) 00573 { 00574 out.write_u16(dac_value[j]); 00575 wait_us(100); 00576 buffer[j] = in0.read_u16(); 00577 } 00578 out.write_u16(dac_value[0]); 00579 wait_ms(10); 00580 } 00581 00582 void find_peaks(float *testOutput, uint8_t offset) 00583 { 00584 for(uint16_t i=offset+5; i<offset+201-5; i++) 00585 { 00586 if((testOutput[i]>testOutput[i-1])&(testOutput[i]>testOutput[i+1])) 00587 { 00588 for(uint16_t j=0;j<11;j++) 00589 temp_value[i+j-offset-5] = (testOutput[i+j-5]*gauss[j])/gauss[5]; 00590 // sig[i+j-offset-5] = (testOutput[i+j-5]*gauss[j])/gauss[5]; 00591 } 00592 } 00593 sig[0] = 0; 00594 } 00595 00596 float interp1(float x, uint8_t a[], int n) 00597 { 00598 int j; 00599 if(x<=0) return a[0]; 00600 if(x>=n-1) return a[n-1]; 00601 j = (int)(x); 00602 return a[j]+(x-j)*(a[j+1]-a[j]); 00603 } 00604 00605 // linear interpolate array a[] -> array b[] 00606 void interp1array(uint8_t a[], int n, float b[], int m) 00607 { 00608 float step; 00609 step = (float)((n-1)/(m-1)); 00610 for(int j=0; j<m; j++) 00611 { 00612 b[j] = interp1(j*step, a, n); 00613 } 00614 } 00615 00616 void get_data(void) 00617 { 00618 uint8_t i; 00619 sweep(); 00620 00621 for(i=0; i<201; i++) 00622 { 00623 testInput[2*i] = ((float)(buffer[i]-matched_load[i]))*blackman_win[i]/detector[i]; 00624 } 00625 00626 arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput, ifftFlag, doBitReverse); 00627 arm_cmplx_mag_f32(testInput, testOutput, fftSize); 00628 arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); 00629 00630 find_peaks(testOutput, offset); 00631 00632 for(i=0; i<201; i++) 00633 { 00634 if(temp_value[i]>maxValue_concrete) 00635 sig[i] = 255; 00636 else 00637 sig[i] = floor(255*temp_value[i]/maxValue); 00638 } 00639 00640 interp1array(sig, 201, sig_interp, 401); 00641 //TFT.Wr_STR(addr, sig, 201); 00642 } 00643 00644 void scroll_image(uint16_t shift, uint16_t depth) 00645 { 00646 uint8_t i = 0, j = 0, tick = 0; 00647 00648 TFT.DLstart(); 00649 //TFT.Clear(1, 1, 1); 00650 //TFT.DL(COLOR_RGB(255, 255, 255)); 00651 00652 TFT.Append(220000, dloffset1); 00653 00654 while(depth/(tick+1)>8) 00655 { 00656 tick++; 00657 } 00658 00659 for(i=0; i<=depth/tick; i++) 00660 { 00661 TFT.Number(22, 2+200*tick*i/depth, 16, OPT_RIGHTX, tick*i); 00662 } 00663 00664 TFT.DL(BITMAP_SOURCE(RAM_G+201*(shift-320))); 00665 00666 if(shift<=320) 00667 { 00668 for(j = 0; j < 7; j++) 00669 { 00670 TFT.Number(border_x+320-50*j, 215, 16, OPT_RIGHTX, 50*j); 00671 } 00672 } 00673 else 00674 { 00675 for(j = 1; j < 7+((shift-20)%50==0); j++) 00676 { 00677 TFT.Number(border_x+320-50*j+(shift-320)%50, 215, 16, OPT_RIGHTX, 50*(j+(shift-320)/50)); 00678 } 00679 } 00680 00681 TFT.Number(425, 130, 16, 0, steps); 00682 TFT.Number(425, 145, 16, 0, depth); 00683 TFT.DL(BITMAP_LAYOUT(PALETTED, 201, bitmap_height)); 00684 TFT.DL(BITMAP_SIZE(BILINEAR, BORDER, BORDER, bitmap_height, 201)); 00685 TFT.DL(BEGIN(BITMAPS)); 00686 TFT.LoadIdentity(); 00687 TFT.Rotate(90*65536/360); 00688 TFT.Translate(65536*0, 65536*-bitmap_height); 00689 TFT.Scale(201*65536/depth, 65536); 00690 TFT.SetMatrix(); 00691 TFT.DL(VERTEX2II(border_x, 10, 0, 0)); 00692 TFT.DL(END()); 00693 TFT.DL(DISPLAY()); 00694 TFT.Swap(); 00695 TFT.Flush_Co_Buffer(); 00696 TFT.WaitCmdfifo_empty(); 00697 } 00698 00699 void sound(uint8_t effect) 00700 { 00701 TFT.Wr8(REG_VOL_SOUND, 0xFF); 00702 TFT.Wr16(REG_SOUND, effect); 00703 TFT.Wr8(REG_PLAY, 1); 00704 while(TFT.Rd8(REG_PLAY)); 00705 TFT.Wr16(REG_SOUND, 0); 00706 TFT.Wr8(REG_PLAY, 1); 00707 } 00708 00709 void update_gui(void) 00710 { 00711 //uint8_t i = 0, tagval; 00712 //uint16_t n = 0; 00713 //uint32_t tracker = TFT.Rd32(REG_TRACKER); 00714 /* 00715 switch(tracker & 0xff) 00716 { 00717 case TRACK_DEPTH: 00718 { 00719 depth = 201-(tracker>>25); 00720 break; 00721 } 00722 case TRACK_DISTANCE: 00723 { 00724 scroll_distance_val = tracker>>23; 00725 break; 00726 } 00727 case TRACK_SLIDER: 00728 { 00729 slider_val = tracker>>16; 00730 break; 00731 } 00732 default: 00733 break; 00734 } 00735 */ 00736 get_charge(); 00737 switch (status) 00738 { 00739 case STATUS_MAIN: 00740 { 00741 start_screen(); 00742 switch(Read_Keys()) 00743 { 00744 case KEY_SCAN: 00745 { 00746 sound(CLICK); 00747 status = STATUS_BSCAN; 00748 break; 00749 /*scan_mode_dlg(); 00750 keyPressed = 0; 00751 while(!keyPressed) 00752 { 00753 keyPressed = TFT.Rd8(REG_TOUCH_TAG); 00754 } 00755 if(keyPressed == KEY_BSCAN) 00756 { 00757 sound(CLICK); 00758 TFT.MemZero(RAM_G, 201000); 00759 disp_image(); 00760 status = STATUS_BSCAN; 00761 break; 00762 } 00763 else 00764 { 00765 sound(CLICK); 00766 addr = 0; 00767 status = STATUS_ASCAN; 00768 break; 00769 }*/ 00770 } 00771 //case KEY_FILES: 00772 { 00773 /*sound(CLICK); 00774 fm_curPath = "/"; 00775 res = f_chdir(fm_curPath); 00776 res = scan_folders(fm_curPath); 00777 status = STATUS_FILES; 00778 break;*/ 00779 } 00780 case KEY_TIME: 00781 { 00782 sound(CLICK); 00783 time_position = 0; 00784 status = STATUS_TIME; 00785 break; 00786 } 00787 } 00788 break; 00789 } 00790 case STATUS_ASCAN: 00791 { 00792 switch(Read_Keys()) 00793 { 00794 case KEY_START: 00795 { 00796 sound(CLICK); 00797 /*addr+=201; 00798 get_data(); 00799 n = 0; 00800 00801 uint8_t* buff = (uint8_t*) malloc(1004); 00802 for(i=0; i<201; i++) 00803 { 00804 n += sprintf(&buff[n], "%4u ", buffer[i]); 00805 } 00806 00807 res = f_write(&fil_obj, buff, n-1, &len); 00808 res = f_write(&fil_obj, "\n", 1, &len); 00809 free(buff);*/ 00810 break; 00811 } 00812 case KEY_STOP: 00813 { 00814 sound(CLICK); 00815 /*addr = 0; 00816 res = f_close(&fil_obj); 00817 save_dlg(); 00818 ReadWord = 0; 00819 while(!keyPressed) 00820 { 00821 keyPressed = TFT.Rd8(REG_TOUCH_TAG); 00822 } 00823 if(ReadWord == FILE_DELETE) 00824 { 00825 res = f_unlink(filename); 00826 } 00827 else 00828 { 00829 sprintf(filename, "A20%02d%02d%02d_%02d%02d%02d.asn", date.tm_year, date.tm_mon, date.tm_mday, date.tm_hour, date.tm_min, date.tm_sec); 00830 res = f_open(&fil_obj, filename, FA_CREATE_ALWAYS|FA_WRITE); 00831 for(addr=0; addr<201*steps; addr+=201) 00832 { 00833 HOST_MEM_READ_STR(addr, sig, 201); 00834 f_write(&fil_obj, &sig, 201, &len); 00835 } 00836 f_close(&fil_obj); 00837 }*/ 00838 status = STATUS_ASCAN; 00839 break; 00840 } 00841 case KEY_CLOSE: 00842 { 00843 sound(CLICK); 00844 //res = f_close(&fil_obj); 00845 //res = f_unlink(filename); 00846 status = STATUS_MAIN; 00847 break; 00848 } 00849 default: 00850 { 00851 keyPressed = TFT.Rd8(REG_TOUCH_TAG); 00852 if(keyPressed == KEY_CLOSE) 00853 { 00854 status = STATUS_MAIN; 00855 } 00856 if(keyPressed == KEY_RIGHT) 00857 { 00858 sound(CLICK); 00859 inx-=3; 00860 if(inx<12) inx = 12; 00861 } 00862 if(keyPressed == KEY_LEFT) 00863 { 00864 sound(CLICK); 00865 inx+=3; 00866 if(inx>201) inx = 201; 00867 } 00868 if(keyPressed == KEY_UP) 00869 { 00870 } 00871 if(keyPressed == KEY_DOWN) 00872 { 00873 } 00874 get_data(); 00875 plot(); 00876 break; 00877 } 00878 } 00879 break; 00880 } 00881 case STATUS_BSCAN: 00882 { 00883 //steps = 1000-(scroll_distance_val); 00884 disp_image(); 00885 switch(Read_Keys()) 00886 { 00887 case KEY_START: 00888 { 00889 sound(CLICK); 00890 addr = 0; 00891 steps = 0; 00892 TFT.MemZero(RAM_G, 201000); 00893 disp_image(); 00894 //res = f_chdir("/.."); 00895 time_t t1 = time(NULL); 00896 //sprintf(dirname, "20%02d%02d%02d", date.tm_year, date.tm_mon, date.tm_mday); 00897 //res = f_mkdir(dirname); // Create new directory 00898 //sprintf(filename, "A20%02d%02d%02d_%02d%02d%02d.txt", date.tm_year, date.tm_mon, date.tm_mday, date.tm_hour, date.tm_min, date.tm_sec); 00899 //res = f_chdir(dirname); // Change current directory 00900 //res = f_open(&fil_obj, filename, FA_CREATE_ALWAYS|FA_WRITE); // Create new file 00901 status = STATUS_START; 00902 break; 00903 } 00904 case KEY_STOP: 00905 { 00906 sound(CLICK); 00907 step_done = 0; 00908 disp_image(); 00909 status = STATUS_BSCAN; 00910 break; 00911 } 00912 case KEY_LEFT: 00913 { 00914 if((xscale*steps<=920)&&(steps>0)) 00915 { 00916 sound(CLICK); 00917 steps+=10; 00918 disp_image(); 00919 } 00920 break; 00921 } 00922 case KEY_RIGHT: 00923 { 00924 if((steps<=1000)&&(xscale*steps>bitmap_height)) 00925 { 00926 sound(CLICK); 00927 steps-=10; 00928 disp_image(); 00929 } 00930 break; 00931 } 00932 case KEY_DOWN: 00933 { 00934 if(depth>11) 00935 { 00936 sound(CLICK); 00937 depth-=10; 00938 disp_image(); 00939 } 00940 break; 00941 } 00942 case KEY_UP: 00943 { 00944 if(depth<201) 00945 { 00946 sound(CLICK); 00947 depth+=10; 00948 disp_image(); 00949 } 00950 break; 00951 } 00952 case KEY_EPS: 00953 { 00954 sound(CLICK); 00955 status = STATUS_EPS; 00956 break; 00957 } 00958 case KEY_CLOSE: 00959 { 00960 sound(CLICK); 00961 step_done = 0; 00962 steps = 0; 00963 status = STATUS_MAIN; 00964 break; 00965 } 00966 } 00967 break; 00968 } 00969 //case STATUS_FILES: 00970 { 00971 /* 00972 switch(Read_Keys()) 00973 { 00974 case 0: 00975 { 00976 break; 00977 } 00978 case KEY_CLOSE: 00979 { 00980 sound(CLICK); 00981 status = STATUS_MAIN; 00982 scrollval = 0; 00983 break; 00984 } 00985 case ROOT_DIR: 00986 { 00987 sound(CLICK); 00988 fm_curPath = "/"; 00989 res = f_chdir(fm_curPath); 00990 scrollval = curr_item; 00991 res = scan_folders(""); 00992 break; 00993 } 00994 case KEY_DOWN: 00995 { 00996 sound(CLICK); 00997 scrollval+=scrollsize; 00998 if(scrollval>scrollrange-scrollsize) 00999 { 01000 scrollval = scrollrange-scrollsize; 01001 } 01002 if(strcmp(fm_curPath, "/") == 0) 01003 { 01004 res = scan_folders(fm_curPath); 01005 } 01006 else 01007 { 01008 res = scan_files(fm_curPath); 01009 } 01010 break; 01011 } 01012 case KEY_UP: 01013 { 01014 sound(CLICK); 01015 scrollval-=scrollsize; 01016 if(scrollval>scrollrange) 01017 { 01018 scrollval = 0; 01019 } 01020 if(strcmp(fm_curPath, "/") == 0) 01021 { 01022 res = scan_folders("/"); 01023 } 01024 else 01025 { 01026 res = scan_files(fm_curPath); 01027 } 01028 break; 01029 } 01030 default: 01031 { 01032 sound(CLICK); 01033 if(strcmp(fm_curPath, "/") == 0) 01034 { 01035 res = f_opendir(&dir, "/"); 01036 for(i=0; i<ReadWord+scrollval; i++) 01037 { 01038 res = f_readdir(&dir, &fno); 01039 } 01040 f_closedir(&dir); 01041 01042 sprintf(dirname, "%s", fno.fname); 01043 fm_curPath = dirname; 01044 curr_item = scrollval; 01045 scrollval = 0; 01046 res = scan_files(dirname); 01047 } 01048 else 01049 { 01050 res = f_opendir(&dir, fm_curPath); 01051 for(i=scrollval; i<scrollval+ReadWord; i++) 01052 { 01053 res = f_readdir(&dir, &fno); 01054 } 01055 if(strstr(fno.fname, ".asn")) 01056 { 01057 printf("%s\n", fno.fname); 01058 steps = data_import(fno.fname); 01059 res = f_closedir(&dir); 01060 plot(); 01061 } 01062 if(strstr(fno.fname, ".bsn")) 01063 { 01064 printf("%s\n", fno.fname); 01065 TFT.MemZero(RAM_G, 201000); 01066 steps = data_import(fno.fname); 01067 res = f_closedir(&dir); 01068 disp_image(); 01069 } 01070 } 01071 break; 01072 } 01073 break; 01074 } 01075 break;*/ 01076 } 01077 case STATUS_START: 01078 { 01079 disp_image(); 01080 if(step_done) 01081 { 01082 addr+=201; 01083 steps++; 01084 if((steps<=1000)&&(xscale*steps>bitmap_height)) 01085 { 01086 scroll_distance_size--; 01087 } 01088 step_done = 0; 01089 get_data(); 01090 disp_image(); 01091 } 01092 if(addr>201000) 01093 { 01094 sound(CLICK); 01095 step_done = 0; 01096 //mean_remove(); 01097 disp_image(); 01098 status = STATUS_BSCAN; 01099 } 01100 switch(Read_Keys()) 01101 { 01102 case KEY_DOWN: 01103 { 01104 if(depth>11) 01105 { 01106 sound(CLICK); 01107 depth-=10; 01108 disp_image(); 01109 } 01110 break; 01111 } 01112 case KEY_UP: 01113 { 01114 if(depth<201) 01115 { 01116 sound(CLICK); 01117 depth+=10; 01118 disp_image(); 01119 } 01120 break; 01121 } 01122 case KEY_STOP: 01123 { 01124 sound(CLICK); 01125 step_done = 0; 01126 ReadWord = 0; 01127 save_dlg(); 01128 while(!keyPressed) 01129 { 01130 keyPressed = TFT.Rd8(REG_TOUCH_TAG); 01131 } 01132 if(keyPressed == FILE_DELETE) 01133 { 01134 sound(CLICK); 01135 //res = f_unlink(filename); 01136 } 01137 else 01138 { 01139 sound(CLICK); 01140 //res = f_close(&fil_obj); 01141 //sprintf(filename, "A20%02d%02d%02d_%02d%02d%02d.bsn", date.tm_year, date.tm_mon, date.tm_mday, date.tm_hour, date.tm_min, date.tm_sec); 01142 //res = f_open(&fil_obj, filename, FA_CREATE_ALWAYS|FA_WRITE); 01143 //for(addr=0; addr<201*steps; addr+=201) 01144 { 01145 //HOST_MEM_READ_STR(addr, sig, 201); 01146 //f_write(&fil_obj, &sig, 201, &len); 01147 } 01148 //f_close(&fil_obj); 01149 } 01150 addr = 0; 01151 steps = 0; 01152 //TFT.MemZero(RAM_G, 201000); 01153 //mean_remove(); 01154 disp_image(); 01155 status = STATUS_BSCAN; 01156 break; 01157 } 01158 } 01159 break; 01160 } 01161 case STATUS_EPS: 01162 { 01163 eps_dlg(); 01164 switch(Read_Keys()) 01165 { 01166 case MATERIAL_AIR: 01167 { 01168 sound(CLICK); 01169 eps = MATERIAL_AIR; 01170 status = STATUS_BSCAN; 01171 break; 01172 } 01173 case MATERIAL_BRICK: 01174 { 01175 sound(CLICK); 01176 eps = MATERIAL_BRICK; 01177 status = STATUS_BSCAN; 01178 break; 01179 } 01180 case MATERIAL_CONCRETE: 01181 { 01182 sound(CLICK); 01183 eps = MATERIAL_CONCRETE; 01184 status = STATUS_BSCAN; 01185 break; 01186 } 01187 case MATERIAL_GYPSUM: 01188 { 01189 sound(CLICK); 01190 eps = MATERIAL_GYPSUM; 01191 status = STATUS_BSCAN; 01192 break; 01193 } 01194 case MATERIAL_OTHER: 01195 { 01196 eps_temp = eps; 01197 sound(CLICK); 01198 status = STATUS_OTHER; 01199 break; 01200 } 01201 case KEY_CLOSE: 01202 { 01203 sound(CLICK); 01204 status = STATUS_BSCAN; 01205 break; 01206 } 01207 } 01208 break; 01209 } 01210 case STATUS_OTHER: 01211 { 01212 other_dlg(); 01213 switch(Read_Keys()) 01214 { 01215 case KEY_LEFT: 01216 { 01217 if(eps_position==1) 01218 sound(CLICK); 01219 eps_position = 0; 01220 break; 01221 } 01222 case KEY_RIGHT: 01223 { 01224 if(eps_position==0) 01225 sound(CLICK); 01226 eps_position = 1; 01227 break; 01228 } 01229 case KEY_UP: 01230 { 01231 switch(eps_position) 01232 { 01233 case 0: 01234 { 01235 if(eps<90) 01236 { 01237 sound(CLICK); 01238 eps+=10; 01239 } 01240 break; 01241 } 01242 case 1: 01243 { 01244 if(eps<99) 01245 { 01246 sound(CLICK); 01247 eps++; 01248 } 01249 break; 01250 } 01251 } 01252 break; 01253 } 01254 case KEY_DOWN: 01255 { 01256 switch(eps_position) 01257 { 01258 case 0: 01259 { 01260 if(eps>10) 01261 { 01262 sound(CLICK); 01263 eps-=10; 01264 } 01265 break; 01266 } 01267 case 1: 01268 { 01269 if(eps>10) 01270 { 01271 sound(CLICK); 01272 eps--; 01273 } 01274 break; 01275 } 01276 } 01277 break; 01278 } 01279 case KEY_OK: 01280 { 01281 sound(CLICK); 01282 status = STATUS_BSCAN; 01283 break; 01284 } 01285 case KEY_CLOSE: 01286 { 01287 eps = eps_temp; 01288 sound(CLICK); 01289 status = STATUS_BSCAN; 01290 break; 01291 } 01292 } 01293 break; 01294 } 01295 case STATUS_TIME: 01296 { 01297 time_screen(); 01298 //tminfo = localtime(&seconds); 01299 switch(Read_Keys()) 01300 { 01301 case KEY_LEFT: 01302 { 01303 sound(CLICK); 01304 time_position--; 01305 if(time_position>5) 01306 time_position = 0; 01307 break; 01308 } 01309 case KEY_RIGHT: 01310 { 01311 sound(CLICK); 01312 time_position++; 01313 if(time_position>5) 01314 time_position = 5; 01315 break; 01316 } 01317 case KEY_UP: 01318 { 01319 switch(time_position) 01320 { 01321 case 0: 01322 { 01323 sound(CLICK); 01324 temp_seconds+=3600; 01325 //date.tm_hour++; 01326 //if(date.tm_hour==24) 01327 //date.tm_hour = 0; 01328 break; 01329 } 01330 case 1: 01331 { 01332 sound(CLICK); 01333 temp_seconds+=60; 01334 //date.tm_min++; 01335 //if(date.tm_min==60) 01336 //date.tm_min = 0; 01337 break; 01338 } 01339 case 2: 01340 { 01341 sound(CLICK); 01342 temp_seconds++; 01343 //date.tm_sec++; 01344 //if(date.tm_sec==60) 01345 //date.tm_sec = 0; 01346 break; 01347 } 01348 case 3: 01349 { 01350 sound(CLICK); 01351 date.tm_mday++; 01352 if(date.tm_mday==32) 01353 date.tm_mday = 1; 01354 break; 01355 } 01356 case 4: 01357 { 01358 sound(CLICK); 01359 date.tm_mon++; 01360 if(date.tm_mon==13) 01361 date.tm_mon = 1; 01362 break; 01363 } 01364 case 5: 01365 { 01366 sound(CLICK); 01367 date.tm_year++; 01368 if(date.tm_year==100) 01369 date.tm_year = 0; 01370 break; 01371 } 01372 } 01373 break; 01374 } 01375 case KEY_DOWN: 01376 { 01377 switch(time_position) 01378 { 01379 case 0: 01380 { 01381 sound(CLICK); 01382 if(date.tm_hour==0) 01383 date.tm_hour = 23; 01384 else date.tm_hour--; 01385 break; 01386 } 01387 case 1: 01388 { 01389 sound(CLICK); 01390 if(date.tm_min==0) 01391 date.tm_min = 59; 01392 else date.tm_min--; 01393 break; 01394 } 01395 case 2: 01396 { 01397 sound(CLICK); 01398 if(date.tm_sec==0) 01399 date.tm_sec = 59; 01400 else date.tm_sec--; 01401 break; 01402 } 01403 case 3: 01404 { 01405 sound(CLICK); 01406 if(date.tm_mday==1) 01407 date.tm_mday = 1; 01408 else date.tm_mday--; 01409 break; 01410 } 01411 case 4: 01412 { 01413 sound(CLICK); 01414 if(date.tm_mon==1) 01415 date.tm_mon = 1; 01416 else date.tm_mon--; 01417 break; 01418 } 01419 case 5: 01420 { 01421 sound(CLICK); 01422 if(date.tm_year==0) 01423 date.tm_year = 0; 01424 else date.tm_year--; 01425 break; 01426 } 01427 } 01428 break; 01429 } 01430 case KEY_OK: 01431 { 01432 sound(CLICK); 01433 seconds = mktime(&date); 01434 set_time(seconds); 01435 status = STATUS_MAIN; 01436 break; 01437 } 01438 case KEY_CLOSE: 01439 { 01440 sound(CLICK); 01441 status = STATUS_MAIN; 01442 break; 01443 } 01444 } 01445 } 01446 } 01447 } 01448 01449 int main() 01450 { 01451 seconds = time(NULL); 01452 temp_seconds = seconds; 01453 TFT.WrMemFromFlash(REG_TOUCH_TRANSFORM_A, data, 24); 01454 TFT.WrMemFromFlash(CLOSE_ICON_ADDR, close_icon, 256); 01455 TFT.WrMemFromFlash(DIR_ICON_ADDR, dir_icon, 256); 01456 TFT.WrMemFromFlash(FILE_ICON_ADDR, file_icon, 256); 01457 TFT.WrMemFromFlash(PALETTE_ADDR, palette, 1024); 01458 date.tm_year = 118; 01459 date.tm_mon = 11; 01460 date.tm_mday = 6; 01461 date.tm_hour = 14; 01462 date.tm_min = 40; 01463 date.tm_sec = 0; 01464 01465 time_t seconds = mktime(&date); 01466 set_time(seconds); 01467 01468 //TFT.Calibrate(); 01469 //sweep(); 01470 status = STATUS_MAIN; 01471 step_done = 0; 01472 01473 while(1) 01474 { 01475 update_gui(); 01476 } 01477 }
Generated on Fri Jul 22 2022 02:43:54 by
1.7.2