socket_client=''
# 初始化TCP客户端,连接视觉服务端,等待信号
def TCPClient_Vision():
global socket_client
socket_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
data=""
try:
ip_Vision="127.0.0.1"
port=6000
socket_client.connect((ip_Vision,port))
print('Successful to initialize tcpclient_Vision.')
except Exception as e:
print(e)
while True:
try:
data=socket_client.recv(1024).decode('utf-8')
# print(data)
if data == 'true':
print('下单成功')
else:
print('请重新下单')
except UnicodeDecodeError:
print('error')
time.sleep(0.1)
def VisionInit():
labe10="SetGlobalValue:labe10=0"
labe11="SetGlobalValue:labe11=0"
labe12="SetGlobalValue:labe12=0"
labe13="SetGlobalValue:labe13=0"
socket_client.send(labe10.encode())
time.sleep(0.1)
socket_client.send(labe11.encode())
time.sleep(0.1)
socket_client.send(labe12.encode())
time.sleep(0.1)
socket_client.send(labe13.encode())
time.sleep(0.1)
if __name__=='__main__':
# 新增子线程,创建TCP客户端,与视觉软件通信
client_vision = threading.Thread(target = TCPClient_Vision)
# 设置子线程为守护线程,防止退出主线程时,子线程仍在运行
client_vision.setDaemon(True)
# 启动子线程
client_vision.start()
# 每次运行脚本需要初始化视觉参数
VisionInit()
报错
Traceback (most recent call last):
File "D:/01-01/Python0101/SpeechRecognition/Main.py", line 64, in <module>
VisionInit()
File "D:/01-01/Python0101/SpeechRecognition/Main.py", line 47, in VisionInit
socket_client.send(labe10.encode())
AttributeError: 'str' object has no attribute 'send'
socket_client在哪定义的,你这函数里没有啊
你好,你的问题可能是程序执行不同步,TCPClient_Vision子线程没有给 socket_client赋值的时候,VisionInit已经开始调用了,所以,你试试我这个方法
if __name__=='__main__':
# 新增子线程,创建TCP客户端,与视觉软件通信
client_vision = threading.Thread(target = TCPClient_Vision)
# 设置子线程为守护线程,防止退出主线程时,子线程仍在运行
client_vision.setDaemon(True)
# 启动子线程
client_vision.start()
#等待socket_client被赋值
while socket_client=="":
pass
# 每次运行脚本需要初始化视觉参数
VisionInit()
有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力