Я пытаюсь запустить беговую дорожку с помощью последовательного порта, я смог сделать это с помощью Matlab, но у меня есть несколько проб, когда я портировал один и тот же код на C#. Я уверен, что порт открыт, возможно, что-то не так с форматом сообщений. Было бы здорово, если кто-то может сказать мне, какую ошибку я делаю. Ниже приведен код Matlab (который работает) и код C# (который не работает).C# Передача сообщения через serialport
MATLAB КОД:
ctr = char(12); %control character
rel = char(169); %release
set_speed = char(163);
set_dir = char (184);
%initializing the ports
R = serial('COM4');
set(R, 'BaudRate', 4800, 'Parity', 'none', 'DataBits', 8, 'StopBits', 1, 'Terminator', 'CR');
set(R, 'InputBufferSize', 128, 'OutputBufferSize', 128);
fopen(R);
if R.status == 'open'
fprintf(R, [rel ctr]);
disp('port for R belt open and released');
else
disp('error with R port-- COM3');
end;
%initial direction to FORWARD
fprintf(R, [set_dir '0' char(12)]);
%set speed to
fprintf(R, [set_speed '0005' ctr]);
Моей C# версии кода MatLab выше
char ctr = (char)12;
char rel = (char)169; //release
char set_speed = (char)163;
char set_dir = (char)184;
void Start() {
try{
SerialPort R = new SerialPort();
R.BaudRate = 4800;
R.Parity = Parity.None;
R.DataBits = 8;
R.StopBits = StopBits.One;
R.ReadBufferSize = 128;
R.WriteBufferSize = 128;
R.Open();
if(R.IsOpen){
//Release
R.Write(rel+""+ctr);
print ("Serial port is open");
}
else print ("Serial port is close");
R.Write(set_dir+""+"0"+""+ctr);
R.Write(set_speed+""+"0005"+""+ctr);
}
catch(UnityException e){
print ("Exception");
print (e);
}
}
Есть сообщения об ошибке? Что означает «это не работает»? –
Кроме того, что такое «печать»? Если вы пытаетесь записать в консоль, используйте Console.WriteLine(). –
По крайней мере, добавьте сообщение об ошибке или описание того, что не работает ... – Kris