Ft-817 Programming Software -
def set_frequency(freq_hz): """Set VFO A frequency on FT-817 (freq in Hz, e.g., 14250000)""" freq_bcd = [] freq = freq_hz // 10 # FT-817 uses 10 Hz steps for _ in range(5): # 5 BCD bytes (8 digits) freq_bcd.append(freq % 100) freq //= 100 freq_bcd.reverse()
ser.write(cmd) time.sleep(0.05) # Read response: 0x01 + status resp = ser.read(2) return resp def get_frequency(): """Read current VFO A frequency from FT-817""" cmd = bytes([0x03, 0x00, 0x00]) # Read frequency command cmd += bytes([calc_checksum(cmd)]) ft-817 programming software
def calc_checksum(cmd): """Calculate Yaesu checksum (two's complement of sum of bytes)""" total = sum(cmd) return (~total + 1) & 0xFF def set_frequency(freq_hz): """Set VFO A frequency on FT-817
# Command: 0x01 0x00 + 5 BCD bytes + checksum cmd = bytes([0x01, 0x00] + freq_bcd) cmd += bytes([calc_checksum(cmd)]) 0x00] + freq_bcd) cmd += bytes([calc_checksum(cmd)])