资源简介
Matlab自动识别插入电脑的串口设备及其串口号。函数运行之后返回N×2的单元矩阵,N代表所有活动串口数目。每行的第一列是接入电脑的设备名称(例如'USB-SERIAL CH340'),第二列是其对应的串口号。
代码片段和文件信息
function devices = IdentifySerialComs()
% function:identifies Serial COM devices on Windows systems by friendly name and service.
% output:a cell array where the first column holds the name of the device
% and the second column holds the COM number. Devices returns empty if nothing is found.
% author:Modified by “yuhansgg(Shi Gaige)“ based on code of “Lorgio Teodovich“
% date: 2017.12.29
devices = [];
Skey = ‘HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM‘;
[~ list] = dos([‘REG QUERY ‘ Skey]);
if ischar(list) && strcmp(‘ERROR‘list(1:5)) %%strcmp 两个字符串相同返回1
disp(‘Error: EnumSerialComs - No SERIALCOMM registry entry‘)
return;
end
list = strread(list‘%s‘‘delimiter‘‘ ‘); %#ok requires strread()
coms = 0;
for i = 1:numel(list) %%numel 返回元素个数
if strcmp(list{i}(1:3)‘COM‘)
if ~iscell(coms)
coms = list(i);
else
coms{end+1} = list{i}; %#ok Loop size is always small
end
end
end
out = 0;
outK = 0;
for j=1:2
switch j
case 1
key = ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\‘;
case 2
key = ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\‘;
end
[~ vals] = dos([‘REG QUERY ‘ key ‘ /s /f “FriendlyName“ /t “REG_SZ“‘]);
if ischar(vals) && strcmp(‘ERROR‘vals(1:5))
disp(‘Error: EnumSerialComs - No Enumerated USB registry entry‘)
return;
end
vals = textscan(vals‘%s‘‘delimiter‘‘\t‘);
vals = cat(1vals{:});
for i = 1:numel(vals)
if strcmp(vals{i}(1:min(12end))‘FriendlyName‘)
if ~iscell(out)
out = vals(i);
else
out{end+1} = vals{i}; %#ok Loop size is always small
end
if ~iscell(outK)
outK = vals(i-1);
else
outK{end+1} = vals{i-1}; %#ok Loop size is always small
end
end
end
end
i_dev=1;Sservices=[];
for i = 1:numel(coms)
match = strfind(out[coms{i}‘)‘]);
ind = 0;
for j = 1:numel(match)
if ~isempty(match{j})
ind = j;
[~ sers] = dos([‘REG QUERY “‘ outK{ind} ‘“ /f “Service“ /t “REG_SZ“‘]);
sers = textscan(sers‘%s‘‘delimiter‘‘\t‘);
sers = cat(1sers{:});
if (numel(sers)>1)
sers=strread(sers{2}‘%s‘‘delimiter‘‘ ‘);
Sservices{i_dev} = sers{3};
i_dev=i_dev+1;
end
end
end
end
Sservices=unique(Sservices);
i_dev=1;
for ss=1:numel(Sservices)
key = [‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\‘ Sservices{ss} ‘\Enum‘];
[~ vals] = dos([‘REG QUERY ‘ key ‘ /f “Count“‘]);
if ischar(vals) && strcmp(‘ERROR‘vals(1:5))
% disp(‘Error: EnumSerialComs - No Enumerated services USB registry entry‘)
% return
end
vals
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5119 2017-12-29 10:37 IdentifySerialComs.m
- 上一篇:右臂表面肌电信号数据
- 下一篇:Matlab小波包分解函数
相关资源
- Matlab小波包分解函数
- 基于峭度的ICA matlab代码程序
-
Simuli
nk电池仿真模型 - RLC电路matlab仿真m文件
- matlab矩阵运算
- 最大匹配matlab程序
- 凸轮仿真加工MATLAB程序
- LCE OCE GCEmatlab代码用于图像分割精度评
- 连续粒子群算法的matlab程序
- 窗口傅里叶正反变换matlab程序
- 改进的Bradley二值化matlab程序
- 改进的bernsen二值化算法
- matlab_webrtc_fullaec.m
- 边缘检测的matlab实现代码
- A*算法最短路径万能通用matlab代码
- 蚁群算法最短路径万能matlab源代码
- MATLAB蚁群算法ACA最短路径-注释完整
- 卡尔曼平滑
- matlab强化学习平衡杆代码
- matlab_基于QPSK的ML检测算法
- 模糊综合评判的matlab实现
- 三相全控整流电路matlab仿真
- 带转矩内环的转速、磁链闭环矢量控
- matlab实现LZW码
- matlab 三维 物体 运动 仿真
- 基于MATLAB的GUI图像处理剪裁程序设计
-
单极性SPWMsimuli
nk仿真 - 计算阶乘matlab算法
- 卡尔曼滤波算法的matlab 实现
- matlab中的计时工具timeit.m
评论
共有 条评论