"Windows 7系统下的脚本无法在树莓派上的Debian系统工作,仅显示方括号 [ ]"

2024-09-28 05:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

#脚本在win7python下工作,但在raspberry pi上不是debian,它只显示方括号[] #它不会出错。数据是通过ftdi电缆异步串行rs232

#这是一条测试线

import serial


def tobits(s):

    result = []
    for c in s:
        bits = bin(ord(c))[2:]
        bits = '00000000'[len(bits):] + bits
        result.extend([int(b) for b in bits])
    return result


def frombits(bits):

    chars = []
    for b in range(len(bits) / 8):
        byte = bits[b*8 :(b+1) * 8]
        chars.append(chr(int(''.join([str(bit) for bit in byte]), 2)))
    return ''.join(chars)


def bin(x, digits=0):
    oct2bin = ['000', '001', '010', '011', '100', '101', '110', '111']
    binstring = [oct2bin[int(n)] for n in oct(x)]
    return ''.join(binstring).lstrip('0').zfill(digits)


def chomp(s):
    if s.endwith('\n'):
        return s[:-1]
    else:
        return s

haveradar = True
if haveradar == True:
    serradar = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
    print "Radar is using " + serradar.portstr
    radarf = open('/home/pi/scripts/dump1.txt', 'w')
else:
    serradar = "    !R"
    print "dummy radar feed"
timerf = open('/home/pi/scripts/dump2.txt', 'w')

# Loop for data collection
x=0
while x < 200:

    if haveradar == True:
        radarline = serradar.readline()  # variable holder radarline = radar output data
        radarf.write(radarline)

    else:
        radarline = serradar  
    # Extract radar data
    radarsplitstring = [ord(c) for c in radarline]
    print radarsplitstring
#   if len(radarsplitstring) >= 3:
    if len(radarsplitstring) >= 3:

#Two car mode:   Target=field 2, Lock=field 4, Patrol=field 3, PatrolLock= field 6
#Three car mode: Target=field 2, Lock=field 4, Patrol=Patrol ?
#radarstring uses binary numbering, to extract Target from binary stream:value=ascii-1 '1=T, 3=L, 5=P'
        radarstring = "T: " + str(radarsplitstring[1]) + "   L: " + str(radarsplitstring[3]) + "   P: " + str(radarsplitstring[5])
        #print radarsplitstring prints parsed radar output converted to ascii
        #print radarstring prints
        try:
            outf = open('/home/pi/scripts/dump3.txt', 'w')
            outf.write(radarstring)
            outf.flush
            outf.close()
        except:
            print "**file write failure**"

# Wrap up
if haveradar == True:
    serradar.close()
    radarf.close()
timerf.close()

Tags: infieldforlenreturnifdefpi

热门问题