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.

\xf8\x80x\x00x\x00x\xf8x\x80\x00\x80\x00\x80\x00\x80\x00\x80\x80\x80\xf8\x80xx\xf8x\x80\x00\xf8\xf8x\xf8\x80x\x00\x80x

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).

Thanks!
auscomAsked:
Who is Participating?
 
akbCommented:
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.
0
 
akbCommented:
What Make/Model are the scales?
0
 
auscomAuthor Commented:
FG-150KBM
digital platform scale
A&D company
0
WEBINAR: 10 Easy Ways to Lose a Password

Join us on June 27th at 8 am PDT to learn about the methods that hackers use to lift real, working credentials from even the most security-savvy employees. We'll cover the importance of multi-factor authentication and how these solutions can better protect your business!

 
akbCommented:
Have a look here:
http://www.aandd.jp/products/manual/balances/newfg.pdf
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.
0
 
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?
0
 
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
SԬ+0000�.�9���

The above line is getting closer to numeric.
0
 
akbCommented:
I'd say the BAUD rate is right as half the text looks OK. Maybe try experimenting with parity: try odd and none.
0
 
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!
0
 
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
0
 
akbCommented:
Good to see you got it figured.
You really don't think my help was worth any points? :(
0
 
auscomAuthor Commented:
ah sorry - it was I am a n00b to this. lemme see ...
0
 
akbCommented:
Thanks auscom
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.