フィルターのクリア

How to store multiple serial objects

2 ビュー (過去 30 日間)
Yangfan Peng
Yangfan Peng 2017 年 4 月 25 日
回答済み: Andrew Newell 2017 年 4 月 26 日
Hello everybody,
I would like to load eight different COM ports as serial objects and send strings to these serial objects simultaneously. These COM ports represent micromanipulators which I can tell to move to certain xyz coordinates.
Right now I initiate them using these lines:
m1=serial('COM10');
m2=serial('COM11');
m3=serial('COM12');
m4=serial('COM13');
m5=serial('COM14');
m6=serial('COM15');
m7=serial('COM16');
m8=serial('COM17');
fopen(m1);
fopen(m2);
fopen(m3);
fopen(m4);
fopen(m5);
fopen(m6);
fopen(m7);
fopen(m8);
m1.terminator='CR';
m2.terminator='CR';
m3.terminator='CR';
m4.terminator='CR';
m5.terminator='CR';
m6.terminator='CR';
m7.terminator='CR';
m8.terminator='CR';
Afterwards I would like to adress all (or only some which I select through a checkbox GUI) serial objects with these lines:
fprintf(m3,'OUT')
pause(5)
fprintf(m3,'ABSZ -15000')
pause(2)
fprintf(m3,'RELZ 70000')
pause(2)
fprintf(m3,'IN')
fclose(m3)
I could write 8 if loops and leave everything as is, but I have a feeling that there should be a better and shorter solution? Is there a way to store the serial objects in some kind of array or anything like that so I can adress the serial objects with a for loop? Apparantly I can not store them in an array, because then this happens:
>> s{1}=serial('COM10')
Cell contents assignment to a non-cell array object.
I would appreciate your help.

採用された回答

Andrew Newell
Andrew Newell 2017 年 4 月 26 日
You certainly can store them in an array, e.g.:
n = 8;
s = cell(8,1);
for ii=1:8
s{ii} = serial(sprintf('COM1%d',ii-1),'terminator','CR');
end
I'm guessing it didn't work for you because s was already defined as some other class of object.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMigrate GUIDE Apps についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by