クラス内に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
ご覧のとおり、Buffersize変更のコマンドライン出力は表示されていません。これを正しく視覚化することはできませんが、説明しようとしています。TCPIPオブジェクトを作成した後、MatlabはTCPIP
値を使用して変数を作成します1x1 tcpip
。この値をダブルクリックすると、を含むオブジェクトのすべてのプロパティが表示されますoutputBuffersize
。
次に、クラスでの実装の最初の試みを示します。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クラスを継承する必要があると思いました。
視覚化が欠けているため、私はまだ何か間違ったことをしているような気がします。
これは、コマンドウィンドウに表示される内容を理解していないだけだと思います。オブジェクトのすべてのプロパティではなく、サブセットにすぎない場合もあります。あなたが入力するとget( TCPIP )
、コマンド・ウィンドウには、すべてのプロパティが表示されますを含みますOutputBufferSize
。同様に、t = tcp_test; get( t.TCPIP )
同じプロパティが表示されます。
edit tcpip
コマンドウィンドウに入力すると、tcpip
クラスに次のプロパティがあることがわかります。
properties(Hidden, SetAccess = 'public', GetAccess = 'public')
icinterface
end
instrument
編集できないクラスを継承し、定義が表示されない他のプロパティがあります。
ここで重要なのはHidden
属性です。ドキュメントから:
MATLABは、保護されたGetAccessまたはプライベートなGetAccessを持つプロパティ、またはHidden属性がtrueであるプロパティの名前と値をコマンドウィンドウに表示しません。
あなたがすることができない理由はここにある参照ワークスペースのプロパティを。ただし、プロパティを自由に編集して、一般get( TCPIP )
的なget
コマンドまたは特定のコマンドを使用して表示することができます。
outBuffer = get( TCPIP, 'OutputBuffer' );
ドットインデックスを使用すると、より簡単に実行できます
outBuffer = TCPIP.OutputBuffer;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加