implement answers
This commit is contained in:
parent
146ce311ee
commit
73b6dc6c53
|
@ -4,6 +4,9 @@
|
||||||
require 'serialport'
|
require 'serialport'
|
||||||
require './telegram'
|
require './telegram'
|
||||||
|
|
||||||
|
# print debug info
|
||||||
|
DEBUG = true
|
||||||
|
# connect to PC
|
||||||
pc_serial = SerialPort.open("/dev/ttyUSB0",{ baud: 57600, databits: 8, parity: SerialPort::ODD, stop_bit: 1, flow_control: SerialPort::NONE})
|
pc_serial = SerialPort.open("/dev/ttyUSB0",{ baud: 57600, databits: 8, parity: SerialPort::ODD, stop_bit: 1, flow_control: SerialPort::NONE})
|
||||||
|
|
||||||
# ensure serial settings (weird bug)
|
# ensure serial settings (weird bug)
|
||||||
|
@ -16,14 +19,31 @@ while true
|
||||||
data = activity.readpartial(16+1+5)
|
data = activity.readpartial(16+1+5)
|
||||||
line = data.unpack("C*").collect { |b| sprintf("%02X ",b) }.join
|
line = data.unpack("C*").collect { |b| sprintf("%02X ",b) }.join
|
||||||
if activity==pc_serial then
|
if activity==pc_serial then
|
||||||
puts "> "+line
|
puts "> "+line if DEBUG
|
||||||
begin
|
begin
|
||||||
telegram = Telegram.parse(data)
|
telegram_in = Telegram.parse(data)
|
||||||
if telegram then
|
if telegram_in then
|
||||||
puts "> "+telegram.to_s[2..-1]
|
puts "> "+telegram_in.to_s[2..-1]
|
||||||
else
|
else
|
||||||
raise "could not parse message"
|
raise "could not parse message"
|
||||||
end
|
end
|
||||||
|
telegram_out = case telegram_in.object
|
||||||
|
when 0 # device type
|
||||||
|
# Telegram.new(telegram_in.object,[0x50,0x53,0x20,0x32,0x30,0x38,0x34,0x2D,0x30,0x33,0x42,0x00])
|
||||||
|
Telegram.new(telegram_in.object,"simulator".bytes.to_a+[0x00],false)
|
||||||
|
when 1, 6, 9 # article no., serial no., software version
|
||||||
|
Telegram.new(telegram_in.object,"42".bytes.to_a+[0x00],false)
|
||||||
|
when 2,3,4 # nominal voltage, current, power
|
||||||
|
Telegram.new(telegram_in.object,[42.0].pack("g").bytes.to_a,false)
|
||||||
|
when 19 # device class
|
||||||
|
Telegram.new(telegram_in.object,[0x00,0x10],false)
|
||||||
|
else # error: object not defined
|
||||||
|
Telegram.new(0xff,[0x07],false)
|
||||||
|
end
|
||||||
|
if telegram_out then
|
||||||
|
puts "< "+telegram_out.to_s[2..-1] # display message
|
||||||
|
pc_serial.write(telegram_out.pack) # send message
|
||||||
|
end
|
||||||
rescue Exception => e
|
rescue Exception => e
|
||||||
puts e.to_s
|
puts e.to_s
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue