CAS Scales (s_cas.dll)

serial port

=> send ENQ
<= recv ACK
=> send 0x11
<= recv:
byte 1: 0x01 or 0x81
byte 2: STX
byte 3: 'S' - stable, 'U'- unstable
byte 4: ' ' (space)

bytes 5...11 (7): weight with decimal point, example '123.7'
byte 12: 'g' or another
byte 13:
byte 14: LRC = XOR bytes[3..13]
byte 15: ETX
or
byte 5...10 (6): weight with decimal point, example '123.7'
byte 11: 'g' or another
byte 12:
byte 13: LRC = XOR bytes[3..12]
byte 14: ETX
byte 15: EOT

CAS LP Scales (s_cas_LP.dll)

serial port

InitConnect():
=> send:
byte 1: address
<= recv:
byte 1: address
...
byte ...: 0x80 - ready

Command(AbCMD, AiAnsLen):
=> send:
byte 1: AbCMD
<= recv:
byte 1: 0xAA or 0x80
...
byte AiAnsLen

Read weight Command(0x89, 16) answer:

byte 2: bit 6 - weighting status (0 - unstable / 1 - stable), bit 7 - sign (0 - positive / 1 - negative)
bytes 3..4 - weight raw data, LSB first

Also in driver's menu creation ProgramScales menu item.

DIBAL scales for EPOS TISA protocol (s_dibal.dll)

serial port

=> send: '98'
=> send: price: 5 digits in mde, example: '00123' for price 1.23
=> send: byte XOR of previous bytes
=> send: CR + LF

<= recv 18 bytes:
byte 1: '9'
byte 2: '9'
byte 3: '0'
bytes 4..8 (5): weight with decimal point, example '123.2' or '1237'
...
byte 16: XOR of bytes 1..15
byte 17: CR
byte 18: LF

DIGI Siemens Nixdorf Scales (s_digi.dll)

serial port

=> send STX 'W' ETX
<= recv:
byte 1: STX
byte 2: 'w'
byte 3..5: weight digits
byte 6: ??
byte 7..9: weight digits
...
byte 14: CRC: XOR bytes 2..13
byte 15: ETX

UCS HTTP Scales server client (s_http.dll)

HTTP GET <url> + '?cmd=GetWeight'

response:

<SomeRootTag>
  <Weight>13666</Weight>
  <ErrorText>Overweight</ErrorText>
</SomeRootTag>

Scales KB-TBED-3000 (s_KDTBED.dll)

serial port

<= cyclically recv:
byte 1: 'S'
byte 2: 'T'
byte 3: ','
...
byte 6: ','
byte 7: '+' or ' '
byte 8..17: weight decimal digits or '.' (decimal point) or ' '
...
byte n - 1: 'g' or 'G'
byte n: CR or LF

n in [19..24]

Scales Ohaus NVT3201/2 (s_ohaus.dll)

serial port

<= cyclically recv:
byte 1..10: weight decimal digits ('0'..'9') or '.' (decimal point) or ' '
byte 11: ' '
byte 12: 'g'
byte 13: ' '
byte 14: ' '
byte 15: ' '
...
byte n: CR or LF

n in [17..24]

OPOS Scales (OPOSSCAL.dll)

OPOS

CAS (scCASLPCL.dll)

CAS original protocol through ActiveX OLE interface with GUID {BE210523-7493-30CE-B3F1-F59607FE2AA0}

MAS scales (scMAS.dll)

serial port

<= cyclically recv:
byte 1: 'S' (for stable weight)
byte 2: 'T' (for stable weight)
...
byte 7...n-2: '+' or '-' or ' ' or '.' (decimal separator) or weight decimal digits ('0'..'9')
byte n - 1: CR
byte n: LF

SHTRIH-SLIM 200M Scales (sh_slim.dll)

serial port

Cmd_12H_GetCurrentMode()

=> send ENQ
<= recv NAK

=> send:
byte 1: STX
byte 2: length -> 1
byte 3: command code = 0x12
byte 4: CRC = XOR bytes 2..3

<= recv ACK

<= recv:
byte 1: STX
byte 2: length -> n
byte 3: command code
byte 4: error code
byte 5: mode number
... (??)
byte 2+n+1: CRC = XOR bytes 2..2+n

mode number = 0 -> can query state and weight

=> send ACK

Cmd_3AH_GetStateWeghtChannel()

=> send ENQ
<= recv NAK

=> send:
byte 1: STX
byte 2: length -> n
byte 3: command code = 0x3A
byte 4..2+n: admin password (default '0030')
byte 2+n+1: CRC = XOR bytes 2..2+n

<= recv ACK

<= recv:
byte 1: STX
byte 2: length -> n
byte 3: command code
byte 4: error code
byte 5..6: state - 2 byte raw integer data in little-endian
byte 7..10: weight - 4 byte raw integer data in little-endian
byte 11-12: tare - 2 byte raw integer data in little-endian
... (??)
byte 2+n+1: CRC = XOR bytes 2..2+n

state:
bit 0 = 1 - weight fixed
bit 4 = 1 - weight quiet

=> send ACK

Tiger Scales (s_tiger.dll)

serial port

<= cyclically recv:
byte 1: STX
byte 2: ' '
byte 3: ' '
byte 4: weight, digit 1
byte 5: '.'
byte 6: weight, digit 2
byte 7: weight, digit 3
byte 8: weight, digit 4
byte 9: ' '
byte 10: 'k' or 'K'
byte 11: 'g' or 'G'
...
byte n-1: CR
byte n: LF

n >= 13