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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部