initial commit
commit
20a227cc53
@ -0,0 +1,125 @@
|
|||||||
|
from serial import Serial
|
||||||
|
from math import inf
|
||||||
|
import sys
|
||||||
|
import binascii
|
||||||
|
|
||||||
|
def crap_to_number(crap):
|
||||||
|
number_str = ""
|
||||||
|
for elem in crap:
|
||||||
|
switch={
|
||||||
|
0xcf:"9",
|
||||||
|
0xef:"8",
|
||||||
|
0x8a:"7",
|
||||||
|
0xe7:"6",
|
||||||
|
0xc7:"5",
|
||||||
|
0x4e:"4",
|
||||||
|
0x8f:"3",
|
||||||
|
0xad:"2",
|
||||||
|
0x0a:"1",
|
||||||
|
0xeb:"0"
|
||||||
|
}
|
||||||
|
number_str+=switch.get(elem, "-")
|
||||||
|
print(number_str)
|
||||||
|
|
||||||
|
|
||||||
|
def read_peaktech( port ):
|
||||||
|
try:
|
||||||
|
with Serial( port , 2400) as ser:
|
||||||
|
print(ser.name)
|
||||||
|
while True:
|
||||||
|
line = ser.read_until( b'\xf1' )
|
||||||
|
#print(binascii.hexlify(line))
|
||||||
|
|
||||||
|
good=1
|
||||||
|
if(len(line) == 15):
|
||||||
|
for i in range(0, 0xf):
|
||||||
|
if i+1 != ((line[i]&0xF0)>>4):
|
||||||
|
good=0
|
||||||
|
else:
|
||||||
|
good=0
|
||||||
|
|
||||||
|
bytearr = bytearray(line)
|
||||||
|
|
||||||
|
if(good==1):
|
||||||
|
for i in range(0, 0xf):
|
||||||
|
bytearr[i] = (bytearr[i] & 0x0F)
|
||||||
|
print(binascii.hexlify(bytearr))
|
||||||
|
|
||||||
|
num1 = (bytearr[1]<<4) | bytearr[2]
|
||||||
|
num2 = (bytearr[3]<<4) | bytearr[4]
|
||||||
|
num3 = (bytearr[5]<<4) | bytearr[6]
|
||||||
|
num4 = (bytearr[7]<<4) | bytearr[8]
|
||||||
|
|
||||||
|
crap_to_number([num1, num2, num3, num4])
|
||||||
|
|
||||||
|
if line[0:2] == b'\x1C\x20':
|
||||||
|
print("Ohm")
|
||||||
|
if line[0:2] == b'\x18\x20':
|
||||||
|
print("beep")
|
||||||
|
if line[0:1] == b'\x1e':
|
||||||
|
print("V DC")
|
||||||
|
if line[0:1] == b'\x1d':
|
||||||
|
print("V AC")
|
||||||
|
if line[0:2] == b'\x1c\x2e':
|
||||||
|
print("Hz")
|
||||||
|
if line[0:2] == b'\x18\x2e':
|
||||||
|
print("Temp")
|
||||||
|
|
||||||
|
#if (len(line) == 14) and (line[5] == 0x20):
|
||||||
|
# try:
|
||||||
|
# value = float( line[0:5].decode("ascii") )
|
||||||
|
|
||||||
|
# if line[6] == 0x31:
|
||||||
|
# value /= 10
|
||||||
|
# elif line[6] == 0x32:
|
||||||
|
# value /= 100
|
||||||
|
# elif line[6] == 0x33:
|
||||||
|
# value /= 1000
|
||||||
|
# elif line[6] == 0x34:
|
||||||
|
# value /= 10000
|
||||||
|
# except:
|
||||||
|
# value = inf
|
||||||
|
|
||||||
|
# if (line[9] & 0x80) != 0:
|
||||||
|
# prefix = "µ"
|
||||||
|
# elif (line[9] & 0x40) != 0:
|
||||||
|
# prefix = "m"
|
||||||
|
# elif (line[9] & 0x20) != 0:
|
||||||
|
# prefix = "k"
|
||||||
|
# elif (line[9] & 0x20) != 0:
|
||||||
|
# prefix = "M"
|
||||||
|
# else:
|
||||||
|
# prefix = ""
|
||||||
|
|
||||||
|
# if (line[10] & 0x80) != 0:
|
||||||
|
# unit = "V"
|
||||||
|
# elif (line[10] & 0x40) != 0:
|
||||||
|
# unit = "A"
|
||||||
|
# elif (line[10] & 0x20) != 0:
|
||||||
|
# unit = "Ω"
|
||||||
|
# elif (line[10] & 0x10) != 0:
|
||||||
|
# unit = "hFE"
|
||||||
|
# elif (line[10] & 0x08) != 0:
|
||||||
|
# unit = "Hz"
|
||||||
|
# elif (line[10] & 0x04) != 0:
|
||||||
|
# unit = "F"
|
||||||
|
# elif (line[10] & 0x02) != 0:
|
||||||
|
# unit = "℃"
|
||||||
|
# elif (line[10] & 0x01) != 0:
|
||||||
|
# unit = "℉"
|
||||||
|
# else:
|
||||||
|
# unit = ""
|
||||||
|
|
||||||
|
# print( f"{value}{prefix}{unit}" )
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
except Exception as ex:
|
||||||
|
print( "Exception:", ex )
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
port = "/dev/ttyUSB0"
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
port = sys.argv[1]
|
||||||
|
|
||||||
|
read_peaktech( port )
|
||||||
Loading…
Reference in New Issue