Comments (4)
in ethernet-ip/tag/index.js
line 426 :parseReadMessageResponseValueForAtomic
add code , case 0x2A0:
this.controller_value =data.toString();
break;
from node-ethernet-ip.
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.
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.
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)
- Class1 Implicit message
- TCP connection leaking on closing connection HOT 1
- Add an option to configure the timeout of "Unconnected Send" messages HOT 1
- Changed Event is missed for previously written tags
- Waht is the max Size of a TagGroup? HOT 2
- Decimal precision is not correct HOT 4
- Question: Can I get tag descriptions? HOT 3
- High PLC CPU utilization and large number of connection errors. HOT 14
- Can't Read Tag by using attribute ID HOT 1
- Error: TIMEOUT occurred while reading Controller Props. - Micrologix 1100 HOT 5
- tag.generateReadMessageRequest is not a function
- Error connecting to PLC: Error: TIMEOUT occurred while reading Controller Props. HOT 4
- Is this Project Still Maintained? HOT 4
- Possible for multiple scan rates without creating a "new" controller for each one? HOT 5
- Preferred disconnection or unsubscribe method?
- String Tags in Compact Logix / Control Logix HOT 1
- Micro820 PLC , Error: <SCAN_GROUP> TIMEOUT occurred while writing Reading Tag Group HOT 1
- PLC.foreach() doesn't work HOT 1
- Software name HOT 1
- Micro Queue is already full at size of 100 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-ethernet-ip.