我想在类中创建一个TCPIP对象。我有一些问题要想办法解决。
首先,我将展示一个工作代码片段:
>> %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 (就像前面解释的那样)。
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类才能使用类方法。
我仍然有一种感觉,我仍然在做一些错误的事情,因为缺少视觉效果。
发布于 2019-02-01 12:35:33
我认为这只是缺乏对命令窗口中显示的内容的理解--它不是对象的所有属性,有时只是一个子集。如果在命令窗口中键入get( TCPIP ),您将看到包括OutputBufferSize在内的所有属性。类似地,t = tcp_test; get( t.TCPIP )将显示相同的属性。
通过在命令窗口中键入edit tcpip,您可以看到tcpip类具有以下属性:
properties(Hidden, SetAccess = 'public', GetAccess = 'public')
icinterface
end 它继承于不可编辑的instrument类,并且具有其他我们看不到定义的属性。
这里最重要的是Hidden属性。来自文档
MATLAB不会在命令窗口中显示具有受保护或私有GetAccess的属性的名称和值,也不会显示隐藏属性为真的属性。
这就是为什么您看不到工作区中的属性。但是,您可以自由编辑属性,并使用常规get( TCPIP )或特定的get命令查看它们:
outBuffer = get( TCPIP, 'OutputBuffer' );用点索引做得更简单
outBuffer = TCPIP.OutputBuffer;https://stackoverflow.com/questions/54424217
复制相似问题