Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- #TODO check current network?
- require "socket"
- sock = UDPSocket.open
- #TODO broadcast ??
- sock.setsockopt(
- Socket::SOL_SOCKET,
- Socket::SO_BROADCAST,
- 1
- )
- IP = '10.10.100.254'
- PORT = '48899'
- #TODO same socket ??
- def sock.command msg
- self.send msg, 0, IP, PORT
- end
- #TODO wait responses
- t1 = Thread.new do
- #%x[ruby upd_server.rb]
- puts '-- receive response: WSCAN ....'
- rsock = UDPSocket.new
- RECEIVE_IP = "0.0.0.0"
- rsock.bind(RECEIVE_IP, PORT)
- #wlans = []
- string = nil
- sel = IO::select([rsock])
- if sel != nil
- sel[0].each do |s|
- data = s.recvfrom_nonblock(65535)
- string = data[0].chomp!
- #ip, port = data[1][3].to_s, data[1][1].to_i
- #puts "Server > %-15s:%5d '%s'" % [ip, port, string]
- #wlans = string.split "\n"
- end
- else
- puts '-- not received ....'
- exit
- end
- rsock.close
- #wlans
- string.gsub(/\+ok=\n/, '')
- end
- sleep 1
- puts '-- send command: WSCAN ....'
- sock.command "Link_Wi-Fi"
- sock.command "+ok"
- sock.command "AT+WSCAN\r"
- puts '-- sent command ------------'
- #puts '-- receive response: WSCAN ....'
- #sel = IO::select([sock])
- #if sel.nil?
- # sel[0].each do |s|
- # data = s.recvfrom_nonblock(65535)
- # string = data[0].chomp!
- # ip, port = data[1][3].to_s, data[1][1].to_i
- # puts "Server > %-15s:%5d '%s'" % [ip, port, string]
- # wlans = string.split "\n"
- # end
- #else
- # puts '-- not received ....'
- # exit
- #end
- t1.join
- require 'csv'
- wlans = t1.value.split "\n"
- wlans.shift
- #wlans.each do |line|
- ssids = wlans.map do |line|
- #ch, ssid, bssid, sec, siganl, ext, nt, wps, dpid = line.split(',')
- ch, ssid, _, sec, _ = line.split(',')
- if ssid
- {ch: ch, ssid: ssid, sec: sec}
- end
- end.compact
- #sock.command "Link_Wi-Fi"
- #sock.command "+ok"
- #sock.command "AT+WSCAN\r"
- ssids.each.with_index do |s, idx|
- puts "[#{'%3d' % idx}] #{s[:ch]}:'#{s[:ssid]}' (#{s[:sec]})"
- end
- # TODO: choice ssid
- sock.command "AT+WSSSID=becofy-g-24g\r"
- sock.command "AT+WSKEY=WPA2PSK,AES,Asa0211manzoku\r"
- sock.command "AT+WMODE=STA\r"
- sock.command "AT+Z\r"
- sock.command "AT+Q\r"
- #p ssids
- #sock.send "Link_Wi-Fi", 0, '10.10.100.255', 48899
- #sock.send "+ok", 0, '10.10.100.254', 48899
- #sock.send "AT+WSCAN\r", 0, '10.10.100.254', 48899
- # サーバからの情報を受け取り表示するスレッドを作成
- #thread = Thread.new {
- # while true
- # # sockに出力が来るのを5秒待つ。
- # # 来なかったらnilを返す。
- # sel = IO::select([sock], nil, nil, 5)
- # if sel != nil
- # sel[0].each{|s|
- # data = s.recvfrom_nonblock(65535)
- # puts data[0].chomp!
- # }
- # end
- # end
- #}
- #
- ## サーバに情報を送信するループ
- #while true
- # string = STDIN.gets.chomp!
- # sock.send(sprintf("%-5s> %s\n", NAME, string), 0, SERVERIP, SERVERPORT)
- #end
- sock.close
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement