#!/usr/bin/env ruby if ARGV.size < 2 then puts "Usage #{__FILE__} ez_in0 ez_in1" exit end preamble = '' open(ARGV[0]).each{|line| if line =~ /^Target device is/ then preamble += 'Target device is 0+1.' break end preamble += line } ez0_A = [] ez0_G = [] line_no = 0 open(ARGV.shift).each{|line| line.chop! if line =~ /^A/ then ez0_A << ((line.split(/\s+/))[1..-1]).collect{|v| v.to_i} elsif line =~ /^G/ then ez0_G << ((line.split(/\s+/))[1..-1]).collect{|v| v.to_f} end #if (line_no += 1) > 2000 then break end } ez1_A = [] ez1_G = [] line_no = 0 open(ARGV.shift).each{|line| line.chop! if line =~ /^A/ then ez1_A << ((line.split(/\s+/))[1..-1]).collect{|v| v.to_i} elsif line =~ /^G/ then ez1_G << ((line.split(/\s+/))[1..-1]).collect{|v| v.to_f} end #if (line_no += 1) > 2000 then break end } puts preamble ez0_A.each_with_index{|packet_a0, i| begin #p "0 #{packet_a0[0]} 1 #{(ez1_A.first)[0]} #{packet_a0[0] == (ez1_A.first)[0]}" while packet_a0[0] > (ez1_A.first)[0] ez1_A.shift end if packet_a0[0] == (ez1_A.first)[0] then printf("A %10d", packet_a0[0]) #p ez1_A.first packet_a = [packet_a0[1..-1], (ez1_A.shift)[1..-1]] [ [0, 0], [0, 1], [0, 2], # 加速度(LIS3L02AS4) [1, 0], [1, 1], [1, 2], # ジャイロ(CRS03) [0, 6], [0, 7] ].each{|packet, j| printf(" %8s", packet_a[packet][j]) } puts end rescue end gps_packet = nil #p "#{ez0_A[i+1][0]} #{(ez0_G.first)[0]} #{(ez1_G.first)[0]}" begin if (ez1_G.first)[0] < ez0_A[i+1][0] then gps_packet = ez1_G.shift end if (ez0_G.first)[0] < ez0_A[i+1][0] then gps_packet = ez0_G.shift end rescue end if gps_packet then printf('G %10d', gps_packet[0]) gps_packet[1..-1].each{|param| printf('%12f', param)} puts end }