Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Matlab确定操作系统是windows还是mac?所以要找到所有的串行usb连接_Windows_Macos_Matlab_Serial Port_Usbserial - Fatal编程技术网

如何让Matlab确定操作系统是windows还是mac?所以要找到所有的串行usb连接

如何让Matlab确定操作系统是windows还是mac?所以要找到所有的串行usb连接,windows,macos,matlab,serial-port,usbserial,Windows,Macos,Matlab,Serial Port,Usbserial,目标描述: 我试图让matlab来确定计算机是运行windows还是mac。我的主要目标是编写一个健壮的脚本来确定哪些串行端口可用,以及USB端口(出于同样的原因)来确定哪一个是Arduino 当前工作: 我有一个在Windows上查询注册表并成功标识此信息的脚本。然而,我正在努力使这个脚本健壮,并且能够识别mac和windows 请求: 如果有更好的方法在matlab中实现这一点?如果可能的话,我该如何稳健地做到这一点,希望独立于操作系统,或者如果没有,我该如何在Mac上做到这一点!注意,(i

目标描述:

我试图让matlab来确定计算机是运行windows还是mac。我的主要目标是编写一个健壮的脚本来确定哪些串行端口可用,以及USB端口(出于同样的原因)来确定哪一个是Arduino

当前工作:

我有一个在Windows上查询注册表并成功标识此信息的脚本。然而,我正在努力使这个脚本健壮,并且能够识别mac和windows

请求: 如果有更好的方法在matlab中实现这一点?如果可能的话,我该如何稳健地做到这一点,希望独立于操作系统,或者如果没有,我该如何在Mac上做到这一点!注意,(instrfindall)仅标识端口的对象,因此端口已打开。因此,遗憾的是,这不是一个解决办法


编辑:我可以通过ismac和ispc呼叫确定是MAC还是WINDOWS。然而,这个问题的核心仍然存在

您需要识别操作系统的MATLAB命令是
计算机

例如,在Mac上:

>> computer

ans =

MACI64
这很简单

您需要使用ispc函数。参考文献是

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


串行端口:。请仔细阅读。

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


键入
帮助计算机
了解更多信息。

如果您有仪器控制工具箱,您可以检查 函数获取可用的串行端口

如果不是,我建议转到系统命令。 例如,在windows上,您可以分析
模式
命令的输出:

[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到串行适配器,但它应该在调用
模式
功能时为您提供可用串行端口的列表。

甚至更容易。MATLAB具有标记每个操作系统的功能,无需进入CPU架构级别

if ismac
%要在Mac平台上运行的代码
elseif-isunix
%要在Linux平台上运行的代码
elseif ispc
%要在Windows平台上运行的代码
其他的
disp('不支持平台')
结束

注:我是MathWorks的员工

谢谢你的帮助!这也是一个选项,但是,我编辑了它,因为我了解了ispc ismac命令。所以,如果你对我的大部分问题有任何想法,那就太棒了!谢谢你的帮助!这也是一个选项,但是,我编辑了它,因为我了解了ispc ismac命令。所以,如果你对我的大部分问题有任何想法,那就太棒了!谢谢你的帮助!这也是一个选项,但是,我编辑了它,因为我了解了ispc ismac命令。所以,如果你对我的大部分问题有任何想法,那就太棒了!这个脚本对Windows和Mac通用吗?遗憾的是,没有:(我刚试过。但是如果你读了,它是在搜索'COM'端口。windows中就是这样处理的。它们在mac中的标签和引用完全不同-u173;-但是谢谢你的建议!我从来都不是一个认真的mac用户,所以请原谅我一点也不知道。但是在我看来,你可以简单地修改一下脚本,将M包含在内ac设备?这里列出了参考。如果您想使脚本“独立于操作系统”,然后避免注册表查询,因为Windows可能会在不同版本之间更改命令/API。相反,请按照答案所示尝试使用Matlab命令。Windows和Mac中的串行端口似乎不可能以相同的方式命名,因此您可能仍然必须同时包含两个版本的代码。请尝试
开关
:)这就是计划。但仍然没有找到确定串行端口的方法。我基本上会向所有人发送一条消息,看看是否得到指定的响应(如果有的话),以确定它是否正确(除非),就像在windows上一样,我可以通过这种方式识别设备名称并确定它是否是正确的设备。我将对此进行研究!并让您知道我发现了什么,谢谢:)很高兴有MathWorks员工在这里!一个问题:如果MATLAB不能在不受支持的平台上运行,那么最后一个
的要点是什么!这是为了说明,尽管在某些情况下,由于缺乏测试、硬件或底层MATLAB支持,可能会出现不支持平台的情况。
Status for device CON:
----------------------
    Lines:          2048
    Columns:        200
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      866