예제 #1
0
def check_data(data):
    if len(data)!=BUS_DATA_LEN:
        print('error data len')
        return 0
    if data[0]!=BUS_DATA_HEAD:
        print('error data head')
        return 0
    if data[-1]!=BUS_DATA_END:
        print('error data end')
        return 0
    if data[-2]!=crc_check(data[1:BUS_DATA_LEN-2]):
        print('error data checksum')
        return 0
    #公交车id判断
    #id=str(data[1:5],'gbk')
    #公交车线路判断
    #line=str(data[5:9],'gbk').strip()
    stream=str(data[9:13], 'gbk')
    if stream !='上行' and stream!='下行':
        print('line stream error, should be 上行 or 下行')
        return 0
    #公交车经纬度判断
    lng=float(str(data[13:21], 'gbk'))/600000
    if lng < 110 or lng > 120:
        print('lng %f error,out bound [110,120]'%lng)
        return 0
    lat=float(str(data[21:29], 'gbk'))/600000
    if lat < 30 or lat >40:
        print('lat %f error,out bound [30,40]'%lat)
        return 0
    return 1
예제 #2
0
def pack_clear_all():
    data=bytearray(5)
    data[0]=CODE_FRAME_HEAD
    data[1]=CODE_CLEAR
    data[2]=LEN_OF_CODE_CLEAR
    data[-2]=crc_check(data[:-2])
    data[-1]=CODE_FRAME_END
    return data
예제 #3
0
def pack_clear_line_txt(r_num):
    data=bytearray(6)
    data[0]=CODE_FRAME_HEAD
    data[1]=CODE_CLEAR_TEXT
    data[2]=LEN_OF_CODE_CLEAR_TEXT
    data[3]=r_num
    data[-2]=crc_check(data[:-2])
    data[-1]=CODE_FRAME_END
    return data
예제 #4
0
def pack_set_total_road(num):
    data=bytearray(6)
    data[0]=CODE_FRAME_HEAD
    data[1]=CODE_LINE
    data[2]=LEN_OF_CODE_LINE
    data[3]=num
    data[4]=crc_check(data[:-2])
    data[5]=CODE_FRAME_END
    return data
예제 #5
0
def pack_set_speed(type, speed, stop):
    data=bytearray(8)
    data[0]=CODE_FRAME_HEAD
    data[1]=CODE_SPEED
    data[2]=LEN_OF_CODE_SPEED
    data[3]=type
    data[4]=speed
    data[5]=stop
    data[-2]=crc_check(data[:-2])
    data[-1]=CODE_FRAME_END
    return data
예제 #6
0
def pack_set_line_txt(r_num, name, msg1, msg2):
    m1len=len(bytes(msg1, 'gbk'))
    m2len=len(bytes(msg2, 'gbk'))
    nlen=len(bytes(name, 'gbk'))
    tlen=m1len+m2len+4+4
    #len of name should less than 4
    if nlen < 4:
        name=name.rjust(4)
    if nlen > 4:
        name=name[0:4]
    data=bytearray(m1len+m2len+9+4)
    data[0]=CODE_FRAME_HEAD
    data[1]=CODE_TEXT
    data[2]=tlen
    data[3]=r_num
    data[4:8]=bytes(name, 'gbk')
    data[8]=m1len
    data[9:9+m1len]=bytes(msg1, 'gbk')
    data[9+m1len]=m2len
    data[10+m1len:-3]=bytes(msg2, 'gbk')
    data[-3]=0x1
    data[-2]=crc_check(data[:-2])
    data[-1]=CODE_FRAME_END
    return data