Sogliphy, I'll try it!
For the ones trying to parse a Denon DVD here's my debug code (not tidy yet, and two bugs, no track info with SACD, DSD always gives highest available channels instead of current selected, both are probably bugs in Denon's protocol):
var extender1 = CF.extender[1];
if( extender1 == null )
{
Diagnostics.log("Extender 1 is not defined");
}
else
{
var rs232port1 = extender1.serial[0];
var rs232port2 = extender1.serial[1];
if( rs232port1 == null )
{
Diagnostics.log("Extender 1 is not a serial extender");
}
else
{
rs232port2.bitrate = 9600;
rs232port2.databits = 8;
rs232port2.parity = 2; // Even
rs232port2.stopbits = 1;
var varReturn = rs232port2.match("\x02\x30\x00\x00\x00\x00\x03\x33\x33","\x03",250);
var varReply = varReturn.substr(1,1)
var varAnswer = varReturn.substr(2,1)
var varDiscType = varReturn.substr(3,1)
switch(varDiscType) {
case "1":
varDiscType = "DVD Video";
break;
case "2":
varDiscType = "DVD Audio";
break;
case "3":
varDiscType = "VCD";
break;
case "4":
varDiscType = "CD-DA";
break;
case "5":
varDiscType = "MP3";
break;
case "6":
varDiscType = "?";
break;
case "7":
varDiscType = "SACD";
break;
}
var varAudioFormat = varReturn.substr(4,1)
switch(varAudioFormat ) {
case "1":
varAudioFormat = "Dolby Dig";
break;
case "2":
varAudioFormat = "DTS";
break;
case "3":
varAudioFormat = "MPEG";
break;
case "4":
varAudioFormat = "LPCM";
break;
case "5":
varAudioFormat = "PPCM";
break;
case "6":
varAudioFormat = "?";
break;
case "7":
varAudioFormat = "DSD";
break;
}
var varAudioChannel = varReturn.substr(5,1)
switch(varAudioChannel) {
case "1":
varAudioChannel = "1 ch";
break;
case "2":
varAudioChannel = "2 ch";
break;
case "3":
varAudioChannel = "2.1 ch";
break;
case "4":
varAudioChannel = "3 ch";
break;
case "5":
varAudioChannel = "3.1 ch";
break;
case "6":
varAudioChannel = "4 ch";
break;
case "7":
varAudioChannel = "4.1 ch";
break;
case "8":
varAudioChannel = "5 ch";
break;
case "9":
varAudioChannel = "5.1 ch";
break;
case ":":
varAudioChannel = "6 ch";
break;
case ";":
varAudioChannel = "2 ch";
break;
case "<":
varAudioChannel = "1 ch R";
break;
case "=":
varAudioChannel = "1 ch L";
break;
case ">":
varAudioChannel = "?";
break;
}
var varDialog = varReturn.substr(6,1)
switch(varDialog) {
case "1":
varDialog = "JPN";
break;
case "2":
varDialog = "ENG";
break;
case "3":
varDialog = "FRA";
break;
case "4":
varDialog = "DEU";
break;
case "5":
varDialog = "ITA";
break;
case "6":
varDialog = "ESP";
break;
case "7":
varDialog = "NLD";
break;
case "8":
varDialog = "CHI";
break;
case "9":
varDialog = "RUS";
break;
case ":":
varDialog = "KOR";
break;
case ";":
varDialog = "?";
break;
}
var varSubtitle = varReturn.substr(7,1)
switch(varSubtitle) {
case "1":
varSubtitle = "JPN";
break;
case "2":
varSubtitle = "ENG";
break;
case "3":
varSubtitle = "FRA";
break;
case "4":
varSubtitle = "DEU";
break;
case "5":
varSubtitle = "ITA";
break;
case "6":
varSubtitle = "ESP";
break;
case "7":
varSubtitle = "NLD";
break;
case "8":
varSubtitle = "CHI";
break;
case "9":
varSubtitle = "RUS";
break;
case ":":
varSubtitle = "KOR";
break;
case ";":
varSubtitle = "?";
break;
}
var varAngle = varReturn.substr(8,1)
var varStatus = varReturn.substr(9,1)
switch(varStatus) {
case "0":
varStatus = "Standby";
break;
case "1":
varStatus = "Loading";
break;
case "2":
varStatus = "Loaded";
break;
case "3":
varStatus = "Opening";
break;
case "4":
varStatus = "Closing";
break;
case "A":
varStatus = "No Disc";
break;
case "B":
varStatus = "Stop";
break;
case "C":
varStatus = "Play";
break;
case "D":
varStatus = "Pause";
break;
case "E":
varStatus = "Scan";
break;
case "F":
varStatus = "Slow";
break;
case "G":
varStatus = "Setup";
break;
case "H":
varStatus = "Control";
break;
case "I":
varStatus = "Resume";
break;
case "J":
varStatus = "DVD Menu";
break;
case "K":
varStatus = "DAC";
break;
}
var varPlayMode = varReturn.substr(10,1)
switch(varPlayMode) {
case "1":
varPlayMode = "Normal";
break;
case "2":
varPlayMode = "Program";
break;
case "3":
varPlayMode = "Random";
break;
}
var varGroupTitle10 = varReturn.substr(11,1)
var varGroupTitle1 = varReturn.substr(12,1)
var varTrackChapter100 = varReturn.substr(13,1)
var varTrackChapter10 = varReturn.substr(14,1)
var varTrackChapter1 = varReturn.substr(15,1)
var varTimeMode = varReturn.substr(16,1)
var varTimeElapsedHours10 = varReturn.substr(17,1)
var varTimeElapsedHours1 = varReturn.substr(18,1)
var varTimeElapsedMinutes10 = varReturn.substr(19,1)
var varTimeElapsedMinutes1 = varReturn.substr(20,1)
var varTimeElapsedSeconds10 = varReturn.substr(21,1)
var varTimeElapsedSeconds1 = varReturn.substr(22,1)
var varElapsedTime = parseInt(varTimeElapsedHours10 + varTimeElapsedHours1) + "h" + varTimeElapsedMinutes10 + varTimeElapsedMinutes1 + "m" + varTimeElapsedSeconds10 + varTimeElapsedSeconds1 + "s";
widget("PNLTIME").label = varElapsedTime;
widget("PNLTRACKCHAPTER").label = parseInt(varTrackChapter100 + varTrackChapter10 + varTrackChapter1);
widget("PNLGROUPTITLE").label = parseInt(varGroupTitle10 + varGroupTitle1);
widget("PNLANSWER").label = varStatus;
widget("PNLMODE").label = varPlayMode;
widget("PNLAUDIOCHANNEL").label = varAudioChannel;
widget("PNLAUDIOFORMAT").label = varAudioFormat;
widget("PNLSUBTITLE").label = varDialog;
widget("PNLDIALOG").label = varSubtitle;
widget("PNLDISCTYPE").label = varDiscType;
}
}
Last edited by sWORDs
on July 27, 2007 08:18.