0
Отвечен

IR.EVENT_RECEIVE_TEXT receiving hex > 0x80

Mike Slattery 8 лет назад в Products / AV & Custom Systems обновлен Dmitry - support (expert) 8 лет назад 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.

Ответ

Ответ

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;
}
Ответ

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;
}

Сервис поддержки клиентов работает на платформе UserEcho