#!/usr/bin/env ruby # encoding: utf-8 # ruby: 2.2 require 'serialport' require './telegram' @serial = SerialPort.open("/dev/ttyACM0",{ baud: 115200, databits: 8, parity: SerialPort::ODD, stop_bit: 1, flow_control: SerialPort::NONE}) @serial.dtr = 1 =begin # start queries [0,1,6,8,9,19,71,2,3,4,38,39,50,51,54,71,72].each do |query| telegram = Telegram.new(query) puts telegram @serial.write(telegram.pack) data = @serial.readpartial(16+1+5) if data and !data.empty? then telegram = Telegram.parse(data) puts telegram else puts "empty" end end =end 256.times do |object| telegram = Telegram.new(object) @serial.write(telegram.pack) data = @serial.readpartial(16+1+5) if data and !data.empty? then #puts data.unpack("C*").collect { |b| sprintf("%02X ",b) }.join telegram = Telegram.parse(data) if telegram.object==0xff and telegram.data[0]!=0x07 then puts "#{object}: #{telegram.to_s}" end else puts "empty" end end