I am sending accelerometer data via bluetooth into Matlab where I will process it and build a GUI.
I am currently working on getting the bluetooth data into Matlab. I'm using a dongle which gets data into port COM18. This is the code I'm using:
s= serial ('COM18');
set(s,'DataBits',8);
set(s,'StopBits',1);
set(s,'BaudRate',9600);
set(s,'Parity','none');
fopen(s);
When I start from scratch (disconnect and connect bluetooth and dongle, reopen matlab etc) The port successfully opens and allows me to read data. However, if I close and then try to open, it will give me an error:
Error using serial/fopen (Line 72) Open failed: Port COM 18 is not available. Available ports: COM6, COM7, COM19. use INSTRFIND to determine if other instrument objects are connected to the requested device.
I know that my device isn't connected to anything else. So I then have to disconnect my bluetooth, dongle, and restart matlab.
Is there a more efficient way to do this?
Also, I am able to get values from my accelerometer into Matlab, but I don't know how to make them continuous. Each time 512 bytes are sent and if my ValuesReceived exceeds 12000, I once again have to restart my bluetooth device to get more values. I've tried flushoutput, but it hasn't worked. Any ideas on how to get continuous data into Matlab so I can process it in my GUI?
fclose? Or do you mean during a second run of your code with the same MATLAB session? For the other, it sounds a bit like you might just need to increase your input buffer size and/or speed up the intermediate processing so the buffer doesn't overflow while you're processing the chunk of data you just read in. What is the rate at which the accelerometer outputs values, and how many/how often are you reading those values into MATLAB? - nkjt