Что касается заявления о «серверности», то «HighFinesse использует довольно уникальную систему управления. Во-первых, необходимо установить управляющее программное обеспечение, которое однозначно привязано к конкретному волномеру и поставляется вместе с ним. Теоретически программное обеспечение от другого волномера все еще может работать, но результаты не гарантируются. Во-вторых, это управляющее программное обеспечение запускает сервер приложений, который обрабатывает все запросы от Это означает, что основное приложение должно быть запущено для выполнения любого взаимодействия с устройством из кода. Код имеет возможность автоматического запуска, но в некоторых случаях он может дать сбой, и в этом случае необходимо либо запустить его вручную, либо указать местоположение исполняемого файла.», как указано на веб-сайте pyliblabs.
Когда я запускаю следующий код в .ipynb с управляющим программным обеспечением, работающим локально (которое поставляется только с устройством), код работает отлично и переключает экспозицию по желанию.
Код: Выделить всё
from wlm import WavelengthMeter
wlm = WavelengthMeter(dllpath="C:\\Users\\mydllPath\\wlmData.dll")
print(f"Exposure mode set: {wlm.SetExposureMode(0)}") # Returning false = manual mode
print(f"Exposure 1 acquired: {wlm.GetExposure(array_index=1)} ")
print(f"Exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
print(f"Exposure 1 set: {wlm.SetExposure(11, array_index=1)}")
print(f"Exposure 2 set: {wlm.SetExposure(22, array_index=2)}")
print(f"New exposure 1 acquired: {wlm.GetExposure(array_index=1)}")
print(f"New exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
Код: Выделить всё
Exposure 1 acquired: 12 #preset
Exposure 2 acquired: 18 #preset
Exposure 1 set: 0 #success
Exposure 2 set: 0 #success
New exposure 1 acquired: 11
New exposure 2 acquired: 22
Код: Выделить всё
from wlm import WavelengthMeter
from PyQt5 import QtWidgets
import sys
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
wlm = WavelengthMeter(dllpath="C:\\mydllPath\\wlmData.dll")
print("Secondary exposure loop beginning now...")
print(f"Exposure 1 acquired: {wlm.GetExposure(array_index=1)} ")
print(f"Exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
print(f"Exposure 1 set: {wlm.SetExposure(10, array_index=1)}")
print(f"Exposure 2 set: {wlm.SetExposure(20, array_index=2)}")
print(f"New exposure 1 acquired: {wlm.GetExposure(array_index=1)}")
print(f"New exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
if __name__ == "__main__":
# print("Attempting initial exposure set")
# print(f"Exposure 1 acquired: {wlm.GetExposure(array_index=1)} ")
# print(f"Exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
# print(f"Exposure 1 set: {wlm.SetExposure(10, array_index=1)}")
# print(f"Exposure 2 set: {wlm.SetExposure(20, array_index=2)}")
# print(f"New exposure 1 acquired: {wlm.GetExposure(array_index=1)}")
# print(f"New exposure 2 acquired: {wlm.GetExposure(array_index=2)}")
app = QtWidgets.QApplication(sys.argv)
MainWindow_object = MainWindow()
MainWindow_object.show()
sys.exit(app.exec_())
Код: Выделить всё
Exposure 1 acquired: 12 #preset
Exposure 2 acquired: 18 #preset
Exposure 1 set: -3 #unknown
Exposure 2 set: -3 #unknown
New exposure 1 acquired: 12 #did not change
New exposure 2 acquired: 28 #did not change