get continuous data in while loop through serial
조회 수: 8 (최근 30일)
이전 댓글 표시
Hello,
I need help with reading data from serial. Basically I have arduino that sends data "0" or "1" randomly every 2-4 seconds. When I save this data i will get 0 or 1. However, what I want is a continuous data, i.e. even when the true or false does not change, i still can record that. in this case have an array of 0 or 1 instead of 01010101. how can i do this? my code:
s = serial('COM13', 'BaudRate', 115200);
fopen(s);
y=[];
t1 = tic;
while (t<10)
x = fscanf(s)
t = toc(t1);
y = [y; t, x] % right now it's only 010101, but i want eg 00000011111111111110001111...
%with time stamp
end
댓글 수: 0
답변 (1개)
Walter Roberson
2019년 1월 18일
You can test the BytesAvailable property of the port. If it is 0 then repeat your most recent reading . You might want to configure a timer object to sample at appropriate frequency .
댓글 수: 3
Walter Roberson
2019년 1월 18일
It would be 0 except when data has been received but not processed . Your current fgets is blocking waiting for a complete line so you would need to be using a timer to detect the situation as timers should be able to interrupt the wait.
You should reorganize . Don't use while . Use BytesAvailableFcn to trigger the fgets and store the result in a known place . use aa timer object set to repeat at your desired sampling frequency . The timer should retrieve the current value from the known location and leave the value there . If the timer fires again before the BytesAvailable callback has read in the next value then the same value as before will be read.
참고 항목
카테고리
Help Center 및 File Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!