目标描述:
我正在尝试让Matlab确定计算机是否正在运行Windows或Mac。我的主要目标是编写一个健壮的脚本来确定可用的串行端口,以及USB端口(出于相同的原因)来确定哪个是Arduino。
当前工作:
我有一个脚本,可以在Windows上查询注册表并成功识别此信息。但是,我正在尝试使此脚本健壮并为mac和Windows识别。
请求:如果在matlab中有更好的方法可以做到这一点?以及如何稳健地执行此操作,如果可能,希望独立于OS,否则,如何在Mac上执行此操作!请注意,(instrfindall)仅标识端口的对象,因此端口已经打开。因此,遗憾的是这不是解决方案。
编辑:我可以通过ismac和ispc调用确定它是MAC还是WINDOWS。但是,这个问题的主要内容仍然存在!
您需要识别操作系统的MATLAB命令是computer
例如,在Mac上:
>> computer
ans =
MACI64
MATLAB
内部的命令是computer
。以下返回用于Mac OS X(英特尔)的值MACI
:
>> c = computer;
>>
c =
MACI
>>
输入help computer
了解更多。
这很简单。
您需要使用功能ispc。参考是http://www.mathworks.com/help/matlab/ref/ispc.html。
如果是Mac,则返回0,如果是Windows,则返回1。
串行端口:http://www.mathworks.com/help/matlab/serial-port-devices.html。继续阅读。
如果您有仪器控制工具箱,可以检查instrhwinfo功能获取可用的串行端口。
如果没有,我建议去系统命令。例如,在Windows上,您可以解析mode
命令的输出:
[status,cmdout] = system('mode');
变量cmdout
将包含以下内容:
Status for device CON:
----------------------
Lines: 2048
Columns: 200
Keyboard rate: 31
Keyboard delay: 1
Code page: 866
对于每个设备,例如串行端口和LPT端口。我不是MAC用户,但我怀疑您在那里也可能会找到类似的内容。
UPD1
我不认为您可以通过这种方式来区分实际的串行端口和USB到串行适配器,但是在调用mode
函数时,它应该为您提供可用的串行端口列表。
更容易。 MATLAB具有method来标记每个OS,而无需涉及CPU体系结构的级别。
if ismac
% Code to run on Mac platform
elseif isunix
% Code to run on Linux platform
elseif ispc
% Code to run on Windows platform
else
disp('Platform not supported')
end
注意:我是MathWorks的员工。