Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion

Remote display

dave1707dave1707 Mod
in Code Sharing Posts: 9,725

I don’t know if this will be useful to anyone, but I had fun writing it. This was stripped from my other programs. One that sends projects from one iPad to another and my TRON like game that’s played on 2 iPads communicating with each other.

The purpose of this program is to allow you to send debug info to another device on the same router. You can run your program on one device and send print statements or variable values to another device. You can run your code in fullscreen and see the info print on the other device. This program does simple print statements, but could probably be expanded to display more complex info as text on the screen. The text display could be scrolled if a lot of information is shown.

To see how this works, load this code on 2 devices on the same router. On the primary device, uncomment the 2 sections to demo sending information to the secondary. When you run both programs, they will get their IP address and the IP address of the other device. On the primary, move your finger around the screen. You’ll see the x,y values printing on the secondary device. Also, you see a draw count of a variable print on the secondary. This can be added to other code to print information about the running program.

Like I said, I don’t know if this is useful, but I had fun writing it.

viewer.mode=STANDARD function setup() b,e,cnt=0,0,0 sh=remoteDisplay() end function draw() background(0) --[[ cnt=cnt+1 if cnt%60==0 then sh:sendMessage("draw count "..cnt) end --]] sh:draw() end function touched(t) --[[ if t.state==BEGAN then b=b+1 sh:sendMessage("BEGAN count "..b) end if t.state==CHANGED then sh:sendMessage("x= "..t.x.." y= "..t.y) end if t.state==ENDED then e=e+1 sh:sendMessage("ENDED count "..e) end --]] end remoteDisplay=class() function remoteDisplay:init() self.socket=require("socket") self.theirIp="" self:getMyIp() self:setMySocket() self:setTheirSocket() self:getTheirIp() end function remoteDisplay:draw() self:receiveTheirMessage() fill(255) text("My IP "..self.myIp,WIDTH/2-100,HEIGHT-25) text("Their IP "..self.theirIp,WIDTH/2+100,HEIGHT-25) end function remoteDisplay:setMySocket() self.server=self.socket.udp() self.server:setsockname(self.myIp,5544) self.server:settimeout(0) end function remoteDisplay:setTheirSocket() self.client=self.socket.udp() self.client:settimeout(0) end function remoteDisplay:getMyIp() self.server=self.socket.udp() self.server:setpeername("",80) self.myIp,self.myPort=self.server:getsockname() self.ip1,self.ip2=string.match(self.myIp,"(%d+.%d+.%d+.)(%d+)") end function remoteDisplay:getTheirIp() self.client=self.socket.udp() self.client:settimeout(0) -- send a message to everyone on this network except to myself for z=1,255 do if z~=tonumber(self.ip2) then self.client:setpeername(self.ip1..z,5544) self.client:send("get their ip") end end end function remoteDisplay:receiveTheirMessage() local data,msg,port=self.server:receivefrom() if data~=nil then self.theirIp=msg if data=="get their ip" then self.client=self.socket.udp() self.client:settimeout(0) self.client:setpeername(msg,5544) self.client:send("got their ip"..self.myIp) elseif string.sub(data,1,12)=="got their ip" then self.theirIp=msg else print(data) end end end function remoteDisplay:sendMessage(tempStr) self.client = self.socket.udp() self.client:setpeername(self.theirIp,5544) self.client:settimeout(0) self.client:send(tempStr) end


Sign In or Register to comment.