내 Arduino 스케치에 여러 개의 Serial.println
문이 있습니다. 그것들 모두는 정수형을 제외한 문자열입니다. 정수는 MatLab의 fscanf
을 사용하여 실시간으로 플롯하려는 유일한 변수입니다.MatLab - Arduino와 fscanf 문제
문자열을 인쇄하는 문장이 3 Serial.println
입니다. 그 중 2 개는 setup
에 있고 3 번째는 loop
에 있습니다. 정수는 후자의 문자열 바로 뒤에 오는 4 번째입니다.
Warning: Unsuccessful read: Matching failure in format.
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in serialHRM (line 12)
x(i) = fscanf(ard, '%*s %d');
내 MATLAB 코드 :
ard = serial('/dev/tty.usbserial-A601EQJ5', 'BaudRate', 9600);
fopen(ard);
i = 1;
N = 50;
x = zeros(0, N);
while i <= N
x(i) = fscanf(ard, '%*s %d');
plot(x)
hold on
axis([1, N, 0, 150])
drawnow;
i = i +1;
end
편집 :
감사
난 당신이 당신이 원하는 필터링 할 수 있습니다,하지만 난 지금이 오류가 발견 설명서를 읽은 후 - 방금 첫 번째와 두 번째 줄을 인쇄했습니다.이 줄은 내가 가지고있는 연속 인쇄물입니다. 내가 3 strings
과 1 int
을 말했지만, 문에 strings
중 1 개가 있기 때문에 setup
함수에서 1 개만 인쇄됩니다.
tline =
Card Failed or Ready
EDU>> tline = fgetl(ard)
tline =
BPM: 100
아두 이노 Serial
인쇄 :
void setup() {
Serial.begin(9600);
Serial.println("Card Failed or Ready");
}
void loop() {
Serial.print("BPM: "); Serial.println(BPM);
delay(1000);
}
난 단지 관심 변수는 int
BPM
여기 매트랩의 모든 라인이다.
감사합니다. 게시물 작성 후 추가 정보를 제공하기 위해 내 게시물을 편집했습니다. 무언가가 비어 있는지 확인하기 위해'if' 문에서 isempty()를 사용합니까? – user1574598
예 - 실제로 역순으로 사용합니다 :'if ~ isempty (temp)'('temp'는'fscanf'의 출력을 할당하는 변수이고,'x'에만 할당/카운터/다시 그리기 그래프를 증가시킵니다 실제로 '임시'에 데이터가있는 경우 – nkjt