Не удается отправить данные на последовательный порт - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь отправить данные в 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 запускается и возвращается к началу цикла.

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

...