GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Memantau Koneksi Serial @ 250000 Baud?

Saya ingin memantau langsung koneksi serial-over-usb ke printer 3d saya, yang berjalan pada 250000 baud. misalnya saya mungkin memantaunya dengan cat /dev/ttyUSB0

Namun pertama-tama saya perlu mengatur baud rate, mis stty -F /dev/ttyUSB0 115200

Tetapi jika saya mencoba dan mengatur baud rate ke 250k, gagal:

stty -F /dev/ttyUSB0 250000

memberikan hasil:

stty: invalid argument 250000

Tampaknya baud rate 250000 tidak didukung di bawah Ubuntu/Mint. Adakah yang bisa menyarankan cara alternatif untuk memantau koneksi serial ini?

Jawaban yang Diterima:

Ada beberapa ioctl tidak berdokumen yang dapat Anda gunakan untuk mengatur kecepatan non-standar, asalkan driver mengimplementasikannya. Cara sederhana untuk memanggil mereka adalah dengan sepotong kecil python. Misal taruh di file mysetbaud.py dan chmod +x itu:

#!/usr/bin/python
# set nonstandard baudrate. http://unix.stackexchange.com/a/327366/119298
import sys,array,fcntl

# from /usr/lib/python2.7/site-packages/serial/serialposix.py
# /usr/include/asm-generic/termbits.h for struct termios2
#  [2]c_cflag [9]c_ispeed [10]c_ospeed
def set_special_baudrate(fd, baudrate):
    TCGETS2 = 0x802C542A
    TCSETS2 = 0x402C542B
    BOTHER = 0o010000
    CBAUD = 0o010017
    buf = array.array('i', [0] * 64) # is 44 really
    fcntl.ioctl(fd, TCGETS2, buf)
    buf[2] &= ~CBAUD
    buf[2] |= BOTHER
    buf[9] = buf[10] = baudrate
    assert(fcntl.ioctl(fd, TCSETS2, buf)==0)
    fcntl.ioctl(fd, TCGETS2, buf)
    if buf[9]!=baudrate or buf[10]!=baudrate:
        print("failed. speed is %d %d" % (buf[9],buf[10]))
        sys.exit(1)

set_special_baudrate(0, int(sys.argv[1]))

Ini mengambil beberapa kode dari pyserial paket dengan konstanta untuk berbagai nilai yang diperlukan dari Linux C termasuk file, dan larik untuk struct termios2 . Anda menggunakannya dengan parameter baud rate dan perangkat Anda di stdin, misalnya dari bash:

./mysetbaud.py <>/dev/ttyUSB0 250000

Linux
  1. Bagaimana Cara Menonaktifkan Konfigurasi Otomatis Monitor?

  2. Bagaimana Memantau Koneksi Nirkabel?

  3. Bagaimana cara menambahkan koneksi MySQL jarak jauh di linux?

  1. Cara benar-benar menghancurkan koneksi soket di C

  2. Bagaimana cara mengetahui apakah koneksi ssh ControlMaster sedang digunakan

  3. Bagaimana cara berbagi koneksi internet?

  1. Cara Memantau Aktivitas Pengguna Di Linux

  2. Bagaimana saya bisa memantau data pada port serial di Linux?

  3. Bagaimana saya bisa memantau disk io?