#!/usr/bin/env python3 """RT-4D DMR-модуль: чтение/запись частотного трима VCCN через 0x68 (Linux, ttyACM0). Рация в режиме «Обновление DMR чипа». 0x68: 68 cmd 01 01 00 00 lenHi lenLo 10 (CRC не проверяется). """ import serial, time, sys, argparse def frame(cmd, payload=b""): return bytes([0x68,cmd,1,1,0,0,(len(payload)>>8)&0xFF,len(payload)&0xFF])+payload+bytes([0x10]) def xfer(sp, fr, wait=0.4): sp.reset_input_buffer(); sp.write(fr); time.sleep(0.03) b=b""; t=time.time() while time.time()-t пишу DMR VCCN band1&2 = 0x{a.val:02x}") xfer(sp,frame(0xB4,bytes([1,1,a.val]))) # write band1 xfer(sp,frame(0xB4,bytes([1,2,a.val]))) # write band2 w=parse(xfer(sp,frame(0xBD,bytes([1])))) # WriteAll print(" WriteAll:", "OK" if w and w['st']==0 else f"st={w['st'] if w else '?'}") nb1,nb2=rd(1),rd(2) print(f" прочитал обратно: band1=0x{nb1:02x} band2=0x{nb2:02x}") xfer(sp,frame(0xB0,bytes([1,0]))) # CloseCal sp.close() if __name__=="__main__": main()