Skip to main content

A python package to interface with serial laser distance sensors fron Chengdu JRT Meter Technology Co., Ltd.

Project description

JRT Laser Distance Sensor Python Library

This library is a Python library for the JRT laser distance sensor for laser devices from Chengdu JRT Meter Technology Company, Ltd.

This library has been tested with the following sensors:

The author of this library has no affiliation with Chengdu JRT and this library is not endorsed by Chengdu JRT.

Installation

Use the package manager pip to install jrt-laser-distance-sensor.

pip install jrt_laser_distance_sensor

After installation, you should be able to test the library with the following command:

jrt-laser-distance-sensor <serial-port-name>

Serial port naming conventions vary by platform (e.g. /dev/ttyUSB0 on Linux, COM1 on Windows, /dev/tty.usb-12345 on OS X).

All measurements from the library are reported in millimeters.

Usage

A simple example of using the library is as follows, with the sensor connected to /dev/ttyUSB0:

from jrt_laser_distance_sensor import JrtSerial

sensor = JrtSerial('/dev/ttyUSB0')
print(sensor.one_shot_measurement())

You can also do continuous measurements:

from jrt_laser_distance_sensor import JrtSerial

sensor = JrtSerial('/dev/ttyUSB0')

sensor.start_continuous_measurement()

while True:
    print(sensor.read_measurement())

This is block of code demonstrates most of the useful features of the library:

import sys
import time
from binascii import hexlify
from jrt_laser_distance_sensor import JrtSerial

def main():
    if len(sys.argv) > 1:
        port = sys.argv[1]
    else:
        print(f'usage: {sys.argv[0]} <port>')
        sys.exit(1)
    jrt = JrtSerial(port)
    hw_version = hexlify(jrt.read_hw_version().to_bytes(2, 'big', signed=True))
    print(f'hw version: {hw_version}')
    sw_version = hexlify(jrt.read_sw_version().to_bytes(2, 'big', signed=True))
    print(f'sw version: {sw_version}')
    input_voltage= hexlify(jrt.read_input_voltage().to_bytes(2, 'big', signed=True))
    print(f'input voltage: {input_voltage}')
    print(f"reading status: {jrt.status_to_text(jrt.read_status())}")
    print("testing laser on / off")
    print('laser', jrt.set_laser(True))
    print('laser should be on (sleeping 2 seconds)')
    time.sleep(2)
    print('laser', jrt.set_laser(False))
    print('laser should be off (sleeping 2 seconds)')
    time.sleep(2)

    print('testing continuous measurement in auto mode (10 readings)')
    jrt.start_continuous_measurement('auto')
    x = 0
    while x < 10:
        print(f"{x + 1}: {jrt.read_measurement()} (signal quality: {jrt.last_signal_quality})")
        time.sleep(0.1)
        x += 1

    jrt.stop_continuous_measurement()

    print('continuous measurement test finished')
    time.sleep(0.5)
    print('test one shot measurement')

    print('auto', jrt.one_shot_measurement('auto'))
    print('slow', jrt.one_shot_measurement('slow'))
    print('fast', jrt.one_shot_measurement('fast'))

    print('turning laser off')
    print('laser', jrt.set_laser(False))

It should produce output similar to the following:

hw version: b'8301'
sw version: b'1b08'
input voltage: b'3303'
reading status: No error
testing laser on / off
laser 1
laser should be on (sleeping 2 seconds)
laser 0
laser should be off (sleeping 2 seconds)
testing continuous measurement in auto mode (10 readings)
1: 271 (signal quality: 98)
2: 271 (signal quality: 97)
3: 270 (signal quality: 108)
4: 270 (signal quality: 110)
5: 270 (signal quality: 83)
6: 270 (signal quality: 81)
7: 270 (signal quality: 87)
8: 271 (signal quality: 83)
9: 270 (signal quality: 87)
10: 270 (signal quality: 103)
continuous measurement test finished
test one shot measurement
auto 271
slow 271
fast 270
turning laser off
laser 0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jrt-laser-distance-sensor-0.0.5.tar.gz (5.4 kB view hashes)

Uploaded Source

Built Distribution

jrt_laser_distance_sensor-0.0.5-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page