python报错AttributeError: 'str' object has no attribute 'send'


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()

有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力