python Socket envoi de la commande ascii et d'obtenir des réponses
Je suis en train d'essayer d'établir la connexion à un ADAM-4017+ module d'e/S sur le réseau à l'aide d'un Lantronix EDS2100 module par le biais de communication par socket en python. Pour la vie de moi je ne peux pas le faire fonctionner.
L'EDS a une adresse IP et un port (10001) que l'adam appareil est raccordé. Je suis en train de la requête de l'adam, pour la valeur de ch 1 (ascii commande est #000)
Toute aide grandement appréciée:
import socket
edsIP = "192.168.1.135"
edsPORT = 10001
MESSAGE="#000\r"
srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
srvsock.bind( ('',23000))
srvsock.listen(1)
newsock, (remhost, remport) = srvsock.accept()
srvsock.send((MESSAGE),(edsIP, EdsPORT) )
while 1:
data, addr = srvsock.recv(4096)
print ("received message:", data,addr)
srvsock.close()
- Est le flux de travail censé être que vous écoutez pour une connexion à partir de l'unité, plutôt que de se connecter à elle? De ce que je vois, vous liez un port et d'attente pour les connexions.
- flux de travail est comme suit: envoyer la commande ascii et de recevoir la réponse
Vous devez vous connecter pour publier un commentaire.
Je ne sais rien à propos de cet appareil en particulier, mais à partir de votre description, vous avez dit à ses attend une connexion sur le port 10001. Mais ce que vous faites dans votre code à l'ouverture de votre propre prise et d'écoute pour les connexions sur le port 23000, puis, en attente de connexion. Si vous n'avez pas à attendre quelque chose pour vous connecter à vous, alors vous aurez seulement être en attente pour aucune raison.
Si votre appareil a besoin est de vous connecter et d'envoyer un message, alors je pense que ce serait faire:
Mise à jour
Vos commentaires suggèrent que vous utilisez peut-être python3. Si oui, vous pourriez avoir à ajuster le code comme ceci:
Et lorsque vous recevez votre
bytes
réponse, si vous voulez la transformer en une chaîne de caractères:Le seul problème que je peux voir directement, c'est que vous avez mis en retrait le tout relevé par un espace, mais c'est probablement juste de couper et coller ici.
Après quelques tests, Il est clair que lorsque vous essayez d'accepter sur le serversocket il permet de bloquer, de sorte que vous n'êtes jamais à envoyer quoi que ce soit sur votre appareil.