ELV RFID Reader

HAllo,

ich habe mich in der vergangenheit mal daran gemacht und einen ELV RFID Reader eingebunden. Ich hänge das script mal an fals jemand das auch gebrauchen kann. Es ist nicht perfekt aber hinreichend.

Den Reader per HID device einbinden.

Das Script mit methoden für den Reader

<?
   $HID_ID = 11813 /*[HID für ELV RFID Reader]*/  ;

	// Ein paar testmetoden
	//print_r(RFID_get_firmware_version($HID_ID));
	//print_r(RFID_switch_green_led_on($HID_ID,1000));

	function RFID_get_firmware_version()
	{
		global $HID_ID;
		return HID_SendEvent($HID_ID, 1, chr(0x01).chr(0xF0).chr(0xC8).chr(0x00));
	}

	function RFID_switch_red_led_on($duration)
	{
		global $HID_ID;
		return HID_SendEvent($HID_ID, 1, chr(0x02).chr(0xF1).chr($duration).chr(0x00));
	}

	function RFID_switch_green_led_on($duration)
	{
		global $HID_ID;
		return HID_SendEvent($HID_ID, 1, chr(0x02).chr(0xF2).chr(($duration/10)).chr(0x00));
	}

	function RFID_beep($duration)
	{
		global $HID_ID;
		return HID_SendEvent($HID_ID, 1, chr(0x02).chr(0xF3).chr($duration).chr(0x00));
	}

	function RFID_repeat_last_rfid_code()
	{
		global $HID_ID;
		return HID_SendEvent($HID_ID, 1, chr(0x01).chr(0xF4).chr(0x00).chr(0x00));
	}
?>

Und hier noch ein Skript zum empfangen - einfach als Zielskript einer registerd variable anlegen.

<?
	$RFID_ID_Variable_ID = 42400 /*[RFID Lesegerät\RFID ID]*/  ;
	$RFID_Firmwareversion_ID = 55330 /*[RFID Lesegerät\Lesegerät Firmwareversion]*/  ;
	$RFID_Befehl_erfolgreich_ID = 10595 /*[RFID Lesegerät\Befehl erfolgreich]*/  ;
	$daten = $IPS_VALUE;

	// das Methoden skript
	include "32963.ips.php";

	$HID_Report_ID 					= ord($daten[0]);
	$Anzahl_nachfolgender_Bytes 	= ord($daten[1]);
	$Antwort_ID 						= ord($daten[2]);
	$Bedeutung_der_Antwort_ID 		= ord($daten[4]);
	$Datenbyte_1 						= ord($daten[5]);
	$Datenbyte_2 						= ord($daten[6]);
	$Datenbyte_3 						= ord($daten[7]);
	$Datenbyte_4 						= ord($daten[8]);
	$Datenbyte_5 						= ord($daten[9]);

	// Die Antwort analysieren
	switch($Bedeutung_der_Antwort_ID)
	{
	case 0:
		IPS_LogMessage("RFID Antwort", "PC-Anweisung (LED/Piepston kurz einschalten) wurde erfolgreich ausgeführt");
	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, true);
	   break;
	case 1:
		IPS_LogMessage("RFID Antwort", "die Versionsnummer der USB-RFID-Firmware steht im nachfolgenden Byte");
		SetValueInteger($RFID_Firmwareversion_ID, $Datenbyte_1);
	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, true);
	   break;
	case 2:
		IPS_LogMessage("RFID Antwort", "Unbekannte Befehls-ID (die gültigen Befehls-IDs stehen in Tabelle 2)");
	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, false);
		break;
	case 3:
		IPS_LogMessage("RFID Antwort", "Falsch angegebene Befehlslänge (falscher Wert für Byte-Anzahl)");
	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, false);
	   break;
	case 4:
		IPS_LogMessage("RFID Antwort", "In den nachfolgenden 5 Byte steht der zuletzt empfangene RFID-Code");
	$RFID = str_pad(dechex(ord($daten[5])), 2 ,'0', STR_PAD_LEFT) .str_pad(dechex(ord($daten[6])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[7])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[8])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[9])), 2 ,'0', STR_PAD_LEFT);
   SetValueString(16626 /*[RFID Lesegerät\RFID]*/ , $RFID);

	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, true);
	   break;
	case 5:
		IPS_LogMessage("RFID Antwort", "In den nachfolgenden 5 Byte steht ein gerade neu eingelesener RFID-Code");
		$RFID_Code = $Datenbyte_1 . "." . $Datenbyte_2 . "." . $Datenbyte_3 . "." . $Datenbyte_4 . "." . $Datenbyte_5;

	$RFID = str_pad(dechex(ord($daten[5])), 2 ,'0', STR_PAD_LEFT) .str_pad(dechex(ord($daten[6])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[7])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[8])), 2 ,'0', STR_PAD_LEFT) . str_pad(dechex(ord($daten[9])), 2 ,'0', STR_PAD_LEFT);
   SetValueString(16626 /*[RFID Lesegerät\RFID]*/ , $RFID);

		SetValueString($RFID_ID_Variable_ID, $RFID_Code);
	   SetValueBoolean($RFID_Befehl_erfolgreich_ID, true);
	   break;
	}


function antwortwerte_loggen($daten)
{
	IPS_LogMessage("RFID Antwort", "Byte 1: " . ord($daten[0]));
	IPS_LogMessage("RFID Antwort", "Byte 2: " . ord($daten[1]));
	IPS_LogMessage("RFID Antwort", "Byte 3: " . ord($daten[2]));
	IPS_LogMessage("RFID Antwort", "Byte 4: " . ord($daten[3]));
	IPS_LogMessage("RFID Antwort", "Byte 5: " . ord($daten[4]));
	IPS_LogMessage("RFID Antwort", "Byte 6: " . ord($daten[5]));
	IPS_LogMessage("RFID Antwort", "Byte 7: " . ord($daten[6]));
	IPS_LogMessage("RFID Antwort", "Byte 8: " . ord($daten[7]));
	IPS_LogMessage("RFID Antwort", "Byte 9: " . ord($daten[8]));
	IPS_LogMessage("RFID Antwort", "Byte 10: " . ord($daten[9]));
}

?>