Giter Club home page Giter Club logo

Comments (4)

nuannuande avatar nuannuande commented on July 3, 2024

in ethernet-ip/tag/index.js
line 426 :parseReadMessageResponseValueForAtomic
add code , case 0x2A0:
this.controller_value =data.toString();
break;

from node-ethernet-ip.

qgicup avatar qgicup commented on July 3, 2024

What about writing the string ? I've tried to use generateWriteMessageRequestForAtomic(..) function, to add the case for STRING, and then handle it like below 👍
` see below :

          valBuf = Buffer.alloc(tag.value.length + 1);
           if (!tag.value) valBuf.writeInt8(0x00);

           else {
             valBuf.write(tag.value.toString());

             valBuf.writeInt8(0x00);

           }

           buf = Buffer.concat([buf, valBuf]);

           break;`

However, it keeps giving me error 255 .

Any idea ?

from node-ethernet-ip.

SerafinTech avatar SerafinTech commented on July 3, 2024

Just commited STRING and LINT support to my fork: https://github.com/SerafinTech/node-ethernet-ip (Tests still need to be written: USE WITH CAUTION!)

from node-ethernet-ip.

ilpredo avatar ilpredo commented on July 3, 2024

If someone still interested this is my solution for read / write string

parseReadMessageResponseValueForAtomic(data) {
...
case 0x2A0: //FROM PLC
let size = data.readUInt32LE(4);
this.controller_value = data.toString('utf8',8).substring(0, size);
break;
...
}

generateWriteMessageRequestForAtomic(value, size) {
...
case STRING:
case 0x2A0:
let msgArr = [];

          //LEN
          let bSize = Buffer.alloc(8);
          bSize.writeUInt16LE(DINT, 0);
          bSize.writeUInt16LE(size, 2);
          bSize.writeInt32LE(value.length, 4);
          
          let pathSize = Buffer.concat([tag.path, CIP.EPATH.segments.DATA.build('LEN')]);
          
          bSize = MessageRouter.build(WRITE_TAG, pathSize, bSize);
          msgArr.push(bSize);
          
          //DATA
          let bValue = Buffer.alloc(4 + value.length);
          bValue.writeUInt16LE(SINT, 0);
          bValue.writeUInt16LE(value.length, 2);
          for (var i = 0; i < value.length; i++)
            bValue.writeInt8(value.charCodeAt(i), 4 + i);
          
          let pathValue = Buffer.concat([tag.path, CIP.EPATH.segments.DATA.build('DATA')]);
          
          bValue = MessageRouter.build(WRITE_TAG, pathValue, bValue);
          msgArr.push(bValue);
          
          //Message - form tag-group generateWriteMessageRequests
          let xbuf = Buffer.alloc(2 + 2 * msgArr.length);
          xbuf.writeUInt16LE(msgArr.length, 0);

          let ptr = 2;
          let offset = xbuf.length;

          for (let i = 0; i < msgArr.length; i++) {
              xbuf.writeUInt16LE(offset, ptr);
              ptr += 2;
              offset += msgArr[i].length;
          }
          
          let pathBuf = Buffer.concat([
              LOGICAL.build(LOGICAL.types.ClassID, 0x02), // Message Router Class ID (0x02)
              LOGICAL.build(LOGICAL.types.InstanceID, 0x01) // Instance ID (0x01)
          ]);

          xbuf = Buffer.concat([xbuf, ...msgArr]);
          xbuf = MessageRouter.build(MULTIPLE_SERVICE_PACKET, pathBuf, xbuf);
          return xbuf;
          
          break;

...
}

from node-ethernet-ip.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.