a rust wrapper of libplctag, with rust style APIs and useful extensions.
Add plctag-core
to your Cargo.toml
toml
[dependencies]
plctag-core= "0.1"
```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!"); ```
please take a look at examples
Operations are not thread-safe in this library, please use std::sync::Mutex
or something similar to enforce thread-safety.
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
MIT