#display #protocols #control #networking #projector #devices #projectors

pjlink

A PJLink library that can be used to commmicate over the network with PJLink enabled devices such as a projector or display

3 unstable releases

Uses old Rust 2015

0.2.0 Mar 31, 2019
0.1.1 Aug 18, 2018
0.1.0 Aug 15, 2018

#8 in #projector

22 downloads per month

Apache-2.0

31KB
532 lines

PJLink

This is a Rust library for the PJLink protocol. PJLink is a network control protocol that has been incorporated into projectors and displays over the last few years. You can find the protocol specification here. This Library currently supports both authenticated and open connections and currently returns unparsed response. This is just beginning of the API and more will be coming. However, I do plan to leave the raw send_command function for those that want to use this library at a lower level.

Testing has been done with Panasonic and Sanyo projectors.

Version 0.2.0 is the first version that has included the full command set of the PJLink specification.

Usage

Add to Cargo.toml:

[dependencies]

pjlink = "0.2.0"

Create a PjlinkDevice and start requesting status and sending control.

extern crate pjlink;
use pjlink::PjlinkDevice;

let mut device = PjlinkDevice::new("192.168.1.1").unwrap();

match device.power_status {
    Ok(response) => match response {
        PowerStatus::Off => println!("Device is off"),
        PowerStatus::On => println!("Device is on"),
        PowerStatus::Cooling => println!("Device is cooling"),
        PowerStatus::Warmup => println!("Device is warming up"),
    },
    Err(err) => println!("An error occurred: {}", err),
}

Examples

In the examples folder we have some sample programs that can be run using the folloing command from the project directory.

cargo run --example power_status 192.168.1.1 password

License

Licensed under

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Dependencies

~18KB