我正在使用Bottle,socket和serial在客户端和服务器之间进行通信以打开电机。这段代码在我的机器上运行良好,但是当我尝试将其联机时,我收到网络连接错误。我被告知我应该使用websockets而不是套接字(以避免尝试仅使用IP),但不知道从哪里开始实现websockets。我正在寻找任何建议,并通过示例帮助我在线获取此信息。我在PythonAnywhere.com上主持并为我的帐户提供套接字支持。
Server.py
DECLARE @id INT
SET @id = (select MAX(Code) from Items)
SET @id =@id+1
insert into Items (Code,Name) values(@id,'m')
Client.py
from socket import *
import serial
host = ''
port = 7000
our_socket = socket(AF_INET, SOCK_STREAM)
our_socket.bind((host, port))
our_socket.listen(1)
conn, addr = our_socket.accept()
print ('Received motor start request from ' + str(addr))
data = conn.recv(1024)
arduinoData = serial.Serial('/dev/cu.usbmodem1421',9600)
arduinoData.write("1".encode())
reply = input("Hit 1 to allow motor request: ")
conn.send(bytes(reply,'UTF-8'))
data = conn.recv(1024)
arduinoData = serial.Serial('/dev/cu.usbmodem1421',9600)
arduinoData.write("1".encode())
reply = input()
conn.send(bytes(reply,'UTF-8'))
data = conn.recv(1024)
arduinoData = serial.Serial('/dev/cu.usbmodem1421',9600)
arduinoData.write("0".encode())
conn.close()
它如何出现在我身上
我的代码原始而简单,但到目前为止一直有效。对于在线问题,似乎这里唯一缺少的是连接到我的本地机器的方法。我原本以为它就像IP一样简单,但似乎存在问题。
ASCII图
什么有效:
Client.py(离线瓶网站)< -----> Server.py(在我的机器上)------> Arduino IDE
什么不起作用:
互联网------> Client.py(online @ PythonAnywhere)< -----> Server.py(在我的机器上)------> Arduino IDE
谢谢