LINUX.ORG.RU
ФорумTalks

[самоделкиным] Управление usb-> serial портом прямо из Lisp'a


0

0

Может кому пригодиться.

В консоле набираем

$ stty -F /dev/ttyUSB0 9600 raw -parenb -parodd cs8 -hupcl -cstopb clocal

А это код на лиспе

(with-open-file (stream "/dev/ttyUSB0"
:direction :io
:if-exists :overwrite
:external-format :ascii)
(format stream "hello")
(read-line stream))

Вот и все. Чувак, через эту хрень управляет зеркалом лазера.


Ответ на: комментарий от power

Может флейм будет? Набегут и скажут, типа лисп сосет в задачах риал-тайм, а с/пестон/перл/что-нибудь еще рулят.

Sun-ch
() автор топика
Ответ на: комментарий от Sun-ch

> Может флейм будет? Набегут и скажут, типа лисп сосет в задачах риал-тайм, а с/пестон/перл/что-нибудь еще рулят.
Нет, ты многое пропустил. Теперь здесь люди ценят красоту и мощь LISP`а.
Так что флейм здесь невозможен. Ну, только кто-нибудь предложит более лаконичный вариант.

power
()
Ответ на: комментарий от gnuava

Интересно просто. Может кто какими железками из линакса рулит, а может кто и сам такие железки делает. Помню, Вилфред целым телескопом управлял, у себя в обсерватории.

Sun-ch
() автор топика
Ответ на: комментарий от Sun-ch

> типа лисп сосет в задачах риал-тайм, а с/пестон/перл/что-нибудь еще рулят.

#!/usr/bin/mzscheme -r
; syntax: redirect <source-port> <target-port> <target-host>
; - Redirects tcp traffic from <source-por> into <target-port>
<target-host>
(require (lib "cmdline.ss") (lib "thread.ss"))
(define (redirect source-port target-port target-host)
(run-server source-port
(lambda (s-in s-out)
(let-values (((t-in t-out) (tcp-connect target-host
target-port)))
(thread (lambda() (copy-port s-in t-out)))
(copy-port t-in s-out)))
#f))
(command-line "redirect" (current-command-line-arguments)
(help-labels "Redirects connections to <source-port> to
<target-port> <target-host>")
(args (source-port target-port target-host)
(redirect (string->number source-port)
(string->number target-port)
target-host)))

Вот редирект трафика на Scheme.

power
()

Я слышал целые операционные системы управляют железом. А код - на плюсах(!). Куда прогресс дошёл...

wyldrodney
()

Гы, у меня был электронный термометр на AVR. Управлял из C. Тока через LPT. USB я не осилил

shamazmazum
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.