Driver for Arizona USB Pressure Sensor
Project description
ARIZON USB APIServer
An APIServer for ARIZON USB force sensors.
Installation
Clone & cd
into this repository then:
python setup.py install
Or download from PyPI:
python -m pip install arizon-usb-apiserver
Get Started
The apiserver operates in two modes: RESTful and gRPC. They share the same configuration schema.
Basics
To read the sensor locally, use this snippet:
from serial import Serial
from arizon_usb_apiserver import Sensor
if __name__ == '__main__':
conn = Serial("COM16", 115200)
sensor = Sensor(conn)
sensor.reset()
while True:
print(sensor.read_once())
To generate configuration from command line interaction run:
python -m arizon_usb_apiserver configure
RESTful
To launch the apiserver in RESTful mode, set the API_SERVER_RESTFUL
to 1
before run apiserver command:
export API_SERVER_RESTFUL=1
Or run with variable
API_SERVER_RESTFUL=1 python -m arizon_usb_apiserver apiserver
Powershell:
Set-Item -Path Env:API_SERVER_RESTFUL -Value 1
Or you can directely run apiserver.restful
python -m arizon_usb_apiserver apiserver.restful
Here are some examples to test the apiserver using curl
-
Init sensor
curl -X 'PUT' \ 'http://127.0.0.1:8080/v1/arizon/force?flag=true' \ -H 'accept: application/json'
-
Read sensor
curl -X 'GET' \ 'http://127.0.0.1:8080/v1/arizon/force' \ -H 'accept: application/json'
-
Shutdown sensor
curl -X 'PUT' \ 'http://127.0.0.1:8080/v1/arizon/force?flag=false' \ -H 'accept: application/json'
gRPC
Run this command
python -m arizon_usb_apiserver apiserver
Or you can directely run apiserver.grpc
python -m arizon_usb_apiserver apiserver.grpc
Testing with cli tools
To test RESTful API, run:
python -m arizon_usb_apiserver test.restful
You will be asked to input API endpoint.
To test gRPC API, run:
python -m arizon_usb_apiserver test.grpc
You will be asked to input API endpoint.
Generate Client
Restful
First launch the apiserver, then run openapi-python-client
:
openapi-python-client generate --url http://127.0.0.1:8080/openapi.json
rm -rf ./arizon_usb_driver/client/restful
mv fast-api-client/fast_api_client ./arizon_usb_driver/client/restful
rm -rf ./fast-api-client
GRPC
First cd arizon_usb_apiserver/grpc
, then run:
python -m grpc_tools.protoc -I../../manifests/protos --python_out=. --pyi_out=. --grpc_python_out=. ../../manifests/protos/force_packet.proto
You might need to replace import force_packet_pb2 as force__packet__pb2
with import arizon_usb_apiserver.grpc.force_packet_pb2 as force__packet__pb2
Serial Protocol
Field | Content |
---|---|
Head | 0xFE |
Status | 1 Byte |
Data | 3 Byte |
XOR checksum | 1 Byte |
- Status: 4 bits of address + 4 bits represents number of digits
- Data: 3 bytes of signed integers, no digit, big-endian.
- Checksum: xor() of first 5 bytes
Configuration
Here is an template of configuration
arizon_usb_apiserver: # Key
api: # Control API settings
interface: 0.0.0.0 # Listen interface
port: 8080 # Listen port
debug: false # Enable debug
serials: # Serial connections, can be a list
- baudrate: 115200 # Baudrate, default is 115200, no need to change
port: COM8 # Port name
addr: "dev1" # Friendly name
data_path: ./arizon_data # Path to save data
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
Built Distribution
File details
Details for the file arizon-usb-apiserver-0.4.7.tar.gz
.
File metadata
- Download URL: arizon-usb-apiserver-0.4.7.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 495b0f7a9bb6171c6b79d8d7bd167f061c91f59b5c5c6a0756dea872a2c3d390 |
|
MD5 | 760eb252d1823474c0a4729201d9ce64 |
|
BLAKE2b-256 | 3a375f09dc73e65bd7af51387fc922cf6114cbb10451d96128d24672f5d58b2d |
File details
Details for the file arizon_usb_apiserver-0.4.7-py3-none-any.whl
.
File metadata
- Download URL: arizon_usb_apiserver-0.4.7-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7abefa21f337a60f639739b60a63d9a86b9f6f5ab07af433b0be0f4c91b3cf14 |
|
MD5 | cf9becbbc7dfc2f2822ddd4a5ece30ce |
|
BLAKE2b-256 | 895e9bf8d28ecc9241746b9f08cef6c26ef8bb1658134bde7eb088302529f458 |