
TIO هي أداة جهاز متسلسل تتميز بواجهة سطر أوامر وملف التكوين المباشر للاتصال بسهولة بالأجهزة التسلسلية لعمليات الإدخال/الإخراج الأساسية.

لجعل أداة أجهزة تسلسلية أبسط للعمل مع الأجهزة التسلسلية TTY مع التركيز الأقل على ميزات الطرفية/المودم الكلاسيكية والمزيد من التركيز على احتياجات المطورين المدمجة والمتسللين.
تم إنشاء TIO في الأصل كبديل للشاشة للاتصال بالأجهزة التسلسلية عند استخدامها مع TMUX.
لمزيد من تفاصيل الاستخدام ، يرجى الاطلاع على وثائق صفحة الرجل هنا.
واجهة سطر الأوامر واضحة كما هو موضح في الإخراج من tio --help :
Usage: tio [<options>] <tty-device|profile|tid>
Connect to TTY device directly or via configuration profile or topology ID.
Options:
-b, --baudrate <bps> Baud rate (default: 115200)
-d, --databits 5|6|7|8 Data bits (default: 8)
-f, --flow hard|soft|none Flow control (default: none)
-s, --stopbits 1|2 Stop bits (default: 1)
-p, --parity odd|even|none|mark|space Parity (default: none)
-o, --output-delay <ms> Output character delay (default: 0)
-O, --output-line-delay <ms> Output line delay (default: 0)
--line-pulse-duration <duration> Set line pulse duration
-a, --auto-connect new|latest|direct Automatic connect strategy (default: direct)
--exclude-devices <pattern> Exclude devices by pattern
--exclude-drivers <pattern> Exclude drivers by pattern
--exclude-tids <pattern> Exclude topology IDs by pattern
-n, --no-reconnect Do not reconnect
-e, --local-echo Enable local echo
--input-mode normal|hex|line Select input mode (default: normal)
--output-mode normal|hex|hexN Select output mode (default: normal)
-t, --timestamp Enable line timestamp
--timestamp-format <format> Set timestamp format (default: 24hour)
--timestamp-timeout <ms> Set timestamp timeout (default: 200)
-l, --list List available serial devices, TIDs, and profiles
-L, --log Enable log to file
--log-file <filename> Set log filename
--log-directory <path> Set log directory path for automatic named logs
--log-append Append to log file
--log-strip Strip control characters and escape sequences
-m, --map <flags> Map characters
-c, --color 0..255|bold|none|list Colorize tio text (default: bold)
-S, --socket <socket> Redirect I/O to socket
--rs-485 Enable RS-485 mode
--rs-485-config <config> Set RS-485 configuration
--alert bell|blink|none Alert on connect/disconnect (default: none)
--mute Mute tio messages
--script <string> Run script from string
--script-file <filename> Run script from file
--script-run once|always|never Run script on connect (default: always)
--exec <command> Execute shell command with I/O redirected to device
-v, --version Display version
-h, --help Display help
Options and profiles may be set via configuration file.
In session you can press ctrl-t ? to list available key commands.
See the man page for more details.
بشكل افتراضي ، يتصل TIO تلقائيًا بالجهاز TTY المقدم. إذا لم يكن الجهاز موجودًا ، فسوف ينتظر Tio ظهوره ثم الاتصال. إذا فقد الاتصال (على سبيل المثال ، تم فصل الجهاز) ، فسوف ينتظر ظهور الجهاز ثم إعادة الاتصال. ومع ذلك ، إذا تم توفير خيار --no-reconnect ، فسوف يخرج TIO إذا لم يكن الجهاز موجودًا أو فقد اتصال ثابت.
الاستخدام النموذجي بدون خيارات:
$ tio /dev/ttyUSB0
الذي يتوافق مع الخيارات الافتراضية الشائعة الاستخدام:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
قائمة الأجهزة التسلسلية المتاحة:
$ tio --list
Device TID Uptime [s] Driver Description
----------------- ---- ------------- ---------------- --------------------------
/dev/ttyS4 BaaB 19526.576 port 16550A UART
/dev/ttyS5 eV0Z 19525.845 port 16550A UART
/dev/ttyUSB1 bCC2 1023.274 ftdi_sio TTL232R-3V3
/dev/ttyUSB0 SPpw 978.527 ftdi_sio TTL232RG-VREG3V3
/dev/ttyACM0 i5q4 2.079 cdc_acm ST-Link VCP Ctrl
By-id
--------------------------------------------------------------------------------
/dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
/dev/serial/by-id/usb-FTDI_TTL232RG-VREG3V3_FT1NELUB-if00-port0
/dev/serial/by-id/usb-STMicroelectronics_STLINK-V3_004900343438510234313939-if02
By-path
--------------------------------------------------------------------------------
/dev/serial/by-path/pci-0000:00:14.0-usb-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.3:1.2
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.3:1.2
Configuration profiles (/home/lundmar/.config/tio/config)
--------------------------------------------------------------------------------
rpi3 stm32 esp32 am64-evm
imx8mp-evk nucleo-h743zi2 usb-devices
يوصى بتوصيل الأجهزة التسلسلية عن طريق المعرف:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
ملاحظة: يساعد استخدام الأجهزة التسلسلية حسب ID على ضمان إعادة الاتصال تلقائيًا إلى نفس الجهاز التسلسلي عند إعادة التثبيت ، حتى عندما يعتمد بشكل مختلف.
إذا لم يتوفر أي جهاز تسلسلي حسب المعرف ، فمن المستحسن الاتصال عبر معرف الطوبولوجيا (TID):
$ tio bCC2
ملاحظة: TID فريد من نوعه وسيبقى كما هو الحال مع توصيل جهاز المنفذ التسلسلي USB في نفس طوبولوجيا USB (نفس المنافذ ، نفس المحاور ، نفس الاتصالات ، إلخ). وبهذه الطريقة ، من الممكن أن تقوم TIO بإعادة الاتصال بنجاح إلى نفس الجهاز.
الاتصال تلقائيًا إلى الجهاز التسلسلي الجديد الظاهر:
$ tio --auto-connect new
الاتصال تلقائيًا بأحدث الجهاز التسلسلي المسجل:
$ tio --auto-connect latest
من الممكن استخدام خيارات استبعاد للتأثير على الأجهزة التسلسلية التي تشارك في استراتيجية الاتصال التلقائي:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
واستبعاد السائقين حسب النمط:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
ملاحظة: يدعم مطابقة الأنماط "*" و "؟". استخدم فصل الفاصلة لتحديد أنماط متعددة.
لتضمين برامج التشغيل بنمط معين ببساطة ينفي خيار الاستبعاد:
$ tio --auto-connect new --exclude-drivers !("cp2102")
سجل للملف مع اسم الملف المولد:
$ tio --log /dev/ttyUSB0
سجل للملف باسم ملف معين:
$ tio --log --log-file my-log.txt
تمكين الطابع الزمني ISO8601 لكل سطر:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
الإخراج إلى Hex مع العرض 16:
$ tio --output-mode hex16 /dev/ttyUSB0
إعادة توجيه مقبس شبكة I/O إلى IPv4 على المنفذ 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
بيانات الأنابيب إلى الجهاز التسلسلي:
$ cat data.bin | tio /dev/ttyUSB0
معالجة خطوط المودم على الاتصال:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
أمر الأنابيب للجهاز التسلسلي وانتظر استجابة الخط في غضون ثانية واحدة:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
يتم دعم مختلف الأوامر الرئيسية في الجلسة. عندما يتم بدء TIO ، اضغط على Ctrl-T؟ لسرد الأوامر الرئيسية المتاحة.
[15:02:53.269] Key commands:
[15:02:53.269] ctrl-t ? List available key commands
[15:02:53.269] ctrl-t b Send break
[15:02:53.269] ctrl-t c Show configuration
[15:02:53.269] ctrl-t e Toggle local echo mode
[15:02:53.269] ctrl-t f Toggle log to file
[15:02:53.269] ctrl-t F Flush data I/O buffers
[15:02:53.269] ctrl-t g Toggle serial port line
[15:02:53.269] ctrl-t i Toggle input mode
[15:02:53.269] ctrl-t l Clear screen
[15:02:53.269] ctrl-t L Show line states
[15:02:53.269] ctrl-t m Change mapping of characters on input or output
[15:02:53.269] ctrl-t o Toggle output mode
[15:02:53.269] ctrl-t p Pulse serial port line
[15:02:53.269] ctrl-t q Quit
[15:02:53.269] ctrl-t r Run script
[15:02:53.269] ctrl-t R Execute shell command with I/O redirected to device
[15:02:53.269] ctrl-t s Show statistics
[15:02:53.269] ctrl-t t Toggle line timestamp mode
[15:02:53.269] ctrl-t v Show version
[15:02:53.269] ctrl-t x Send file via Xmodem
[15:02:53.269] ctrl-t y Send file via Ymodem
[15:02:53.269] ctrl-t ctrl-t Send ctrl-t character
إذا لزم الأمر ، يمكن إعادة تعيين مفتاح البادئة (CTRL-T) عبر ملف التكوين.
يمكن تعيين الخيارات عبر ملف التكوين الموجود لأول مرة في أي من المواقع التالية بالترتيب المذكور:
يدعم ملف التكوين الملفات الشخصية باستخدام الأقسام المسماة التي يمكن تنشيطها عبر سطر الأوامر بالاسم أو النمط. يحدد ملف تعريف الجهاز tty للاتصال والخيارات الأخرى.
مثال ملف التكوين:
[default]
baudrate = 115200
databits = 8
parity = none
stopbits = 1
color = 10
[rpi3]
device = /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTGQVXBL-if00-port0
no-reconnect = true
log = true
log-file = rpi3.log
line-pulse-duration = DTR=200,RTS=150
color = 11
[svf2]
device = /dev/ttyUSB0
baudrate = 9600
script = expect("login: "); write("rootn"); expect("Password: "); write("rootn")
color = 12
[esp32]
device = /dev/serial/by-id/usb-0403_6014-if00-port0
script = set{DTR=high,RTS=low}; msleep(100); set{DTR=low,RTS=high}; msleep(100); set{RTS=low}
script-run = once
color = 13
[usb-devices]
pattern = ^usb([0-9]*)
device = /dev/ttyUSB%m1
color = 14
لاستخدام ملف تعريف معين بالاسم ، ببساطة ابدأ Tio مثل SO:
$ tio rpi3
أو عن طريق تطابق النمط:
$ tio usb12
يتوفر مثال ملف تكوين أكثر تفصيلاً أخرى هنا.
Tio Suppots Lua Scripting لأتمتة التفاعل بسهولة مع الجهاز TTY.
بالإضافة إلى LUA API TIO ، تتيح الوظائف التالية المتاحة:
expect(string, timeout)
Expect string - waits for string to match or timeout before continueing.
Supports regular expressions. Special characters must be escaped with '\'.
Timeout is in milliseconds, defaults to 0 meaning it will wait forever.
Returns 1 on successful match, 0 on timeout, or -1 on error.
On successful match it also returns the match string as second return value.
read(size, timeout)
Read from serial device. If timeout is 0 or not provided it will wait
forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns read string as second return value.
read_line(timeout)
Read line from serial device. If timeout is 0 or not provided it will
wait forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns the string that was read as second return value.
Also emits a single timestamp to stdout and log file per options.timestamp
and options.log.
write(string)
Write string to serial device.
Returns number of bytes written on success or -1 on error.
send(file, protocol)
Send file using x/y-modem protocol.
Protocol can be any of XMODEM_1K, XMODEM_CRC, YMODEM.
tty_search()
Search for serial devices.
Returns a table of number indexed tables, one for each serial device
found. Each of these tables contains the serial device information accessible
via the following string indexed elements "path", "tid", "uptime", "driver",
"description".
Returns nil if no serial devices are found.
set{line=state, ...}
Set state of one or multiple tty modem lines.
Line can be any of DTR, RTS, CTS, DSR, CD, RI
State is high, low, or toggle.
sleep(seconds)
Sleep for seconds.
msleep(ms)
Sleep for miliseconds.
exit(code)
Exit with exit code.
تتوفر حزم لمختلف توزيعات GNU/Linux. يرجى الرجوع إلى أداة Manager الخاصة بك للعثور على TIO وتثبيتها.
إذا كنت ترغب في رؤية TIO متضمنًا في التوزيع المفضل لديك ، فيرجى التواصل مع فريق المشرف على الحزم.
تثبيت أحدث إصدار مستقر:
$ snap install tio --classic
ملحوظة: الحبس الكلاسيكي مطلوب حاليًا بسبب قيود إطار عمل Snapcraft. انظر العدد رقم 187 للمناقشة.
إذا كنت قد تم تثبيت المشروب:
$ brew install tio
إذا قمت بتثبيت MSYS2:
$ pacman -S tio
يمكن العثور على أحدث إصدارات المصدر هنا.
قبل تشغيل خطوات التثبيت ، تأكد من تثبيت مكتبات GLIB و LUA. على سبيل المثال:
$ sudo apt install libglib2.0-dev liblua5.2-dev
خطوات تثبيت:
$ meson setup build
$ meson compile -C build
$ meson install -C build
انظر meson_options.txt للاطلاع على خيارات بناء TIO المحددة.
ملاحظة: قد تختلف خطوات تثبيت Meson اعتمادًا على نظامك المحدد.
الحصول على أخطاء الوصول إلى الإذن تحاول فتح جهازك التسلسلي؟
أضف المستخدم الخاص بك إلى المجموعة التي تتيح الوصول إلى الجهاز التسلسلي بشكل دائم. على سبيل المثال ، لإضافة المستخدم الخاص بك إلى مجموعة "dialout" تفعل:
sudo usermod -a -G dialout < username >قم بالتبديل إلى مجموعة "dialout" ، مؤقتًا ولكن على الفور لهذه الجلسة.
newgrp dialoutهذا مشروع مفتوح المصدر - جميع المساهمات (تقارير الأخطاء ، الكود ، المستند ، الأفكار ، إلخ) نرحب بها.
يرجى استخدام ميزات Tracker GitHub Issue وسحب الطلب.
أيضًا ، إذا وجدت هذا البرنامج المجاني المفتوح المصدر مفيدًا ، فلا تتردد في التفكير في التبرع من اختيارك:

إرسال تقارير الأخطاء عبر github: https://github.com/tio/tio/issues
زيارة tio.github.io
TIO هو GPLV2+. انظر ملف الترخيص لمزيد من التفاصيل.
يحتفظ به مارتن لوند <[email protected]>
راجع ملف المؤلفين للحصول على قائمة كاملة بالمساهمين.