Fix some markdown issues
This commit is contained in:
123
Readme.md
123
Readme.md
@@ -1,80 +1,93 @@
|
|||||||
# UART/USB Interface
|
> [!WARNING]
|
||||||
|
> The documentation and code in this repository are provided 'as is' with no warranty or guarantee as to their completeness or accuracy. The information may be incomplete, out of date or otherwise incorrect. As the integrator, you are responsible for correctly interpreting any data received from the device.
|
||||||
|
|
||||||
|
# Byonoy Absorbance 96 Serial Interface
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> This protocol is used __only__ by the manual variant of Absorbance 96; it is not used by the Automate variant or any other Byonoy device. If you need to control any other Byonoy device via code, please [contact support](https://byonoy.com/support/) to request access to the SDK.
|
||||||
|
|
||||||
Communication takes place in human-readable form via the serial interface.
|
Communication takes place in human-readable form via the serial interface.
|
||||||
|
|
||||||
| Baud rate | 115200 |
|
| Parameter | Value |
|
||||||
| --------- | ------ |
|
| --------- | ------ |
|
||||||
| Data bits | 8 |
|
| Baud rate | 115200 |
|
||||||
| Parity | None |
|
| Data bits | 8 |
|
||||||
| Stop Bits | 1 |
|
| Parity | None |
|
||||||
|
| Stop Bits | 1 |
|
||||||
|
|
||||||
The !RP and !RPF commands transmit a CRC checksum in their data payload. Details on request. The measurement results ("Optical density data") are transmitted in 12 rows. A1 to H1, A2 to H2... Wavelengths are indexed by their physical position in the device:
|
The `!RP` and `!RPF` commands transmit a CRC checksum in their data payload. Details on request. The measurement results ("Optical density data") are transmitted in 12 rows. A1 to H1, A2 to H2 etc. Wavelengths are indexed by their physical position in the device:
|
||||||
|
|
||||||
| -1 | Do not measure (e.g. !RP(0,-1) measures Slot 0 and uses no reference) |
|
| Index | Meaning |
|
||||||
| --- | --------------------------------------------------------------------- |
|
| ----- | ----------------------------------------------------------------------- |
|
||||||
| 0 | Slot 0 (e.g. 492nm) |
|
| -1 | Do not measure (e.g. `!RP(0,-1)` measures Slot 0 and uses no reference) |
|
||||||
| 1 | Slot 1 (e.g. 450nm) |
|
| 0 | First slot (e.g. 492nm) |
|
||||||
| 2 | Slot 2 (e.g. 405nm) |
|
| 1 | Second slot (e.g. 450nm) |
|
||||||
| 3 | Slot 3 (e.g. 620nm) |
|
| 2 | Third slot (e.g. 405nm) |
|
||||||
|
| 3 | Forth slot (e.g. 620nm) |
|
||||||
|
|
||||||
## Serial Commands
|
## Serial Commands
|
||||||
|
|
||||||
Send one command followed by a line break. The device will echo the received command, then a line break, then the data payload, then a postamble. The postamble is usually #<Command>() except the !RP\* commands, which all send #RP() as postamble.
|
Send one command followed by a line break. The device will echo the received command, then a line break, then the data payload, then a postamble. The postamble is usually `#<Command>()` except the `!RP*` commands, which all send `#RP()` as postamble.
|
||||||
|
|
||||||
| **Command** | **Result** |
|
| **Command** | **Result** |
|
||||||
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| !GETFILT() | Returns installed filters |
|
| `!GETFILT()` | Returns installed filters |
|
||||||
| !RPF(x,y) | <p>Read Plate </p><p>x: Measurement wavelength index </p><p>y: Reference wavelength index </p><p>Returns: OD at wavelength x minus OD at wavelength y </p> |
|
| `!RPF(x,y)` | <p>Read Plate </p><p>x: Measurement wavelength index </p><p>y: Reference wavelength index </p><p>Returns: OD at wavelength x minus OD at wavelength y </p> |
|
||||||
| !RPP(x,y) | Read Plate; same as RPF, but formatted for human readability |
|
| `!RPP(x,y)` | Read Plate; same as RPF, but formatted for human readability |
|
||||||
| !PLATE() | Returns: 1 if a microplate is in the device or state is not known. 0 otherwise |
|
| `!PLATE()` | Returns: 1 if a microplate is in the device or state is not known. 0 otherwise |
|
||||||
| !CALIBRATE(x,y) | Perform initialization and zero for wavelength indices x and y |
|
| `!CALIBRATE(x,y)` | Perform initialization and zero for wavelength indices x and y |
|
||||||
| !ERROR() | Returns current error code (0 = No Error) |
|
| `!ERROR()` | Returns current error code (0 = No Error) |
|
||||||
| !SN() | Returns serial number |
|
| `!SN()` | Returns serial number |
|
||||||
| !VERSION() | Returns firmware version |
|
| `!VERSION()` | Returns firmware version |
|
||||||
|
|
||||||
## Example Communications
|
## Example Communications
|
||||||
|
|
||||||
List available wavelengths
|
> [!TIP]
|
||||||
|
> The [official app](https://byonoy.com/download-hub/absorbance-96/) is available free of charge. It can be used as an easy-to-access reference tool, as it logs all serial communications in the app's log file.
|
||||||
|
|
||||||
- `-> !GETFILT()`
|
The arrow denotes direction of data flow: `->` is host to device, `<-` is device to host.
|
||||||
- `<- !GETFILT()`
|
|
||||||
- `<- 0=405,1=450,2=492,3=620`
|
### List available wavelengths
|
||||||
- `<- #GETFILT()`
|
|
||||||
|
- `->` `!GETFILT()`
|
||||||
|
- `<-` `!GETFILT()`
|
||||||
|
- `<-` `0=405,1=450,2=492,3=620`
|
||||||
|
- `<-` `#GETFILT()`
|
||||||
|
|
||||||
### Read current temperature
|
### Read current temperature
|
||||||
|
|
||||||
- `-> !TEMP()`
|
- `->` `!TEMP()`
|
||||||
- `<- !TEMP()`
|
- `<-` `!TEMP()`
|
||||||
- `<- Temperature: 23.43 C`
|
- `<-` `Temperature: 23.43 C`
|
||||||
- `<- #TEMP()`
|
- `<-` `#TEMP()`
|
||||||
|
|
||||||
### Perform measurement
|
### Perform measurement
|
||||||
|
|
||||||
- `-> !RPF(0,-1)`
|
- `->` `!RPF(0,-1)`
|
||||||
- `<- !RPF(0,-1)`
|
- `<-` `!RPF(0,-1)`
|
||||||
- `<- 0.115 0.125 0.147 0.120 0.127 0.175 0.146 0.133`
|
- `<-` `0.115 0.125 0.147 0.120 0.127 0.175 0.146 0.133`
|
||||||
- `<- 0.084 0.104 0.108 0.115 0.096 0.194 0.162 0.198`
|
- `<-` `0.084 0.104 0.108 0.115 0.096 0.194 0.162 0.198`
|
||||||
- `<- 0.062 0.072 0.080 0.097 0.070 0.119 0.132 0.106`
|
- `<-` `0.062 0.072 0.080 0.097 0.070 0.119 0.132 0.106`
|
||||||
- `<- 0.130 0.067 0.064 0.113 0.072 0.105 0.128 0.155`
|
- `<-` `0.130 0.067 0.064 0.113 0.072 0.105 0.128 0.155`
|
||||||
- `<- 0.100 0.083 0.066 0.080 0.057 0.075 0.065 0.106`
|
- `<-` `0.100 0.083 0.066 0.080 0.057 0.075 0.065 0.106`
|
||||||
- `<- 0.069 0.050 0.064 0.074 0.090 0.084 0.100 0.097`
|
- `<-` `0.069 0.050 0.064 0.074 0.090 0.084 0.100 0.097`
|
||||||
- `<- 0.051 0.059 0.056 0.065 0.058 0.064 0.058 0.101`
|
- `<-` `0.051 0.059 0.056 0.065 0.058 0.064 0.058 0.101`
|
||||||
- `<- 0.071 0.075 0.077 0.070 0.084 0.113 0.083 0.113`
|
- `<-` `0.071 0.075 0.077 0.070 0.084 0.113 0.083 0.113`
|
||||||
- `<- 0.100 0.079 0.072 0.069 0.083 0.100 0.133 0.131`
|
- `<-` `0.100 0.079 0.072 0.069 0.083 0.100 0.133 0.131`
|
||||||
- `<- 0.074 0.079 0.074 0.093 0.122 0.132 0.117 0.170`
|
- `<-` `0.074 0.079 0.074 0.093 0.122 0.132 0.117 0.170`
|
||||||
- `<- 0.138 0.101 0.094 0.110 0.156 0.161 0.168 0.172`
|
- `<-` `0.138 0.101 0.094 0.110 0.156 0.161 0.168 0.172`
|
||||||
- `<- 0.187 0.153 0.142 0.128 0.111 0.144 0.118 0.107`
|
- `<-` `0.187 0.153 0.142 0.128 0.111 0.144 0.118 0.107`
|
||||||
- `<- 1236585622 CRC`
|
- `<-` `1236585622 CRC`
|
||||||
- `<- Temperature: 27.06 C`
|
- `<-` `Temperature: 27.06 C`
|
||||||
- `<- Measurement time: 2.1 seconds`
|
- `<-` `Measurement time: 2.1 seconds`
|
||||||
- `<- Filters 0/-1 (405nm/0)`
|
- `<-` `Filters 0/-1 (405nm/0)`
|
||||||
- `<- #RP()`
|
- `<-` `#RP()`
|
||||||
|
|
||||||
Check for plate in device
|
Check for plate in device
|
||||||
|
|
||||||
- `-> !PLATE()`
|
- `->` `!PLATE()`
|
||||||
- `<- 1`
|
- `<-` `1`
|
||||||
- `<- #PLATE()`
|
- `<-` `#PLATE()`
|
||||||
|
|
||||||
## Error Codes
|
## Error Codes
|
||||||
|
|
||||||
@@ -84,7 +97,7 @@ Check for plate in device
|
|||||||
|
|
||||||
| **Error Code** | **Severity** | **Description** |
|
| **Error Code** | **Severity** | **Description** |
|
||||||
| -------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |
|
| -------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |
|
||||||
| 0 | | OK |
|
| 0 | N/A | OK |
|
||||||
| 1 | 1 | Optical problem. Device dirty or damaged. |
|
| 1 | 1 | Optical problem. Device dirty or damaged. |
|
||||||
| 2 | 1 | Ambient light exceeded tolerated level. (not applicable for automated variant) |
|
| 2 | 1 | Ambient light exceeded tolerated level. (not applicable for automated variant) |
|
||||||
| 3 | 2 | USB power insufficient. Remove hub, replace cable or change USB port |
|
| 3 | 2 | USB power insufficient. Remove hub, replace cable or change USB port |
|
||||||
|
|||||||
Reference in New Issue
Block a user