qq_27622575
2021-09-27 15:27
采纳率: 50%
浏览 76
已结题

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'

  • 好问题 提建议
  • 收藏

2条回答 默认 最新

  • 於黾 2021-09-27 15:37
    已采纳

    socket_client在哪定义的,你这函数里没有啊

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 辉煌仪奇 2021-09-27 15:58

    你好,你的问题可能是程序执行不同步,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()
    

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

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题