0
Answered
IR.EVENT_RECEIVE_TEXT receiving hex > 0x80
Mike Slattery 8 years ago
in Products / AV & Custom Systems
•
updated by Dmitry - support (expert) 8 years ago •
2
Is there a reason why numbers that are > 0x80 are received as 0 when using IR.EVENT_RECEIVE_TEXT? Is there a driver configuration that allows all hex data to be received.I need to setup a telnet session and have to parse through data like "\xFF \xFD\x18". If I use EVENT_RECEIVE_DATA, then I have problems parsing ASCII data.
Answer
Answer
Hi Mkie
Probably as you are getting into the extended ascii characters (http://ascii-code.com/), and it depends on what is on your machine if they are the latin ones or not
I suggest using receive_data, and convert from the decimal to hex using something like this:
IR.Log("Receive Raw Data: " + data); // Data received: for (var i=0; i < data.length; i++){ data[i] = this.dec2hex(data[i]).toString(); } //for //Converted data: IR.Log("Receive Converted Data: " + data);
The following may come in handy:
//**************************************************\\
// Data Conversion Routines \\
//**************************************************\\
var convertBase = function (num) {
this.from = function (baseFrom) {
this.to = function (baseTo) {
return parseInt(num, baseFrom).toString(baseTo).toUpperCase();
};
return this;
};
return this;
};
// binary to decimal
this.bin2dec = function (num) {
return convertBase(num).from(2).to(10);
};
// binary to hexadecimal
this.bin2hex = function (num) {
return convertBase(num).from(2).to(16);
};
// decimal to binary
this.dec2bin = function (num) {
return convertBase(num).from(10).to(2);
};
// decimal to hexadecimal
this.dec2hex = function (num) {
return convertBase(num).from(10).to(16);
};
// hexadecimal to binary
this.hex2bin = function (num) {
return convertBase(num).from(16).to(2);
};
// hexadecimal to decimal
this.hex2dec = function (num) {
return convertBase(num).from(16).to(10);
};
//**************************************************\\ // converts an array of hex or decimal to the \\ // the ASCII code \\ // eg 75 Decimal = K \\ //**************************************************\\ this.NumToChar = function(tmp) {
var arr = tmp;
var str = '';
var c;
for (var i=0; i<arr.length; i++) {
if (arr[i] != 0) {
c = String.fromCharCode(arr[i]);
str += c;
}
}
return str;
} //**************************************************\\ // Formats eg FF into 0xFF \\ //**************************************************\\ this.FormatToHex = function(hx){
hx = '0x' + String('0' + hx).slice(-2);
return hx;
}
Customer support service by UserEcho
Hi Mkie
Probably as you are getting into the extended ascii characters (http://ascii-code.com/), and it depends on what is on your machine if they are the latin ones or not
I suggest using receive_data, and convert from the decimal to hex using something like this:
The following may come in handy: