summaryrefslogtreecommitdiff
path: root/src/gps_test.rb
blob: 8f6411231f44d9a28ed5c3476874856b785cc17e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env ruby1.8

require 'socket'

GPS_SERVER_IP = "192.168.2.1"
GPS_SERVER_PORT = 5445
MODE = :tcp_server
#MODE = :tcp_client
#MODE = :udp_server
#MODE = :serial

def tcp_read(sock)
  loop {
    begin
      data = sock.readline()
      p data
    rescue Errno::EAGAIN, Errno::EWOULDBLOCK => e
      puts "read error: #{e.class}: #{e}"
      return
    end
  }
end

def udp_read(sock)
  loop {
    begin
      msg, sender = sock.recvfrom(1024)
      p msg
    rescue Errno::EAGAIN, Errno::EWOULDBLOCK => e
      puts "recvfrom error: #{e.class}: #{e}"
      next
    end
  }
end

if MODE == :tcp_client
  sock = TCPSocket.new(GPS_SERVER_IP, GPS_SERVER_PORT)
  tcp_read(sock)
  sock.close
elsif MODE == :tcp_server
  serv = TCPServer.new(GPS_SERVER_PORT)
  sock = serv.accept
  tcp_read(sock)
  sock.close
elsif MODE == :udp_server
  sock = UDPSocket.new
  sock.bind('0.0.0.0', GPS_SERVER_PORT)
  udp_read(sock)
  sock.close
end