Improvement of speed for code for hex serial command list

조회 수: 1 (최근 30일)
Deo
Deo 2017년 5월 18일
댓글: Deo 2017년 5월 27일
Hi
First of all, sorry for my bad english writing.
My matlab versions are 2015b and 2016a.
Followed by my previous question https://www.mathworks.com/matlabcentral/answers/340723-serial-communication-with-hex-code, I am writing to ask another questions regarding my code as attached file.
Also, I am sorry that I cannot clarify company/model of my device and cannot show a document including details for serial command list and explanation, because the manufacturer indicated that this document is confidential document.
Now, anyway, communication between computer and my sensor device is good.
The variable 'data' is usually 41*2 or 40*2 depending on existence of escape octet, 7D, when I send the command list in the variable 'Str' (so variable 'D').
The part of the command list ('Str'), '2B', '01', '01', is for auto-output from the device to the computer.
So, principly, I do not need to send the command list again everytime, because the device send (or I can use fread() I think) every 1 second once I send the command list at a very first time.
However, when I did not send it again, 'data' length is very weird. (It goes up to 512*2 and varies a lot from 40*2 to 512*2)
This is first question. Why it is?. Did I make any mistake you think?
Another question is that this code might be in-effective. So, please suggest any solution to improve running speed for this code.
Last question is...... if you can convert this code into C or C++, please help me.
I think I can improve running speed by compiling C code into mex file.
Thanks

답변 (2개)

Yuebin Zhou
Yuebin Zhou 2017년 5월 26일
Can you provide more details to the first question? The second question about performance optimization would also depend on how the code is like.
Regarding code conversion, if the code is in MATLAB, you may be able to use code generation toolboxes to generate C/C++ code, but note that not all functions are supported by code generation.
If you want to rewrite your MATLAB code with equivalent C code, then you can MEX it referring to the link below
https://www.mathworks.com/help/matlab/matlab_external/introducing-mex-files.html
However, MEX is mainly used for bringing C code to MATLAB. As far as performance is concerned, it may not be always boosted, which is a common confusion.
  댓글 수: 1
Deo
Deo 2017년 5월 27일
I already tried that before I posted this question, but most of matlab functions I used could not be converted by Matlab C/C++ encoder. I already know about MEX, and that is purpose of this posting to ask somebody to manually rewrite this matlab code with C/C++ (or Fortran). For uncertainty in boosting in speed, so I want to test it. Thanks

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2017년 5월 26일
Do not convert to binary and back to invert the bit: use bitxor() with 2^5
fprintf('%02x',value) might be faster than dec2hex

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by