机器人手臂不使用pyserial和gcode

问题描述 投票:0回答:1

我正在研究机器人手臂。 M106打开风扇M17是踏板上M18是步进关闭G1 X ... Y .. X ..是机芯的坐标

端口是正确的,终端在那里打印hello hi ...然而机器人手臂没有移动,我完全不知道为什么会发生这种情况。是不是我的代码有问题?

import serial
import struct

def gcode_encode(gcode):
    gcode += '\r\n'
    return struct.pack(f'<{len(gcode)}s', gcode.encode(encoding='utf-8'))


print("hello")
# ser = serial.Serial('COM7', 9600, timeout=0, parity=serial.PARITY_EVEN, rtscts=1)

ser = serial.Serial()
ser.port = 'COM7'
ser.baudrate = 9600
ser.timeout = 0
ser.open()

g = gcode_encode('M106')
ser.write(b'g')

g = gcode_encode('M17')
ser.write(b'g')

g = gcode_encode('M18')
ser.write(b'g')

g = gcode_encode('G1 X0 Y120 Z120')
ser.write(b'g')

g = gcode_encode('G1 X50 Y120 Z60')
ser.write(b'g')

ser.close()

print("hi")
pyserial
1个回答
0
投票

您只将字符'g'写入端口。如果要写变量g的字节,则需要使用bytes(g)。与f'<{len(gcode)}s'相同,单引号或双引号中的字符不是此处的命令,而只是一个字符串。你也不需要打包字符串,只需要编码。

还使用time.sleep()在命令之间添加一些暂停。

© www.soinside.com 2019 - 2024. All rights reserved.