Array kept showing the last element???
MacTuxLin
Posts: 821
Think I'm going @@ trying to find this in such a simple code.
The storing portion output correctly but when I read the array again, it kept showing the last element??
Appreciate anyone to help me rid this boo-boo. Thanks a lot!!!
CON '--- --- --- --- --- --- 'System '--- --- --- --- --- --- _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 _ConClkFreq = ((_clkmode - xtal1) >> 6) * _xinfreq _Ms_001 = _ConClkFreq / 1_000 _Us_001 = _ConClkFreq / 1_000_000 '--- --- --- --- --- --- 'uSD '--- --- --- --- --- --- _sd_DO = 16 _sd_CLK = 17 _sd_DI = 18 _sd_CS = 19 _sd_WP = -1 ' -1 ifnot installed. _sd_CD = -1 ' -1 ifnot installed. _sd_MaxFilesPerDir = 512 'Max number of filenames per dir '--- --- --- --- --- --- 'RTC '--- --- --- --- --- --- _rtc_DAT = 29 ' -1 ifnot installed. _rtc_CLK = 28 ' -1 ifnot installed. '*** *** *** *** *** *** *** '*** Debugging *** '*** *** *** *** *** *** *** _dbgBaudRate = 250_000 OBJ uSD : "SD3.01_FATEngine.spin" STR : "ASCII0_STREngine.spin" DBG : "ParallaxSerialTerminal.spin" VAR long sdFiles[_sd_MaxFilesPerDir] 'Array for storing total number of files PUB Main | buffer, i, k '*** *** *** *** *** *** '*** Debugging *** '*** *** *** *** *** *** DBG.Start(_dbgBaudRate) '--- --- --- --- --- --- --- --- --- '--- --- uSD Cog --- --- '--- --- --- --- --- --- --- --- --- ifnot(uSD.FATEngineStart(_sd_DO, _sd_CLK, _sd_DI, _sd_CS, _sd_WP, _sd_CD, _rtc_DAT, _rtc_CLK, -1)) 'SD 3.0 reboot 'Mounting the uSD card first uSD.mountPartition(0) 'v3.0 '--- Read & store all files on uSD to array bytefill(@sdFiles, 0, _sd_MaxFilesPerDir) dbg.Char(0) dbg.Str(String("Read from uSD")) dbg.Char(13) dbg.Str(String("=============")) dbg.Char(13) i := 0 uSD.listEntries("W") 'v3.0 repeat while(buffer := uSD.listEntries("N")) 'v3.0 sdFiles[i++] := buffer dbg.Str(buffer) dbg.Str(String(" - Cntr: ")) dbg.Dec(i-1) dbg.Str(String(" ")) dbg.Str(sdFiles[i-1]) '<--Output shows this stored correctly dbg.Char(13) '*** Debugging 'Reading out to Terminal dbg.Char(13) dbg.Char(13) dbg.Str(String("Reading from Array")) dbg.Char(13) dbg.Str(String("==================")) dbg.Char(13) dbg.Str(String("Total files : ")) dbg.Dec(i) dbg.Char(13) repeat k from 0 to i dbg.Str(sdFiles[k]) '<-- Keeps showing the last element??? dbg.Char(13)
The storing portion output correctly but when I read the array again, it kept showing the last element??
Read from uSD ============= PUTTY.EXE - Cntr: 0 PUTTY.EXE CHIMES.WAV - Cntr: 1 CHIMES.WAV DESKTOP.INI - Cntr: 2 DESKTOP.INI CHORD.WAV - Cntr: 3 CHORD.WAV DING.WAV - Cntr: 4 DING.WAV IR_BEGIN.WAV - Cntr: 5 IR_BEGIN.WAV IR_END.WAV - Cntr: 6 IR_END.WAV IR_INTER.WAV - Cntr: 7 IR_INTER.WAV NOTIFY.WAV - Cntr: 8 NOTIFY.WAV RECYCLE.WAV - Cntr: 9 RECYCLE.WAV RINGOUT.WAV - Cntr: 10 RINGOUT.WAV TADA.WAV - Cntr: 11 TADA.WAV B00000.AU - Cntr: 12 B00000.AU B00001.AU - Cntr: 13 B00001.AU B00002.AU - Cntr: 14 B00002.AU B00003.AU - Cntr: 15 B00003.AU B00004.AU - Cntr: 16 B00004.AU B00005.AU - Cntr: 17 B00005.AU B00006.AU - Cntr: 18 B00006.AU B00007.AU - Cntr: 19 B00007.AU B00008.AU - Cntr: 20 B00008.AU B00009.AU - Cntr: 21 B00009.AU B00036.AU - Cntr: 22 B00036.AU B00037.AU - Cntr: 23 B00037.AU B00038.AU - Cntr: 24 B00038.AU B00039.AU - Cntr: 25 B00039.AU B00040.AU - Cntr: 26 B00040.AU B00041.AU - Cntr: 27 B00041.AU B00042.AU - Cntr: 28 B00042.AU B00043.AU - Cntr: 29 B00043.AU B00044.AU - Cntr: 30 B00044.AU B00045.AU - Cntr: 31 B00045.AU B00046.AU - Cntr: 32 B00046.AU B00047.AU - Cntr: 33 B00047.AU B00048.AU - Cntr: 34 B00048.AU B00049.AU - Cntr: 35 B00049.AU B00050.AU - Cntr: 36 B00050.AU B00051.AU - Cntr: 37 B00051.AU B00052.AU - Cntr: 38 B00052.AU B00053.AU - Cntr: 39 B00053.AU B00054.AU - Cntr: 40 B00054.AU B00055.AU - Cntr: 41 B00055.AU B00056.AU - Cntr: 42 B00056.AU B00057.AU - Cntr: 43 B00057.AU B00058.AU - Cntr: 44 B00058.AU B00059.AU - Cntr: 45 B00059.AU B00060.AU - Cntr: 46 B00060.AU B00061.AU - Cntr: 47 B00061.AU B00062.AU - Cntr: 48 B00062.AU B00063.AU - Cntr: 49 B00063.AU B00064.AU - Cntr: 50 B00064.AU B00065.AU - Cntr: 51 B00065.AU B00066.AU - Cntr: 52 B00066.AU B00067.AU - Cntr: 53 B00067.AU B00068.AU - Cntr: 54 B00068.AU B00069.AU - Cntr: 55 B00069.AU B00070.AU - Cntr: 56 B00070.AU B00071.AU - Cntr: 57 B00071.AU B00072.AU - Cntr: 58 B00072.AU B00073.AU - Cntr: 59 B00073.AU B00074.AU - Cntr: 60 B00074.AU B00075.AU - Cntr: 61 B00075.AU B00076.AU - Cntr: 62 B00076.AU B00077.AU - Cntr: 63 B00077.AU B00078.AU - Cntr: 64 B00078.AU B00079.AU - Cntr: 65 B00079.AU B00080.AU - Cntr: 66 B00080.AU B00081.AU - Cntr: 67 B00081.AU B00082.AU - Cntr: 68 B00082.AU B00083.AU - Cntr: 69 B00083.AU B00084.AU - Cntr: 70 B00084.AU B00085.AU - Cntr: 71 B00085.AU B00086.AU - Cntr: 72 B00086.AU B00087.AU - Cntr: 73 B00087.AU B00088.AU - Cntr: 74 B00088.AU B00089.AU - Cntr: 75 B00089.AU B00090.AU - Cntr: 76 B00090.AU B00091.AU - Cntr: 77 B00091.AU B00092.AU - Cntr: 78 B00092.AU B00093.AU - Cntr: 79 B00093.AU B00094.AU - Cntr: 80 B00094.AU B00095.AU - Cntr: 81 B00095.AU B00096.AU - Cntr: 82 B00096.AU B00097.AU - Cntr: 83 B00097.AU B00098.AU - Cntr: 84 B00098.AU B00099.AU - Cntr: 85 B00099.AU B00100.AU - Cntr: 86 B00100.AU B00101.AU - Cntr: 87 B00101.AU B00102.AU - Cntr: 88 B00102.AU B00103.AU - Cntr: 89 B00103.AU B00104.AU - Cntr: 90 B00104.AU B00105.AU - Cntr: 91 B00105.AU B00106.AU - Cntr: 92 B00106.AU B00107.AU - Cntr: 93 B00107.AU B00108.AU - Cntr: 94 B00108.AU B00109.AU - Cntr: 95 B00109.AU B00110.AU - Cntr: 96 B00110.AU B00111.AU - Cntr: 97 B00111.AU B00112.AU - Cntr: 98 B00112.AU B00113.AU - Cntr: 99 B00113.AU B00114.AU - Cntr: 100 B00114.AU B00115.AU - Cntr: 101 B00115.AU B00116.AU - Cntr: 102 B00116.AU B00117.AU - Cntr: 103 B00117.AU B00118.AU - Cntr: 104 B00118.AU B00119.AU - Cntr: 105 B00119.AU B00120.AU - Cntr: 106 B00120.AU B00121.AU - Cntr: 107 B00121.AU B00122.AU - Cntr: 108 B00122.AU B00123.AU - Cntr: 109 B00123.AU B00124.AU - Cntr: 110 B00124.AU B00125.AU - Cntr: 111 B00125.AU B00126.AU - Cntr: 112 B00126.AU B00127.AU - Cntr: 113 B00127.AU B00128.AU - Cntr: 114 B00128.AU B00129.AU - Cntr: 115 B00129.AU B00130.AU - Cntr: 116 B00130.AU B00131.AU - Cntr: 117 B00131.AU B00132.AU - Cntr: 118 B00132.AU B00133.AU - Cntr: 119 B00133.AU B00134.AU - Cntr: 120 B00134.AU B00135.AU - Cntr: 121 B00135.AU B00136.AU - Cntr: 122 B00136.AU B00137.AU - Cntr: 123 B00137.AU B00138.AU - Cntr: 124 B00138.AU B00139.AU - Cntr: 125 B00139.AU B00140.AU - Cntr: 126 B00140.AU B00141.AU - Cntr: 127 B00141.AU B00142.AU - Cntr: 128 B00142.AU B00143.AU - Cntr: 129 B00143.AU B00144.AU - Cntr: 130 B00144.AU B00145.AU - Cntr: 131 B00145.AU B00146.AU - Cntr: 132 B00146.AU B00147.AU - Cntr: 133 B00147.AU B00148.AU - Cntr: 134 B00148.AU B00149.AU - Cntr: 135 B00149.AU B00150.AU - Cntr: 136 B00150.AU B00151.AU - Cntr: 137 B00151.AU B00152.AU - Cntr: 138 B00152.AU B00153.AU - Cntr: 139 B00153.AU B00154.AU - Cntr: 140 B00154.AU B00155.AU - Cntr: 141 B00155.AU B00156.AU - Cntr: 142 B00156.AU B00157.AU - Cntr: 143 B00157.AU B00158.AU - Cntr: 144 B00158.AU B00159.AU - Cntr: 145 B00159.AU B00160.AU - Cntr: 146 B00160.AU B00161.AU - Cntr: 147 B00161.AU B00162.AU - Cntr: 148 B00162.AU B00163.AU - Cntr: 149 B00163.AU B00164.AU - Cntr: 150 B00164.AU B00165.AU - Cntr: 151 B00165.AU B00166.AU - Cntr: 152 B00166.AU B00167.AU - Cntr: 153 B00167.AU B00168.AU - Cntr: 154 B00168.AU B00169.AU - Cntr: 155 B00169.AU B00170.AU - Cntr: 156 B00170.AU B00171.AU - Cntr: 157 B00171.AU B00172.AU - Cntr: 158 B00172.AU B00173.AU - Cntr: 159 B00173.AU B00174.AU - Cntr: 160 B00174.AU B00175.AU - Cntr: 161 B00175.AU B00176.AU - Cntr: 162 B00176.AU B00177.AU - Cntr: 163 B00177.AU B00178.AU - Cntr: 164 B00178.AU B00179.AU - Cntr: 165 B00179.AU B00180.AU - Cntr: 166 B00180.AU B00181.AU - Cntr: 167 B00181.AU B00182.AU - Cntr: 168 B00182.AU B00183.AU - Cntr: 169 B00183.AU B00184.AU - Cntr: 170 B00184.AU B00185.AU - Cntr: 171 B00185.AU B00186.AU - Cntr: 172 B00186.AU B00187.AU - Cntr: 173 B00187.AU B00188.AU - Cntr: 174 B00188.AU B00189.AU - Cntr: 175 B00189.AU B00190.AU - Cntr: 176 B00190.AU B00191.AU - Cntr: 177 B00191.AU B00192.AU - Cntr: 178 B00192.AU B00193.AU - Cntr: 179 B00193.AU B00194.AU - Cntr: 180 B00194.AU B00195.AU - Cntr: 181 B00195.AU B00196.AU - Cntr: 182 B00196.AU B00197.AU - Cntr: 183 B00197.AU B00198.AU - Cntr: 184 B00198.AU B00199.AU - Cntr: 185 B00199.AU B00200.AU - Cntr: 186 B00200.AU B00201.AU - Cntr: 187 B00201.AU B00202.AU - Cntr: 188 B00202.AU B00203.AU - Cntr: 189 B00203.AU B00204.AU - Cntr: 190 B00204.AU B00205.AU - Cntr: 191 B00205.AU B00206.AU - Cntr: 192 B00206.AU B00207.AU - Cntr: 193 B00207.AU B00208.AU - Cntr: 194 B00208.AU B00209.AU - Cntr: 195 B00209.AU B00210.AU - Cntr: 196 B00210.AU B00211.AU - Cntr: 197 B00211.AU B00212.AU - Cntr: 198 B00212.AU B00213.AU - Cntr: 199 B00213.AU B00214.AU - Cntr: 200 B00214.AU B00215.AU - Cntr: 201 B00215.AU B00216.AU - Cntr: 202 B00216.AU B00217.AU - Cntr: 203 B00217.AU Reading from Array ================== Total files : 204 B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU B00217.AU
Appreciate anyone to help me rid this boo-boo. Thanks a lot!!!
Comments
You're saving the string pointer but not the string. I'm guessing that uSD.listEntries("N") writes to the same buffer space each time it runs. That's what I would do else how would you know when to clear the buffer?
What happens if you output the pointer value and not a string?
I think you need something like this
Yes, I learnt about the string pointer thingy in my last boo-boo but what I don't get it is:
This shows correctly so can I safely say that sdFiles[] contains the correct string pointers?
If so, then the below should show the same data, right?
But it shows only the last element...? I'll try your method when I'm back office tomorrow. I'll also might want to change the ParallaxSerialTerminal to FullDuplexSerialExt ....
Thanks a lot!!
One way to solve the problem is using a memory manager to allocate a byte array for each entry. The other way is to define N byte arrays of 13 bytes, and hope that N will be big enough to hold all your entries. In either case, you will need to copy the content of buffer to each one of the byte array entries.
All things considered, it's probably easier to just use the sd object to get the file name as needed.
Thanks Jazzed, again! I'll probably re-design my program to just work directly with SD obj.