One think you could try is moving the file i/o to the UI thread and running the timer as fast as possible. I used the queue to get the timestamp at the time the data came in to make sure if the the timer and the async callbacks went out of sync, the data will still be there.
Im attaching my test app.
Another thing you should look into is writing a binary file. Check out this example for more information