前文分析了引闪器的协议,本文将解析并生成对应的文件供 Flipper Zero 调用。
Raw 文件格式解析:
1 2 3 4 5 6
| Filetype: Flipper SubGhz Key File Version: 1 Frequency: 433810000 // 这里是频率,单位 Hz Preset: FuriHalSubGhzPresetOok270Async // 这里可以改 AM270/AM650 Protocol: RAW RAW_Data: 50 -50 50 -50 50 -50 // 正数代表高电平 数字代表持续时间(us),这里表示 101010 每个电平 50us
|
在知道发射位图的情况下,可以很轻松的写出一个程序批量生成对应文件。
这是一个简易的位图转换 Raw_Data 函数:
1 2 3 4 5 6 7 8 9 10 11 12 13
| def convert_binary(binary_str): output_list = [] for ch in binary_str: if ch == '1': output_list.append("50") elif ch == '0': output_list.append("-50") else: continue return " ".join(output_list) binary_str = "101010" result = convert_binary(binary_str) print(result)
|
下面写一个程序遍历从 0000 到 1111 状态并保存到文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| def convert_binary(binary_str): output_list = [] for ch in binary_str: if ch == '1': output_list.append("50") elif ch == '0': output_list.append("-50") else: continue return " ".join(output_list)
def convert_to_bitmap(status_str): result = f"1{status_str[2] * 3}01{status_str[1] * 3}01{status_str[0] * 3}01{status_str[3] * 3}01" result = result.replace('000', '') result = f"{result}000" * 10 result = result[:-3] return result
for i in range(16): sw_status = format(i, '04b') bitmap = convert_to_bitmap(sw_status) raw_data = convert_binary(bitmap)
file_data = "Filetype: Flipper SubGhz Key File\n" \ "Version: 1\n" \ "Frequency: 433810000\n" \ "Preset: FuriHalSubGhzPresetOok270Async\n" \ "Protocol: RAW\n" \ f"RAW_Data: {raw_data} 20000 -20000 20000 -20000 20000 -20000 20000 -20000 20000 -20000\n"
print(file_data) with open(f'tiggers/flash-tigger-{sw_status}.sub', 'w') as f: f.write(file_data)
|
生成完后,把文件复制进去就可以用了。
本文作者 : hank9999
版权声明 :本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!
本文链接 : https://blog.hank.ltd/flipper-zero-sub-ghz-raw-data-sub-generate/