我正在使用机械臂。 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")
答案 0 :(得分:0)
您仅将字符“ g”写入端口。如果要写入变量g
的字节,则需要使用bytes(g)
。 f'<{len(gcode)}s'
也是如此,单引号或双引号中的字符在这里不是命令,而只是一个字符串。另外,您不需要打包字符串,只需编码即可。
还可以使用time.sleep()
在命令之间添加一些暂停。