如何解决Python - 如何通过串行发送十六进制字符串?
我想通过串行发送十六进制命令。如果我手动发送它,例如:ser_track.write("\x45\x00\x00\xff\xfa")
这非常有效。但是,当我将 "\x45\x00\x00\xff\xfa" 放在变量上然后尝试发送它时,它不起作用,尽管我没有收到错误消息。
非常期待社区的帮助!这是我的简陋代码:
import serial,time,sys
from textwrap import wrap
# open the serial port with the SPACEBALL
ser_track = serial.Serial('COM12',19200,timeout=None,xonxoff=False,rtscts=False,dsrdtr=False)
ser_track.reset_input_buffer()
ser_track.open
value2 = -6 # we want to send a negative number
el_counts_to_move = value2
def tohex(val,nbits):
return hex((val + (1 << nbits)) % (1 << nbits))
el_counts_to_move_in_hex = tohex(el_counts_to_move,16)
print "\nNEG: ",el_counts_to_move_in_hex
el_counts_to_move_in_hex1 = el_counts_to_move_in_hex[1:4]
el_counts_to_move_in_hex2 = el_counts_to_move_in_hex[-2:]
hex_buildA = el_counts_to_move_in_hex1 + "\\x" + el_counts_to_move_in_hex2
hex1 = r'\x45\x00\x00\{}'.format(hex_buildA)
print "HEX1: ",hex1
# this works:
#ser_track.write("\x45\x00\x00\xff\xfa")
print "Sending EL command now...",hex1
ser_track.write(hex1)
print "\n\n"
输出:
NEG: 0xfffa
HEX1: \x45\x00\x00\xff\xfa
Sending EL command now... \x45\x00\x00\xff\xfa
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。