Matlab のコードを使用してシリアル ポートに書き込もうとしています。ただし、最初に試したすべての結果がエラーメッセージになり、Matlab はポートにアクセスできないと判断します。
私が使用しているmatlabコードは次のとおりです。
function test()
TIMEOUT = 5; %time to wait for data before aborting
XPOINTS = 50; %number of points along x axis
%create serial object to represent connection to mbed
mbed = serial('COM18','BaudRate', 9600, 'DataBits', 8); %change depending on mbed configuration
%set(mbed,'Timeout',TIMEOUT); %adjust timeout to ensure fast response when mbed disconnected
fopen(mbed); %open serial connection
input = 1;
fprintf(mbed, input);
x=0;
while (x == 0)
values = fscanf(mbed, '%d');
disp(values);
end
fclose(mbed);
end
表示されるエラーメッセージは
Error using serial/fprintf (line 144)
Error: An error occurred during writing.
Error in test (line 14)
fprintf(mbed, input);
私の主な問題は、オンラインで見つけることができるすべてのものから、 fprintf コマンドが機能するはずだと言っているように見えることです。ラインもやってみた
fwrite(mbed, input);
基本的に同じエラーメッセージが表示されます。
これを一度試してみると、次に受け取るエラーメッセージは次のとおりです。
Error using serial/fopen (line 72)
Open failed: Port: COM18 is not available. Available ports: COM1.
Use INSTRFIND to determine if other instrument objects are connected to the requested device.
Error in test (line 12)
fopen(mbed); %open serial connection
これは、プログラムを保存してからまったく同じプログラムを開くことによってのみ修正できるようです。mbed は、試行時に確実に正しい COM ポートに接続されています。
私の質問は、fprintf 行のどこが間違っているのでしょうか? それは、シリアル ポートまたは mbed と通信する正しい方法ですか?