рука робота не работает с pyserial и gcode - PullRequest
0 голосов
/ 28 апреля 2019

Я работаю над роботизированной рукой. M106 это включить вентилятор М17 шагает по М18 - шаговый 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")

1 Ответ

0 голосов
/ 30 апреля 2019

Вы пишете только символ 'g' в порт. Если вы хотите записать байты переменной g, вам нужно использовать bytes(g). То же самое и с f'<{len(gcode)}s', символы в одинарных или двойных кавычках - это не команда, а просто строка. Также вам не нужна упаковка строки, только кодировка.

Также добавьте несколько пауз между командами, используя time.sleep().

...