Serial port data from weigh scales to decode

I have hooked a PC up to a desktop weigh scale that communicates over serial port (via a usb adapter and virtual com port driver). We get data back when the Print button is pressed.


It looks like hex or something encoded in a strange way (like UTF-16) but cannot make heads or tails of it. Anyone recognise this and know how to decode?

My assumption is that the first to letters will be ST then there will be a weight shown (based on other research). We have played around with various baud rates to no success.

Example solution can be in any dev language (C#, VB, PHP, Python, Javascript preferably).

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

What Make/Model are the scales?
auscomAuthor Commented:
digital platform scale
A&D company
Have a look here:
Page 16 refers to the RS-232 interface.
Looks like BAUD rate will be 2400, 4800 or 9600.
7 data bits
even parity

Once set correctly the data looks quite readable.
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

auscomAuthor Commented:
Thanks we have the manual. Can you tell from the hex string if the data is encoding specifically? Or should we just have text as a result?
As I read it you should get straight text. e.g. ST,+00123.45_kg
I would test this by using HyperTerm to connect to the serial port. What are you using?
Do you have the com port set to 7 data bits and even parity?
If using HyperTerm you can do this from within the program.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
auscomAuthor Commented:
Dropping down to these settings we get close to readable ...

port is : /dev/cu.usbserial
flowcontrol : none
baudrate is : 2400
parity is : even
databits are : 7
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,

Terminal ready

The above line is getting closer to numeric.
I'd say the BAUD rate is right as half the text looks OK. Maybe try experimenting with parity: try odd and none.
auscomAuthor Commented:
Figured it out - but you were close! We had to drop the first bit (in python);

.join([chr(ord(char) & 0x7F) for char in text]

Gold now. Thanks!
auscomAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 500 points for akb's comment #a40632409
Assisted answer: 0 points for auscom's comment #a40634718

for the following reason:

The final operation was removing the first bit, that completes the solution
Good to see you got it figured.
You really don't think my help was worth any points? :(
auscomAuthor Commented:
ah sorry - it was I am a n00b to this. lemme see ...
Thanks auscom
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.