Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. function getM340registersToFloat(a, b) {
  2. let sign = (b & 0x8000) ? -1 : 1;
  3. let E = (b & 0x7F80) >>> 7;
  4. let restM = b & 0x7F;
  5. const M = (restM << 16) + a;
  6. if (E === 0) {
  7. return M === 0 ? 0 : sign * Math.pow(2, (-126)) * M / Math.pow(2, 23) ;
  8. } else if (E < 255) {
  9. return sign * Math.pow(2, (E - 127))* (1 + M / Math.pow(2, 23));
  10. } else {
  11. if (M === 0 ) return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
  12. return NaN;
  13. }
  14. }
  15.  
  16.  
  17. function getRealFromModbusCoils(data, index) {
  18. return getM340registersToFloat(data[index], data[index + 1]);
  19. }
  20.  
  21.  
  22. function getIntsFromMOdbusCoils(data) {
  23. return new Int16Array(data); // UInt16 array to Int16 array
  24. }
  25.  
  26. function isEven(number) {
  27. if(number % 2 === 0){
  28. return true;
  29. }else if(isNaN(number)){
  30. return "is Nan";
  31. }else{
  32. return false;
  33. }
  34. };
  35.  
  36. function getFloatsFromMOdbusCoils(data) {
  37. const arr = [];
  38. if (Array.isArray(data)) {
  39. data.forEach((element,index, _data) => {
  40. if (math.isEven(index) && index < _data.length - 1) arr.push(getM340registersToFloat(element, _data[index + 1]));
  41. });
  42. }
  43. return arr;
  44. }
  45.  
  46. module.exports = {
  47. getM340registersToFloat :getM340registersToFloat,
  48. getRealFromModbusCoils : getRealFromModbusCoils,
  49. getIntsFromMOdbusCoils :getIntsFromMOdbusCoils,
  50. getFloatsFromMOdbusCoils : getFloatsFromMOdbusCoils
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement