Em đang kết nối qua rs232 giữa PIC 16F877A và Matlab để đọc tín hiệu cảm biến. Em thử lập trình đoạn code trong Matlab để đọc giá trị ADC tử PIC để hiển thị trên Matlab mà nó báo lỗi :
??? Error using ==> serial.fread at 131
SIZE must be greater than 0.
Error in ==> sensorpic at 7
valuesensor = fread(s, s.BytesAvailable);
Code của em như sau:
////////////////////////////////
function sensorpic()
s=serial('COM1');
fopen(s)
fprintf(s,'%s','0');
clear data
for i= 1 :10
valuesensor = fread(s, s.BytesAvailable);
dim = size(valuesensor);
data(i)=0;
for j=1:dim(1)
data(i) = valuesensor(j,1)+ data(i);
end
data(i)=(data(i)/dim(1));
end
data
fclose(s)
////////////////////////////////////////
Em giải thích tạm cái code làm việc như sau: mở cổng COM1, sau đó gửi kí tự "0" xuống PIC để PIC bắt đầu đọc dữ liệu ADC sau đó gửi lại giá trị ADC về Matlab. Matlab đọc về qua lệnh valuesensor = fread(s, s.BytesAvailable);. Vòng lặp nhằm đọc nhiều giá trị ADC sau đó lấy giá trị trung bình cộng làm giá trị hiển thị.
Mong mọi người giúp em sửa cái code.
??? Error using ==> serial.fread at 131
SIZE must be greater than 0.
Error in ==> sensorpic at 7
valuesensor = fread(s, s.BytesAvailable);
Code của em như sau:
////////////////////////////////
function sensorpic()
s=serial('COM1');
fopen(s)
fprintf(s,'%s','0');
clear data
for i= 1 :10
valuesensor = fread(s, s.BytesAvailable);
dim = size(valuesensor);
data(i)=0;
for j=1:dim(1)
data(i) = valuesensor(j,1)+ data(i);
end
data(i)=(data(i)/dim(1));
end
data
fclose(s)
////////////////////////////////////////
Em giải thích tạm cái code làm việc như sau: mở cổng COM1, sau đó gửi kí tự "0" xuống PIC để PIC bắt đầu đọc dữ liệu ADC sau đó gửi lại giá trị ADC về Matlab. Matlab đọc về qua lệnh valuesensor = fread(s, s.BytesAvailable);. Vòng lặp nhằm đọc nhiều giá trị ADC sau đó lấy giá trị trung bình cộng làm giá trị hiển thị.
Mong mọi người giúp em sửa cái code.
Comment