遍历多个串行端口,一个接一个(不同时)
6视图(30天)
显示旧的评论
我有一个计划,利用输入的串行数据做比较字符串的数据存储在excel中。最初的字符串有看起来像这样:
读者(n):“字符串”
我的代码设置找到n,然后比较连续字符串的字符串存储在第n列一个excel电子表格。bool值1从这个操作会改变n面板绿色GUI,而bool值0 n面板将会改变为红色。
目前,我的代码只迭代从n = 1:2。这些都是来自COM3 n值。我想用三个COM端口,每个人携带n = 3:4, n = 6, n =七8。然而,我不确定如何初始化端口读取一个接一个,不同时。这是我的主要功能:
删除(instrfind (“端口”,“COM3”));%删除端口不可用的错误可能性
标签=系列(“COM3”);%初始化使用的端口
fopen(标签);%打开th eport
盒=字符(0 (2,14));%矩阵填充输入的串行数据
TrueValueData =“C: \ RfidChipTrueValues.xlsx”;
%的位置存储主标签
[~,~,TrueValMat] = xlsread (TrueValueData);%读取excel文件转换为适当的格式
%创建矩阵填充正确的值
%被盒子,第一行
%所有行进行主值
为我= 1:正
为n = 1:2
如果我> 10%积极阅读
readData = fscanf(标签);
如果长度(readData) > 12
框(str2double (readData(8)),一14)= readData(福音11:24);
如果比较字符串(TrueValMat {2 n}盒(n,:))%不能分类指数正常细胞类型,必须使用这种方法
集(handles.uipanels (n),“写成BackgroundColor”,‘g’);
其他的
集(handles.uipanels (n),“写成BackgroundColor”,“r”);
结束
drawnow% GUI允许更新外观只要循环完成。
如果比较字符串(TrueValMat{2 1},盒子(1,:))…
& & strcmp (TrueValMat{2,},箱(2:))= = 1
集(handles.pushbutton5,“启用”,“上”);
结束
结束
结束
结束
结束
GUI运行良好,只有一些小的事情要解决。正确的颜色变化等。
这都是只有一个com端口。我怎么把这个处理3额外的港口?
关于bytesavailablefcn我知道,但我没有线索如何使用它,即使时间阅读,观看视频,显然等我打开使用任何作品,但它必须是向我解释。
非常感谢
0评论
接受的答案
沃尔特·罗伯森
2019年10月3日
portlist = {“COM3”,“COM4为”,“COM7”,“COM12”};
nport =长度(portlist);
细胞标记= {1,nport};
清理= {1,nport}细胞;
为portidx = 1: nport
删除(instrfind (“端口”,portlist {portidx}));%删除端口不可用的错误可能性
标记{portidx} =串行(portlist {portidx});%初始化使用的端口
fopen(标签);%打开th eport
清理{portidx} = onCleanup(@()文件关闭(portlist {portidx}));
结束
盒=字符(0 (2,14));%矩阵填充输入的串行数据
TrueValueData =“C: \ RfidChipTrueValues.xlsx”;
%的位置存储主标签
[~,~,TrueValMat] = xlsread (TrueValueData);%读取excel文件转换为适当的格式
%创建矩阵填充正确的值
%被盒子,第一行
%所有行进行主值
为我= 1:正
为portidx = 1: nport
nbase = portidx * 2 - 1;
为n = nbase: nbase + 1
如果我> 10%积极阅读
readData = fscanf(标记{portidx});;
如果长度(readData) > 12
框(str2double (readData(8)),一14)= readData(福音11:24);
如果比较字符串(TrueValMat {2 n}盒(n,:))%不能分类指数正常细胞类型,必须使用这种方法
集(handles.uipanels (n),“写成BackgroundColor”,‘g’);
其他的
集(handles.uipanels (n),“写成BackgroundColor”,“r”);
结束
drawnow% GUI允许更新外观只要循环完成。
如果比较字符串(TrueValMat{2 1},盒子(1,:))…
& & strcmp (TrueValMat{2,},箱(2:))= = 1
集(handles.pushbutton5,“启用”,“上”);
结束
结束
结束
结束
结束
结束
如果你想要不同的东西要做不同的端口,然后你可以测试portidx价值。