我試圖運行使用串口的跑步機,但我能夠使用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