Forum >> Programmazione Python >> Scripting >> Problemi nel lanciare script py usando VB6

Pagina: 1

Buongiorno a tutti, premetto che non conosco python e magari sto facendo errori grossolani.

Devo comandare un'apparecchiatura tramite LAN ed il costruttore mi ha detto che tramite python posso eseguire alcune operazioni da remoto.

COmando gia altri apparati simili ma tramite seriale.

Il programma di controllo è scritto in VB6.

Uso python 2.7 perchè il sistema di apparecchiature è controllato da un pc con XP e non posso fare altrimenti


Per capire se funziona tutto il "giro software",prima programmare tutto, uso un tasto command e non faccio altro che lanciare >> shell ("python script_test.py") per vedere se


la macchina risponde regolarmente.

Il problema è questo:


lanciando il comando via shell all'interno di VB6 , si vede che viene aperta la finestra CMD ma la macchina non risponde.

Lanciando lo stesso scrip ma in maniera manuale da CMD aperta, lo script funziona.

Lo scrip è residente nella dir del programma.Il path del sistema è corretto.


Lo script è molto semplice...ma non capisco questo comportamento.

Qualcuno mi puo dare degli spunti?

Grazie e scusate


Mario


# Imports socket from Python
import socket

# Host is console's IP
host ="192.168.0.128"
# Port must be 49280
port =49280

#Establishes variables and connects to console
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))

# Recalls scene A0
s.sendall("ssrecall_ex scene_a 0\n".encode())

# receive a message before closing socket
s.recv(1500)

# Closes socket
s.close ()







--- Ultima modifica di iz1kbp in data 2021-02-16 17:21:11 ---
Ciao

Ovviamente non so cosa dovrebbe fare la Tua connessione ma così come è impostato lo script python credo che dovrebbe aprirsi un attimo la finestra di CMD e subito chiudersi, prova ad inserire un print per vedere se hai ricevuto qualcosa e blocca la finestra, p.e. con un input, una cosa così nella parte finale:

# Recalls scene A0
s.sendall("ssrecall_ex scene_a 0\n".encode())

# receive a message before closing socket
ricv = s.recv(1500)

# Closes socket
s.close ()

print(ricv.decode('ascii'), '\n')
input('Premere INVIO per terminate')
giusto per verificare se lo script viene eseguito e se la connessione viene effettuata.
Potresti avere degli errori, in tal caso continueresti a vedere solo un attimo la finestra di CMD, e la decodifica in ascii del buffer ricevuto potrebbe non essere "giusta" ma più o meno il senso lo hai ...

Per altro, giusto a titolo informativo, la versione "3.4.1" di python gira su XP 32 bit (non oltre quella però)




Edit mi sono accorto solo ora i aver inserito "ricv =" allo invio dati invece che alla ricezione, corretto nel codice





Scusate la distrazione.


Ciao



--- Ultima modifica di nuzzopippo in data 2021-02-17 13:51:54 ---
Fatti non foste a viver come bruti...
Ciao...ho risolto lato VB6.
Un controllo sulla stringa rimaneva in loop.il # metteva in attesa un'altro script.
Grazie comunque per il supporto!! :ok:
Mario


Pagina: 1



Esegui il login per scrivere una risposta.