What's wrong with this code?!?
It should just write a record to RMS and read it back... but it does not! I write 1234, I read back 82537492!!
So I examined Outputrecord and byteInputdata: they look like this!!
Outputrecord =
0
0
4
-46
byteInputData =
49
50
51
52
?????????
Code:private void StoreSettings() { getTxtInfo().setString(getTxtInfo().getString()+"\n" + "Storing " + Integer.toString(TimeFixMs) ); byte[] outputRecord; // Global array which collects settings. // Setup a stream to print data to: ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); DataOutputStream outputDataStream = new DataOutputStream(outputStream); try { outputDataStream.writeInt(TimeFixMs); // Print data to stream. outputDataStream.flush(); // Committ changes. outputRecord = outputStream.toByteArray(); // Put stream into array for storing. RecordStore rs = RecordStore.openRecordStore("my_rms", true); outputStream.reset(); outputStream.close(); outputDataStream.close(); if (rs != null) { rs.addRecord(outputRecord, 0, outputRecord.length); // Store array rs.closeRecordStore(); } System.out.println("Outputrecord = \n"); for (int i=0; i<outputRecord.length; i++) { System.out.println(outputRecord[i]); } getTxtInfo().setString(getTxtInfo().getString()+"\n" + "Stored."); } catch (RecordStoreFullException ex) { ex.printStackTrace(); } catch (RecordStoreNotFoundException ex) { ex.printStackTrace(); } catch (RecordStoreException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } private void ReadSettings() { TimeFixMs = 0; byte[] byteInputData = new byte[MILLI_LENGTH]; // Setup array to hold data to read. // Setup stream for reading data: ByteArrayInputStream inputStream = new ByteArrayInputStream(byteInputData); DataInputStream inputDataStream = new DataInputStream(inputStream); try { RecordStore rs = RecordStore.openRecordStore("my_rms", true); // Open store. if (rs != null) { rs.getRecord(1, byteInputData, 0); // Read all data into array. System.out.println("byteInputData = \n"); for (int i=0; i<byteInputData.length; i++) { System.out.println(byteInputData[i]); } TimeFixMs = inputDataStream.readInt(); // Extract integer from array. inputStream.reset(); inputStream.close(); inputDataStream.close(); System.out.println("Letto: "); System.out.println(TimeFixMs); rs.closeRecordStore(); } } catch (RecordStoreException e) { } catch (Exception ex) { ex.printStackTrace(); } }

Reply With Quote


