|
本帖最后由 yhtjay 于 2014-12-29 20:36 编辑
- __author__ = 'Aaron'
- import serial
- import binascii
- ser = serial.Serial('com3', 9600) #设置端口号及波特率
- def read_distance():
- ser.write(b'\x55') #发送测距指令
- read_highlen = binascii.b2a_hex(ser.read(1)) #读取高位数据
- highlen = int(read_highlen.decode('utf-8'), 16) #16进制转10进制
- #print(highlen)
- read_lowlen = binascii.b2a_hex(ser.read(1)) #读取低位数据
- lowlen = int(read_lowlen.decode('utf-8'), 16) #16进制转10进制
- #print(lowlen)
- len_mm = highlen*256 + lowlen #高低位数据相加
- #print(len_mm, 'mm')
- return len_mm
- def read_temperature():
- ser.write(b'\x50') #发送测温指令
- read_tem = binascii.b2a_hex(ser.read(1)) #读取温度数据
- tem = int(read_tem.decode('utf-8'), 16) #16进制转10进制
- tem -= 45 #根据模块数据表计算
- #print(tem, '℃')
- return tem
- if __name__ == '__main__':
- precision = 5
- templist_1 = []
- for i in range(0, precision): #精度采样测算
- templist_0 = []
- for x in range(0, precision):
- templist_0.append(read_distance())
- print('每次最大值', templist_0)
- MaxOfList = max(templist_0)
- templist_1.append(MaxOfList)
- print('最终最大值', templist_1)
- final = sum(templist_1)/precision
- print('精确值是:%fmm' % final)
复制代码
本来以为要自己写冒泡,没想到内置函数中有MAX输出,Python真方便!
希望高手给我提提意见,我总觉得我的精度算法有问题,好像测量还是不准确。
|
|