IrDA


Die PSP hat ja bekanntlich auch einen Infrarotport. Und mit dem kann man auch so allerhand Sachen anstellen. Was damit alles möglich ist zeigt IrDA Games von alex705 (http://www.rabbitcoder.de). Man kann spannende Multiplayerspiele erstellen, oder auch multifunktionale Homebrews. Und es ist sogar ziemlich einfach. Zu beachten ist lediglich, dass die IrDA-Funktionen vom jeweiligen LuaPlayer abhängen. Dies hier sind die IrDA-Funktionen des LuaPlayer Mod4 von Cools.

Zuallererst muss einmal das Ir-Modul aktiviert werden:

	System.irdaInit()
	

Da das Modul nun aktiviert ist, kann man auch sofort loslegen. Man kann z.B. Signale von anderen Geräten, wie z.B. Fernbedienungen empfangen, oder auch mit anderen PSPs kommunizieren.

Arbeiten mit Fremdgeräten(z.B. Fernbedienung): Die PSP muss Signale vom Fremdgerät bekommen. Falls dann ein Signal kommt, kann man dann mittels if-Blöcken die Aktionen Regeln. Ein kleines Codebeispiel:

	color=Color.new(255,255,255)
	add = 0
	
	System.irdaInit()
	
	while true do
		remote = System.irdaRead()
		remotelength = string.len(remote)
		
		screen:print(0,0,add,color)
		
		if remotelength>1 then
			add = add+1
		end
		
		screen.flip()
		screen.waitVblankStart()
	end
	

Zuerst wird das Ir-Modul initialisiert und wir legen unsere Variablen fest. Im Mainloop wird der Ir-Port dann ständig überwacht bzw eingelesen. Somit wartet er auf Signale. Gleichzeitig ermittelt eine andere Variable die Länge der mit dem Signal übermittelten Zeichenkette. Wenn die Zeichenkette aus mehr als 1 Zeichen besteht, wird die Variable "add" vergrößert. Und "add" geben wir auf dem Bildschirm aus. Somit wird bei jedem Tastendruck auf der Fernbedienung "add" vergrößert.

Arbeiten mit anderen PSPs: Das läuft auch nicht viel anders ab als mit einer Fernbedienung. Es ist genau das selbe Schema, nur muss eine andere PSP ein Signal senden. Dafür gibt es auch einen ganz simplen Befehl. Die Signale kann man auch wieder mittels if-Blöcke auswerten:

	color=Color.new(255,255,255)
	add = 0System.irdaInit()
	
	while true do
		pad=Controls.read()
		remote = System.irdaRead()
		remotelength = string.len(remote)
		
		screen:print(0,0,add,color)
		
		if pad:cross() then
			System.irdaWrite("hallo")
		end
		
		if remotelength>0 then
			add = add+1
		end
		
		screen.flip()
		screen.waitVblankStart()
	end
	

Hierbei wird exakt dasselbe Ergebnis wie bei den Fernbedienungen erzeugt. Ihr seht schon, die Verwendung des Ir-Ports ist wirklich sehr einfach.