我正在尝试通过串行端口将数据发送到Arduino。这是我的Ruby代码:
sp = SerialPort.new("COM4",115200,8,1)
sp.sync = true
framing_array = [0x0, 0x33, 0x0, 0x0, 0x01, 0x02, 0x03, 0x04, 0x25]
framing_array.each do|command|
sp.syswrite(command)
sp.flush()
end
puts "data has sended"
read_data =""
"in first loop"
loop do
puts "in second loop"
read_data_temp = sp.read(1)
puts "data is readed"
puts "Temp data: #{read_data_temp}"
if read_data_temp == nil
read_data_temp.to_s
puts "comes nil"
break
else
read_data = read_data + read_data_temp
read_data_hex = read_data
puts "read_data: #{read_data_hex}"
end
end
puts "Exiting..."
exit
我的Arduino代码是:
int incomingByte;
void setup() {
Serial.begin(115200);
}
void loop() {
// send data only when arduino receives data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
Serial.print("He sends me this");
Serial.print(incomingByte);
}
}
我无法发送数据。当我尝试不发送而读取数据时,Arduino可以通过串行端口发送数据,并且可以在终端中显示它。但是,当我尝试发送和读取数据时,它什么也不显示。 Arduino发送nil
,然后elsif blog
运行并返回到循环的开始。
编辑:我问我的朋友,他说我是因为超时。可以解决超时问题吗?如果可以,如何正确设置超时时间? 有解决这个问题的主意吗?