最近需要对一个买来的测温探头进行可靠性测试,探头是通过串口方式接受命令传输数据的,使用串口助手接受到的数据还需要进行计算显示不直观,加之准备连续测试几天,所以就想着写一个脚本把接受到的数据直接转换存入记事本中以便后面分析。
python版本:3.6.3
另需要安装serial模块:
pip3 install pyserial //python3
脚本如下: https://github.com/zpblog/python3-serial
import serial
import binascii
import struct
import time
# 创建serial实例
serialport = serial.Serial()
serialport.port = 'COM3'
serialport.baudrate = 115200
serialport.parity = 'N'
serialport.bytesize = 8
serialport.stopbits = 1
serialport.timeout = 0.2
while 1:
serialport.open()
# 发送数据
d=bytes.fromhex('0B 0B')
serialport.write(d)
#print (d)
# 接收数据
str1 = serialport.read(2)
data= binascii.b2a_hex(str1)
data1=str((int(data,16)-1000)/10)
print(data1)
# 获取日期
time1=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
#字符串合并
data2 = time1 + ' ' + data1
#print(data2)
# 写入文件
f1 = open('D:/temprecord.txt','a')
f1.write(data2 + '\n')
f1.close()
time.sleep(0.5)
serialport.close()再记一个发射率0.1~1可调的验证脚本
import serial
import binascii
import struct
import time
# 创建serial实例
serialport = serial.Serial()
serialport.port = 'COM14'
serialport.baudrate = 115200
serialport.parity = 'N'
serialport.bytesize = 8
serialport.stopbits = 1
serialport.timeout = 0.5
#异或校验
def uchar_checkbcc(data, byteorder='little'):
'''''
char_checkbcc 按字节计算异或校验。
@param data: 字节串
@param byteorder: 大/小端
'''
length = len(data)
checkbcc = 0
for i in range(0, length):
checkbcc ^= int.from_bytes(data[i:i+1], byteorder, signed=False)
checkbcc = hex(checkbcc)[2:]
return checkbcc
#LRC校验
def uchar_checklrc(data, byteorder='little'):
'''''
char_checksum 按字节计算校验和补码。
@param data: 字节串
@param byteorder: 大/小端
'''
length = len(data)
checksum = 0
for i in range(0, length):
checksum += int.from_bytes(data[i:i+1], byteorder, signed=False)
checksum &= 0xFF # 强制截断
checklrc = hex(2**8-checksum)[2:] #补码
return checklrc
i = 1000
while (i > 99):
serialport.open()
# 发送数据
#d=bytes.fromhex('0d03ded0')
value = hex(int(i))[2:]
if len(value) % 2 != 0:
value = '0d0' + value
elif len(value) % 4 != 0:
value = '0d00' + value
xx = bytes.fromhex(value)
yy = uchar_checkbcc(xx)
if len(yy) % 2 != 0:
yy = '0' + yy
d = value + yy
d1 = bytes.fromhex(d)
serialport.write(d1)
print (d1)
# 接收数据
str1 = serialport.read(2)
print(str1)
str2 = str1 + bytes(1)
data2= binascii.b2a_hex(str2)
if(int(data2,16) == 0):
str1 = bytes([1])
data= binascii.b2a_hex(str1)
print(data)
data1=str(int(data,16)/1000)
print(data1)
# 获取日期
time1=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
#字符串合并
data2 = time1 + ' ' + str(i) + ' '+ str(d) +' ' +data1
print(data2)
# 写入文件
f1 = open('D:/temprecord.txt','a')
f1.write(data2 + '\n')
f1.close()
i = i - 10
time.sleep(3)
serialport.close()评论列表:
八角网赚站
评论于2017-12-29 22:23:42
虽然看不大懂,但还是支持一下! - 回复该评论
代写英文
评论于2018-07-03 18:36:30
期待楼主的更新 - 回复该评论
今日头条新闻
评论于2020-05-18 21:23:26
文章还不错支持一下 - 回复该评论
今日新鲜事
评论于2020-10-10 01:42:54
文章不错支持一下 - 回复该评论
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
相关文章
转:如何让 Windows 命令行程序像 Linux & 命令那样在后台运行2023-02-24
转:Linux站点备份打包脚本2020-04-05
域账号弱口令批量检查-PowerShell2016-09-22
Bat选择性拷贝文件夹里文件2016-09-13
Bat脚本转换成EXE可执行文件2016-08-29
Windows目标服务器端口监测脚本微信通知2016-08-25
Windows批量建文件夹和寻找目录下空文件夹2016-08-13
bat脚本设置开机启动并去除黑框2015-04-25
windows搜索文件内容并拷贝文件到指定目录2015-04-12