Flavio codeco coelho wrote:
Hi,
I am using pyserial to acquire data from an A/D converter plugged to my serial port.
my hardware represents analog voltages as 12bit numbers. So, according to the manufacturer, this number will be stored in two bytes like this; |-------------bits(1-8)-----------| Byte1: x x x n1 n2 n3 n4 n5 Byte2: x n6 n7 n8 n9 n10 n11 n12
where x is some other information, and nx are the digits of my number.
My problem is to how to recover my reading from these bytes, since pyserial gives me a character (string) from each byte... I dont know how to throw away the unneeded bits and concatenate the remaining bits to form a number...
Flávio Codeço Coelho
Try something like (here I'm assuming that n12 is the least-significant bit) (untested):
((ord(byte1) & 31) << 7 ) + (ord(byte2) & 127)
This takes the rightmost five bits from the first byte's integer value, shifts them up seven bits, and then adds the rightmost seven bits of the second byte's integer value.
regards Steve -- Steve Holden http://www.holdenweb.com/ Python Web Programming http://pydish.holdenweb.com/ Holden Web LLC +1 703 861 4237 +1 800 494 3119 -- http://mail.python.org/mailman/listinfo/python-list