如何让Matlab确定操作系统是Windows还是Mac?因此,要找到所有的串行USB连接

问题描述 投票:1回答:5

目标描述:

我正在尝试让Matlab确定计算机是否正在运行Windows或Mac。我的主要目标是编写一个健壮的脚本来确定可用的串行端口,以及USB端口(出于相同的原因)来确定哪个是Arduino。

当前工作:

我有一个脚本,可以在Windows上查询注册表并成功识别此信息。但是,我正在尝试使此脚本健壮并为mac和Windows识别。

请求:如果在matlab中有更好的方法可以做到这一点?以及如何稳健地执行此操作,如果可能,希望独立于OS,否则,如何在Mac上执行此操作!请注意,(instrfindall)仅标识端口的对象,因此端口已经打开。因此,遗憾的是这不是解决方案。

编辑:我可以通过ismac和ispc调用确定它是MAC还是WINDOWS。但是,这个问题的主要内容仍然存在!

windows macos matlab serial-port usbserial
5个回答
2
投票

您需要识别操作系统的MATLAB命令是computer

例如,在Mac上:

>> computer

ans =

MACI64

2
投票

MATLAB内部的命令是computer。以下返回用于Mac OS X(英特尔)的值MACI

>> c = computer;
>> 

c =

MACI

>> 

输入help computer了解更多。


2
投票

这很简单。

您需要使用功能ispc。参考是http://www.mathworks.com/help/matlab/ref/ispc.html

如果是Mac,则返回0,如果是Windows,则返回1。

串行端口:http://www.mathworks.com/help/matlab/serial-port-devices.html。继续阅读。


1
投票

如果您有仪器控制工具箱,可以检查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函数时,它应该为您提供可用的串行端口列表。


0
投票

更容易。 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的员工。

© www.soinside.com 2019 - 2024. All rights reserved.