串行fread太慢,MATLAB

时间:2018-02-11 19:03:10

标签: linux matlab

我正在使用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()

中的单个16位数字

0 个答案:

没有答案