我试图运行使用串口的跑步机,但我能够使用matlab做到这一点,但是当我将相同的代码移植到C#时,我遇到了一些问题。我确信端口是开放的,可能是信息格式有问题。如果有人能告诉我我正在犯什么错误,那将会很棒。下面给出了matlab代码(工作原理)和C#代码(不起作用)。C#通过串口传递消息
MATLAB代码: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#版本以上
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);
}
}
是否有错误讯息? “它不工作”是什么意思? – 2014-09-03 20:46:51
另外,什么是“打印”?如果您尝试写入控制台,请使用Console.WriteLine()。 – 2014-09-03 20:47:45
至少添加错误消息或任何不工作的描述... – Kris 2014-09-03 20:49:12