HackRF / Portapack ADS-B/GPS地图Bin文件生成问题的解决方法
可能是因为时间过久的原因,在使/firmware/tools下执行python adsb_map.py时,会提示:
TypeError: can only concatenate str (not "bytes") to str 这样的报错,原因是在python3中,没有bytes和string的编码转换,解决方法:
1. 使用python2进行操作;
2. 使用以下代码替换adsb_map.py的执行内容,它在我的MacOS上工作良好,据外友反馈在Windows WSL Ubuntu中也工作良好,而不能直接在Windows的Python3 x64中使用。
from __future__ import print_function
import sys
import struct
from PIL import Imageoutfile = open('../../sdcard/ADSB/world_map.bin', 'wb')# Allow for bigger images
Image.MAX_IMAGE_PIXELS = None
im = Image.open("../../sdcard/ADSB/world_map.jpg")
pix = im.load()outfile.write(struct.pack('H', im.size[0]))
outfile.write(struct.pack('H', im.size[1]))print("Generating: \t" + outfile.name + "\n from\t\t" + im.filename + "\n please wait...");for y in range (0, im.size[1]):line = ''for x in range (0, im.size[0]):# RRRRRGGGGGGBBBBBpixel_lcd = (pix[x, y][0] >> 3) << 11pixel_lcd |= (pix[x, y][1] >> 2) << 5pixel_lcd |= (pix[x, y][2] >> 3)# RRRGGGBB to# RRR00GGG000BB000# pixel_lcd = (pix[x, y][0] >> 5) << 5# pixel_lcd |= (pix[x, y][1] >> 5) << 2# pixel_lcd |= (pix[x, y][2] >> 6)line += str(struct.pack('H', pixel_lcd))outfile.write(line.encode('utf-8'))print(str(y) + '/' + str(im.size[1]) + '\r', end="")print("Ready."); 记得如果提示:
ModuleNotFoundError: No module named 'PIL' 因为没有安装Pillow;
pip3 install Pillow 然后乖乖等待地图文件生成即可:
如果你生成的世界地图文件大于4Gb时,基于FAT32的SD/TF卡是无法使用的,作者的反馈是他也无能为力,只能减小文件体积解决。
开源的分支应该解决了这个问题,建议参考这个地址选择你的设备:开源需要大家共同维护~
https://github.com/eried/portapack-mayhem/wiki/PortaPack-Versions
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
