plctag-core

a rust wrapper of libplctag, with rust style APIs and useful extensions.

crates.io docs build license

How to use

Add plctag-core to your Cargo.toml

toml [dependencies] plctag-core= "0.1"

Examples

read/write tag

```rust use plctagcore::{Encode, Decode, RawTag}; let timeout = 100;//ms let path="protocol=ab-eip&plc=controllogix&path=1,0&gateway=192.168.1.120&name=MyTag1&elemcount=1&elem_size=16";// YOUR TAG DEFINITION let tag = RawTag::new(path, timeout).unwrap();

//read tag let status = tag.read(timeout); assert!(status.isok()); let offset = 0; let value:u16 = tag.getvalue(offset).unwrap(); println!("tag value: {}", value);

let value = value + 10; tag.set_value(offset, value).unwrap();

//write tag let status = tag.write(timeout); assert!(status.is_ok()); println!("write done!"); ```

More examples

please take a look at examples

Thread-safety

Operations are not thread-safe in this library, please use std::sync::Mutex or something similar to enforce thread-safety.

Build & Test

Please refer to How to use to setup build environment.

Because mutithread will cause troubles, you need to run tests with:

shell cargo test -- --test-threads=1

License

MIT