snap7-rs
This repository add utils module like in python-snap7 to handle data from PLC or vice verse.
Utils Example
use utils;
use S7Client;
use ;
This is a Rust binding of the snap7 C++ library, linked statically to snap7 with no additional dependencies.
Warning: This library has not undergone any security clearance and is to be used at your own risk.
Note: This repository is based on the original snap7-rs, and was created to translate some stuff in the original repository to English and fix some compilation errors.
Client Example
use S7Client;
use *;
use *;
// Creating an S7 Client
let client = create;
// Connection to PLC
if let Err = client.connect_to else
Server-side example
use ;
use *;
use *;
// Creating the S7 Server
let server = create;
// Creating shared memory areas
let mut db_buff = ;
// Adding Shared Blocks
assert!;
// Filtering reads and writes
assert!;
// Setting event callbacks
assert!;
// Start Service
if let Err = server.start
// Business Logic
//loop {
// ......
//}
// Close service
assert!;
Passive partner example
use S7Partner;
use *;
use *;
// Create S7 Passive Partners
let partner = create;
// Set the receive callback
partner
.set_recv_callback
.unwrap;
// Launch Partner Services
if let Err = partner.start_to
// Business Logic
//loop {
// ...
//}
// Stop service
partner.stop.unwrap;
Active partner example
use S7Partner;
use *;
use *;
// Create S7 Active Partners
let partner = create;
// Set the send callback
partner
.set_send_callback
.unwrap;
// Launch Partner Services
if let Err = partner.start_to
let mut buff = ;
if let Err = partner.b_send else
let mut buff = ;
if let Err = partner.as_b_send else
dbg!;
// Business Logic
//loop {
// ...
//}
// Stop service
partner.stop.unwrap;
License
The source code and documentation for this project are under the Mulan Loose License (MulanPSL-2.0).
snap7 itself is licensed under the terms of the GNU Lesser General Public License (LGPL v3+).