Crate plctag_core[][src]

Expand description

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

[dependencies]
plctag-core= "0.1"

Examples

read/write tag

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

//read tag
let status = tag.read(timeout);
assert!(status.is_ok());
let offset = 0;
let value:u16 = tag.get_value(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:

cargo test -- --test-threads=1

License

MIT

Modules

builders for tag path and tag

event handling

reexports ffi Apis

Structs

wrapper of tag model based on libplctag

Tag Identifier

Enums

plc tag error code representations

Traits

this trait abstracts tag value. you can use the trait to implement your UDT.

see Decode

Type Definitions

plctag result