Wie kann man eine Pyserial Klasse aus Commando shell aufrufen?
Verfasst: Mittwoch 19. April 2023, 13:01
Ich habe einen seriellen Port den ich benutzen möchte um die Controllines (RTS etc.) zu benutzen. Das klappt auch wenn das Pythonskript direkt aus der IDLE aufgerufen wird. Nun habe ich jedoch die Anforderung dass das Skript von einer externen Applikation gestartet werden muss. Das heisst ich möchte nun zum Beispiel per Command CMD (Windows) dieses Pythonskript aufrufen und danach zu jedem beliebigen Zeitpunkt die RTS Leitung ein- oder ausschalten.
Was momentan geht ist jedoch lediglich die IDLE aufzurufen welche mir dann die Klasse instanziert. Danach ist die IDLE offen und ich kann nur noch in der IDLE weitere Methoden dann aufrufen. ich möchte jedoch an dieser Stelle von der externen Applikation die Methode aufrufen, was aber irgendwie nicht so funktioniert.
Hier mein Skript:
Der Aufruf im Command Shell ist dann einfach:
Das öffnet (und bleibt dann offen) die IDLE von welcher ich dann die Methode aufrufen kann. Aber eben die Frage ist wie könnte ich dies auch von einem externen Programm aus machen (mit oder ohne IDLE)?
Danke
Was momentan geht ist jedoch lediglich die IDLE aufzurufen welche mir dann die Klasse instanziert. Danach ist die IDLE offen und ich kann nur noch in der IDLE weitere Methoden dann aufrufen. ich möchte jedoch an dieser Stelle von der externen Applikation die Methode aufrufen, was aber irgendwie nicht so funktioniert.
Hier mein Skript:
Code: Alles auswählen
from ast import If
import sys
import serial
import datetime
import time
import logging
import fire
from serial import Serial
class Russ_GPIO(object):
def __init__(self, port="COM4", baud=57600, timeout=0.1, parity=serial.PARITY_NONE, do_not_open=False):
self.com4 = serial.Serial("COM4", baud, rtscts=False, dsrdtr=False, timeout=timeout, parity=parity)
self.com4.break_condition = False
self.com4.setDTR(0)
self.com4.setRTS(0)
def set_gpio(self, chn, state):
print("first: ", chn, state)
if chn == 0:
if state == 0:
self.com4.break_condition = False
self.com4.setDTR(False)
self.com4.setRTS(False)
x= Russ_GPIO()
Der Aufruf im Command Shell ist dann einfach:
Code: Alles auswählen
python -m idlelib -r ComPort.py
Das öffnet (und bleibt dann offen) die IDLE von welcher ich dann die Methode aufrufen kann. Aber eben die Frage ist wie könnte ich dies auch von einem externen Programm aus machen (mit oder ohne IDLE)?
Danke