Я пытаюсь отправить данные в 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
запускается и возвращается к началу цикла.
Редактирование: Я спросил своего друга, и он сказал мне, что это может быть из-за тайм-аута. Может ли тайм-аут быть моим решением? Если это так, как я могу правильно установить время ожидания?
Любая идея, чтобы решить вопрос?