Tym razem rozwiązanie problemu połączenia do ramps który napotkałem w poprzednim wpisie drukarka-3d-dziennik-budowy-cz1

Pronterface 250000

Rozwiązanie problemu połączenia na 250000 programem pronterface (printrun) do Ramps 1.4 (Atmega 2560) znalazłem pod tym linkiem. Poniżej opis jak zaaplikować patch dla pythona:

Trzeba ściągnąc poniższy patch i zapisać jako pyserial.patch

Index: pyserial/serial/serialposix.py
===================================================================
--- pyserial/serial/serialposix.py (revision 455)
+++ pyserial/serial/serialposix.py (working copy)
@@ -36,26 +36,25 @@
def device(port):
return '/dev/ttyS%d' % port

- ASYNC_SPD_MASK = 0x1030
- ASYNC_SPD_CUST = 0x0030
+ TCGETS2 = 0x802C542A
+ TCSETS2 = 0x402C542B
+ BOTHER = 0o010000

def set_special_baudrate(port, baudrate):
+ # right size is 44 on x86_64, allow for some growth
import array
- buf = array.array('i', [0] * 32)
+ buf = array.array('i', [0] * 64)

# get serial_struct
- FCNTL.ioctl(port.fd, TERMIOS.TIOCGSERIAL, buf)
+ FCNTL.ioctl(port.fd, TCGETS2, buf)
+ # set custom speed
+ buf[2] &= ~TERMIOS.CBAUD
+ buf[2] |= BOTHER
+ buf[9] = buf[10] = baudrate

- # set custom divisor
- buf[6] = buf[7] / baudrate
-
- # update flags
- buf[4] &= ~ASYNC_SPD_MASK
- buf[4] |= ASYNC_SPD_CUST
-
# set serial_struct
try:
- res = FCNTL.ioctl(port.fd, TERMIOS.TIOCSSERIAL, buf)
+ res = FCNTL.ioctl(port.fd, TCSETS2, buf)
except IOError:
raise ValueError('Failed to set custom baud rate: %r' % baudrate)

Jak zaaplikować patch na Ubuntu 13.04:

mv pyserial.patch /usr/lib/python2.7/dist-packages/serial
cd /usr/lib/python2.7/dist-packages/serial
cp  serialposix.py  serialposix.py.old
patch -p2 < pyserial.patch

Definiujemy w marlin > Confguration.h

#define BAUDRATE 250000
//#define BAUDRATE 115200

Uruchamiamy pronterface

./pronterface.py

pronterface_250000