forked from M-Labs/artiq
comm_serial.py: Use cross-platform pyserial
This commit is contained in:
parent
eeb2790243
commit
e4897132ad
|
@ -1,5 +1,4 @@
|
||||||
import os
|
import serial
|
||||||
import termios
|
|
||||||
import struct
|
import struct
|
||||||
import zlib
|
import zlib
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
@ -66,27 +65,14 @@ class Comm(AutoContext):
|
||||||
implicit_core = False
|
implicit_core = False
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
self._fd = os.open(self.serial_dev, os.O_RDWR | os.O_NOCTTY)
|
self.port = serial.Serial(self.serial_dev, baudrate=115200)
|
||||||
self.port = os.fdopen(self._fd, "r+b", buffering=0)
|
self.port.flush()
|
||||||
self.set_baud(115200)
|
|
||||||
self.set_remote_baud(self.baud_rate)
|
self.set_remote_baud(self.baud_rate)
|
||||||
self.set_baud(self.baud_rate)
|
self.set_baud(self.baud_rate)
|
||||||
|
|
||||||
def set_baud(self, baud):
|
def set_baud(self, baud):
|
||||||
iflag, oflag, cflag, lflag, ispeed, ospeed, cc = \
|
self.port.baudrate = baud
|
||||||
termios.tcgetattr(self._fd)
|
self.port.flush()
|
||||||
iflag = termios.IGNBRK | termios.IGNPAR
|
|
||||||
oflag = 0
|
|
||||||
cflag |= termios.CLOCAL | termios.CREAD | termios.CS8
|
|
||||||
lflag = 0
|
|
||||||
ispeed = ospeed = getattr(termios, "B"+str(baud))
|
|
||||||
cc[termios.VMIN] = 1
|
|
||||||
cc[termios.VTIME] = 0
|
|
||||||
termios.tcsetattr(self._fd, termios.TCSANOW, [
|
|
||||||
iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
|
|
||||||
termios.tcdrain(self._fd)
|
|
||||||
termios.tcflush(self._fd, termios.TCOFLUSH)
|
|
||||||
termios.tcflush(self._fd, termios.TCIFLUSH)
|
|
||||||
logger.debug("baud rate set to".format(baud))
|
logger.debug("baud rate set to".format(baud))
|
||||||
|
|
||||||
def set_remote_baud(self, baud):
|
def set_remote_baud(self, baud):
|
||||||
|
|
Loading…
Reference in New Issue