Her er lige lidt nørderi.

På mit job har jeg udviklet følgende Java kode, som kommunikerer med et Projekter tilsluttet et lokalt netværk. Da der ikke var andet tilsvarende at finde på nettet, har jeg hermed valgt at tilgængelig gøre koden her på nettet.

* Remember to update line “pjLinkSocket = new Socket(”172.20.X.X”, 4352);” with the correct IP-Address
* Only works on Projector without Password. Haven’t implemented the md5 authentication.

package pjLink;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import pjLink.Projector.*;

/**
 * @author Nicolai Bob Zachariassen
 * @year 2009
 * Application to turn power on / off of a projector using PJLink protocol
 */
public class PjLinkCom {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Projector projector = new Projector();

		for (String s: args) {
			// Turn power on
			if (s.equals("on") && projector.POWR == PowerState.undefined){
				projector.POWR = PowerState.on;
				System.out.println("Turning Power On");
			}

			// Turn power off
			if (s.equals("off") && projector.POWR == PowerState.undefined){
				projector.POWR = PowerState.off;
				System.out.println("Turning Power Off");
			}

			// Switch Input to: rgb1
			if (s.equals("rgb1") && projector.INPT == InputState.undefined){
				projector.INPT = InputState.rgb1;
				System.out.println("Switching Input to RGB1");
			}
			// Switch Input to: rgb2
			if (s.equals("rgb2") && projector.INPT == InputState.undefined){
				projector.INPT = InputState.rgb1;
				System.out.println("Switching Input to RGB2");
			}
			// Switch Input to: video
			if (s.equals("video") && projector.INPT == InputState.undefined){
				projector.INPT = InputState.rgb1;
				System.out.println("Switching Input to VIDEO");
			}
			// Switch Input to: svideo
			if (s.equals("svideo") && projector.INPT == InputState.undefined){
				projector.INPT = InputState.rgb1;
				System.out.println("Switching Input to S-VIDEO");
			}
			// Switch Input to: dvi
			if (s.equals("dvi") && projector.INPT == InputState.undefined){
				projector.INPT = InputState.rgb1;
				System.out.println("Switching Input to DVI-D");
			}
        }

		Socket pjLinkSocket;
		try {
			System.out.println("Opening connection");
			pjLinkSocket = new Socket("172.20.X.X", 4352);

            DataOutputStream ostream = new DataOutputStream(pjLinkSocket.getOutputStream());
	        BufferedReader istream = new BufferedReader(new InputStreamReader(pjLinkSocket.getInputStream()));			

	        System.out.println(istream.readLine());

	        if (projector.INPT == InputState.undefined && projector.POWR == PowerState.undefined){
    	        System.out.println("\n\nSyntax:\n");
    	        System.out.println("\tTurn on/off projector: java pjLink.PjLinkCom on|off");
    	        System.out.println("\tSwitch input on projector: java pjLink.PjLinkCom rgb1|rgb2|video|svideo|dvi");
    	        System.out.println("\n\tExample: java pjLink.PjLinkCom on rgb2");
    		}

    		if (projector.INPT == InputState.undefined){
    	        ostream.writeBytes("%1INPT ?\r");
    	        System.out.println(istream.readLine());
    		}else if (projector.INPT == InputState.rgb1){
	        	ostream.writeBytes("%1INPT 11\r");
    		}else if (projector.INPT == InputState.rgb2){
	        	ostream.writeBytes("%1INPT 12\r");
    		}else if (projector.INPT == InputState.video){
	        	ostream.writeBytes("%1INPT 21\r");
    		}else if (projector.INPT == InputState.svideo){
	        	ostream.writeBytes("%1INPT 22\r");
    		}else if (projector.INPT == InputState.dvi){
	        	ostream.writeBytes("%1INPT 31\r");
    		}

    		if (projector.POWR == PowerState.undefined){
    	        ostream.writeBytes("%1POWR ?\r");
    	        System.out.println(istream.readLine());
    		}else if (projector.POWR == PowerState.on){
    	        ostream.writeBytes("%1POWR 1\r");
    		}else if (projector.POWR == PowerState.off){
    	        ostream.writeBytes("%1POWR 0\r");
    		}

            ostream.close();
            istream.close();
            pjLinkSocket.close();

		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
package pjLink;

public class Projector {
	protected enum PowerState{
		on, off, undefined
	}
	protected enum InputState{
		rgb1, rgb2, video, svideo, dvi, undefined
	}
	protected PowerState POWR;
	protected InputState INPT;

	Projector(){
		POWR = PowerState.undefined;
		INPT = InputState.undefined;
	}

}

Kan du bruge det, så god fornøjelse :-)