Ft-817 Programming: Software
ser.write(cmd) time.sleep(0.05) resp = ser.read(8) # Response: 0x03 + 5 BCD bytes + checksum? if len(resp) >= 6: freq_bcd = resp[1:6] freq_hz = 0 for b in freq_bcd: freq_hz = freq_hz * 100 + (b >> 4) * 10 + (b & 0x0F) return freq_hz * 10 return None ser = serial.Serial(CAT_PORT, BAUD, bytesize=BYTESIZE, parity=PARITY, stopbits=STOPBITS, timeout=1) time.sleep(0.5) Example: Set to 14.250 MHz set_frequency(14250000) print("Frequency set to 14.250 MHz") Read back f = get_frequency() if f: print(f"Readback: f/1e6:.6f MHz")
def calc_checksum(cmd): """Calculate Yaesu checksum (two's complement of sum of bytes)""" total = sum(cmd) return (~total + 1) & 0xFF ft-817 programming software
# Command: 0x01 0x00 + 5 BCD bytes + checksum cmd = bytes([0x01, 0x00] + freq_bcd) cmd += bytes([calc_checksum(cmd)]) ft-817 programming software
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

