You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用UDP做机器人控制器报TypeError: a bytes-like object错误如何解决

错误原因

Python 3中socket模块的sendto方法要求传入的第一个参数是字节类型对象,你当前代码中直接传入了字符串类型的'u'/'d'/'l'/'r'/'q',类型不匹配因此触发报错。

修复方案

有两种常用的修改方式,任选一种即可:

  • 方式1:给字符串添加b前缀,直接声明为字节串,例如把'u'改为b'u'
  • 方式2:调用字符串的encode()方法,将字符串编码为字节格式,例如把'u'改为'u'.encode('utf-8')

另外注意需要先将代码中的my_ip值替换为你ESP8266 NodeMCU的实际IP地址,否则数据无法正常发送到目标设备。

修复后完整代码示例(采用方式1修改)

import socket

import KeyPressModule as Key

# 替换为你的ESP8266实际IP地址
my_ip = 'Use your IP'
my_port = 8080

Key.init()
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

def main():
    if Key.get_Key('UP'):
        sock.sendto(b'u', (my_ip, my_port))
    elif Key.get_Key('DOWN'):
        sock.sendto(b'd', (my_ip, my_port))
    elif Key.get_Key('LEFT'):
        sock.sendto(b'l', (my_ip, my_port))
    elif Key.get_Key('RIGHT'):
        sock.sendto(b'r', (my_ip, my_port))
    else:
        sock.sendto(b'q', (my_ip, my_port))

if __name__ == '__main__':
    while True:
        main()

内容的提问来源于stack exchange,提问作者Haris Bin Yousaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:24:02