Python 该脚本在Windows7下工作,而不是在raspberry pi上使用debian,它只显示方括号[]

Python 该脚本在Windows7下工作,而不是在raspberry pi上使用debian,它只显示方括号[],python,raspberry-pi,Python,Raspberry Pi,#脚本在Win7 PYTHON下工作,但在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.exte

#脚本在Win7 PYTHON下工作,但在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()
导入序列号
def托比特币:
结果=[]
对于s中的c:
bits=bin(ord(c))[2:]
位='00000000'[len(位):]+位
结果.扩展([int(b)表示b的位])
返回结果
def frombits(位):
字符=[]
对于范围内的b(长度(位)/8):
字节=位[b*8:(b+1)*8]
chars.append(chr(int(“”.join([str(bit)表示字节中的位]),2)))
返回“”。加入(字符)
def箱(x,数字=0):
oct2bin=['000','001','010','011','100','101','110','111']
binstring=[oct2bin[int(n)]表示10月(x)的n
返回“”。join(bin字符串).lstrip('0').zfill(数字)
def chomp(s):
如果s.endwith('\n'):
返回s[:-1]
其他:
返回s
haveradar=True
如果haveradar==真:
serradar=serial.serial('/dev/ttyUSB0',9600,超时=1)
打印“雷达正在使用”+serradar.portstr
radarf=open('/home/pi/scripts/dump1.txt',w')
其他:
serradar=“!R”
打印“虚拟雷达馈送”
timerf=open('/home/pi/scripts/dump2.txt',w')
#数据收集循环
x=0
当x<200时:
如果haveradar==真:
雷达线=serradar.readline()#可变支架雷达线=雷达输出数据
radarf.write(雷达线)
其他:
雷达线
#提取雷达数据
radarsplitstring=[ord(c)表示radarline中的c]
打印雷达管柱
#如果len(radarsplitstring)>=3:
如果len(radarsplitstring)>=3:
#两车模式:目标=场2,锁定=场4,巡逻=场3,巡逻锁定=场6
#三车模式:目标=场2,锁定=场4,巡逻=巡逻?
#radarstring使用二进制编号,从二进制流中提取目标:value=ascii-1'1=T,3=L,5=P'
radarstring=“T:”+str(radarsplitstring[1])+“L:”+str(radarsplitstring[3])+“P:”+str(radarsplitstring[5]))
#打印雷达plitString打印转换为ascii的解析雷达输出
#打印雷达串打印
尝试:
outp=open('/home/pi/scripts/dump3.txt',w')
输出写入(雷达管柱)
冲水
出口关闭()
除:
打印“**文件写入失败**”
#收尾
如果haveradar==真:
serradar.close()
radarf.close()
timerf.close()

我建议您考虑添加一些日志记录:。这就像调用
logging.info(“这是一条日志行”)
一样简单,可以让您更好地了解程序正在做什么。