首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中正确继承TCPIP类?

如何在Matlab中正确继承TCPIP类?
EN

Stack Overflow用户
提问于 2019-01-29 15:18:45
回答 1查看 112关注 0票数 2

我想在类中创建一个TCPIP对象。我有一些问题要想办法解决。

首先,我将展示一个工作代码片段:

代码语言:javascript
复制
>> %Creating the TCPIP object
>> TCPIP = tcpip('localhost',1000)

   TCPIP Object : TCPIP-localhost

   Communication Settings 
    RemotePort:         1000
    RemoteHost:         localhost
    Terminator:         'LF'
    NetworkRole:        client

   Communication State 
    Status:             closed
    RecordStatus:       off

   Read/Write State  
    TransferStatus:     idle
    BytesAvailable:     0
    ValuesReceived:     0
    ValuesSent:         0


>> %Changing Buffersize as example
>> TCPIP.OutputBufferSize = 30000

    TCPIP Object : TCPIP-localhost

    Communication Settings 
     RemotePort:         1000
     RemoteHost:         localhost
     Terminator:         'LF'
     NetworkRole:        client

    Communication State 
     Status:             closed
     RecordStatus:       off

    Read/Write State  
     TransferStatus:     idle
     BytesAvailable:     0
     ValuesReceived:     0
     ValuesSent:         0

如您所见,未显示缓冲区大小更改的命令行输出。我无法正确地可视化这一点,但我尝试解释:在创建the对象之后,Matlab使用值TCPIP创建变量1x1 tcpip。如果双击这个值,我可以看到对象的所有属性,包括outputBuffersize

现在我将在课堂上展示我第一次尝试暗示。我尝试在methode中创建tcpip对象,它在类属性中保存变量TCPIP (就像前面解释的那样)。

代码语言:javascript
复制
classdef tcp_test < handle

    properties
        TCPIP
    end

    methods

         %CONSTRUCTOR
         function Obj = tcp_test(~)      
             ipobject(Obj);
         end

         %DECONSTRUCTER
         function delete(~) 
         end

         %Create TCPIP Object
         function ipobject(Obj)
             Obj.TCPIP = tcpip('localhost',1000);
             Obj.TCPIP.OutputBufferSize = 30000;
         end
    end
end

这个类示例可以处理任何错误输出,但是我发现了一些似乎不像我预期的那样工作的东西。在创建类对象‘myTCP= tcp_test´之后,我尝试研究对象´myTCP.TCPIP´,并意识到它看起来是空的。实际上,所有必要的属性都是设置好的,我可以更改它们,它们只是没有显示。

这就引出了最初的问题:我认为我必须继承tcpip类才能使用类方法。

我仍然有一种感觉,我仍然在做一些错误的事情,因为缺少视觉效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 12:35:33

我认为这只是缺乏对命令窗口中显示的内容的理解--它不是对象的所有属性,有时只是一个子集。如果在命令窗口中键入get( TCPIP ),您将看到包括OutputBufferSize在内的所有属性。类似地,t = tcp_test; get( t.TCPIP )将显示相同的属性。

通过在命令窗口中键入edit tcpip,您可以看到tcpip类具有以下属性:

代码语言:javascript
复制
properties(Hidden, SetAccess = 'public', GetAccess = 'public')
    icinterface
end    

它继承于不可编辑的instrument类,并且具有其他我们看不到定义的属性。

这里最重要的是Hidden属性。来自文档

MATLAB不会在命令窗口中显示具有受保护或私有GetAccess的属性的名称和值,也不会显示隐藏属性为真的属性。

这就是为什么您看不到工作区中的属性。但是,您可以自由编辑属性,并使用常规get( TCPIP )或特定的get命令查看它们:

代码语言:javascript
复制
outBuffer = get( TCPIP, 'OutputBuffer' );

用点索引做得更简单

代码语言:javascript
复制
outBuffer = TCPIP.OutputBuffer;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54424217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档