我正在使用MATLAB R2017a& Linux操作系统。
version -java
'Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode'
以下程序,75%的时间花在fread()上。 它如何加速?
s = serial(serial_port,'BaudRate',baud_rate,'DataBits',8,'InputBufferSize',buffer_size);
fopen(s);
size_to_read=s.BytesAvailable;
if (size_to_read>10)
out = fread(s,size_to_read,'uint16')
// some code //
end
可能直接访问Java会更快,但我不知道如何。
另一种解决方案是使用此MEX https://nl.mathworks.com/matlabcentral/fileexchange/62545-mex-c-serial-interface 这个输出是8位数,但我需要16位,可以改变吗?
[UPD] 串口速度为4Mbit / s,我的速度大约为400Kb / s。 如果我将流保存到txt然后从txt读取,而不是从串口读取, 该计划将更快完成。 此外,从分析器可以看出,fread()需要很多时间。
'DataBits',8
表示串行封装有10位,首先是起始位 - 0&最后是停止位-1。在我们得到这两个包后,它的格式就像fread()