diff --git a/README.md b/README.md index e69de29..4ffb5f9 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,28 @@ +# Serial Sync +Serial Sync is a python library that handles clock synchronization between an external device (ie Arduino) and a computer, the object handles calibration which determines the clock offset and clock drift to correct over time. + +> [!NOTE] +> Serial especially over USB has inherent jitter which cannot be easily corrected for, this library is a best effort synchronization method but should not be trusted for sub millisecond sync. + +## Installation +To install the library with uv: +```bash +uv add git+https://git.h3cx.dev/Exergie/serial-sync.git --tag v0.1.1 +``` + +## Usage +Here is a simple usage example, the `SerialSync` object takes a `Serial` object as an input. Here the synchronization is done over a 30 second period +```python +with Serial( + port="/dev/ttyUSB0", + baudrate=115200, + timeout=1, +) as serial: + + sync = SerialSync(serial) + + sync.calibrate_sync(30) + +``` + +Once the sync is complete, you can use the `convert_timestamp(timestamp_ns: int)` API to convert an incoming timestamp from the external device into a timestamp on the same time-base as python's `time.monotonic_ns()`