kopia lustrzana https://github.com/NanoVNA-Saver/nanovna-saver
				
				
				
			Add support for NanoVNA F V3 for reaching valid data points upto 801 (#751)
* add nanovna-f v3 supportpull/758/head
							rodzic
							
								
									a44a29485a
								
							
						
					
					
						commit
						3fa625e808
					
				|  | @ -30,6 +30,7 @@ from NanoVNASaver.Hardware.JNCRadio_VNA_3G import JNCRadio_VNA_3G | |||
| from NanoVNASaver.Hardware.NanoVNA import NanoVNA | ||||
| from NanoVNASaver.Hardware.NanoVNA_F import NanoVNA_F | ||||
| from NanoVNASaver.Hardware.NanoVNA_F_V2 import NanoVNA_F_V2 | ||||
| from NanoVNASaver.Hardware.NanoVNA_F_V3 import NanoVNA_F_V3 | ||||
| from NanoVNASaver.Hardware.NanoVNA_H import NanoVNA_H | ||||
| from NanoVNASaver.Hardware.NanoVNA_H4 import NanoVNA_H4 | ||||
| from NanoVNASaver.Hardware.NanoVNA_V2 import NanoVNA_V2 | ||||
|  | @ -58,6 +59,7 @@ NAME2DEVICE = { | |||
|     "H4": NanoVNA_H4, | ||||
|     "H": NanoVNA_H, | ||||
|     "F_V2": NanoVNA_F_V2, | ||||
|     "F_V3": NanoVNA_F_V3, | ||||
|     "F": NanoVNA_F, | ||||
|     "NanoVNA": NanoVNA, | ||||
|     "tinySA": TinySA, | ||||
|  | @ -140,12 +142,10 @@ def get_VNA(iface: Interface) -> VNA: | |||
|     # serial_port.timeout = TIMEOUT | ||||
|     return NAME2DEVICE[iface.comment](iface) | ||||
| 
 | ||||
| 
 | ||||
| def get_comment(iface: Interface) -> str: | ||||
|     logger.info("Finding correct VNA type...") | ||||
|     with iface.lock: | ||||
|         vna_version = detect_version(iface) | ||||
| 
 | ||||
|     if vna_version == "v2": | ||||
|         return "S-A-A-2" | ||||
| 
 | ||||
|  | @ -156,6 +156,7 @@ def get_comment(iface: Interface) -> str: | |||
|         ("NanoVNA-H 4", "H4"), | ||||
|         ("NanoVNA-H", "H"), | ||||
|         ("NanoVNA-F_V2", "F_V2"), | ||||
|         ("NanoVNA-F_V3", "F_V3"), | ||||
|         ("NanoVNA-F", "F"), | ||||
|         ("NanoVNA", "NanoVNA"), | ||||
|         ("tinySA4", "tinySA_Ultra"), | ||||
|  |  | |||
|  | @ -0,0 +1,68 @@ | |||
| #  NanoVNASaver | ||||
| # | ||||
| #  A python program to view and export Touchstone data from a NanoVNA | ||||
| #  Copyright (C) 2019, 2020  Rune B. Broberg | ||||
| #  Copyright (C) 2020,2021 NanoVNA-Saver Authors | ||||
| # | ||||
| #  This program is free software: you can redistribute it and/or modify | ||||
| #  it under the terms of the GNU General Public License as published by | ||||
| #  the Free Software Foundation, either version 3 of the License, or | ||||
| #  (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| #  GNU General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public License | ||||
| #  along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
| import logging | ||||
| 
 | ||||
| import serial | ||||
| from PyQt6.QtGui import QImage, QPixmap | ||||
| 
 | ||||
| from NanoVNASaver.Hardware.NanoVNA import NanoVNA | ||||
| from NanoVNASaver.Hardware.Serial import Interface | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
| 
 | ||||
| class NanoVNA_F_V3(NanoVNA): | ||||
|     name = "NanoVNA-F_V3" | ||||
|     screenwidth = 800 | ||||
|     screenheight = 480 | ||||
|     valid_datapoints = (101, 11, 51, 201, 301, 401, 501, 601, 701, 801) | ||||
|     sweep_points_min = 11 | ||||
|     sweep_points_max = 801 | ||||
| 
 | ||||
|     def __init__(self, iface: Interface): | ||||
|         super().__init__(iface) | ||||
|         self.sweep_max_freq_Hz = 6.3e9 | ||||
| 
 | ||||
|     def getScreenshot(self) -> QPixmap: | ||||
|         logger.debug("Capturing screenshot...") | ||||
|         if not self.connected(): | ||||
|             return QPixmap() | ||||
|         try: | ||||
|             rgba_array = self._capture_data() | ||||
|             image = QImage( | ||||
|                 rgba_array, | ||||
|                 self.screenwidth, | ||||
|                 self.screenheight, | ||||
|                 QImage.Format.Format_RGB16, | ||||
|             ) | ||||
|             logger.debug("Captured screenshot") | ||||
|             return QPixmap(image) | ||||
|         except serial.SerialException as exc: | ||||
|             logger.exception("Exception while capturing screenshot: %s", exc) | ||||
|         return QPixmap() | ||||
|      | ||||
|     def read_features(self): | ||||
|         super().read_features() | ||||
|         result = " ".join(self.exec_command("help")).split() | ||||
|         if "sn:" or "SN:" in result: | ||||
|             self.features.add("SN") | ||||
|             self.SN = self.getSerialNumber() | ||||
|              | ||||
|     def getSerialNumber(self) -> str: | ||||
|         return " ".join(list(self.exec_command("SN"))) if 'SN:' in " ".join(self.exec_command("help")).split() else " ".join(list(self.exec_command("sn"))) | ||||
		Ładowanie…
	
		Reference in New Issue
	
	 Songhua Liu
						Songhua Liu