eddy_em: (Костерок)
eddy_em ([personal profile] eddy_em) wrote2015-05-13 03:57 pm

Скотская мастдайка!

Ковыряли сегодня мой ircontroller под мастдайкой.
Сразу столкнулись с веселой штукой: оказывается, в этом говне даже на виртуальный ком-порт надо скачивать и ставить "драйвер", да еще и не из централизованного проверяемого репозитория, а черт знает откуда! Как после этого удивляться, что там постоянно вирусы всякие кишмя кишат?
Другая веселая штука — даже после установки драйвера VCP мастдайка мелкоконтроллер не опознала (хотя он — обычный USB CDC: .idVendor = 0x0483, .idProduct = 0x5740). Что за анальное огораживание? Как вообще такое может быть?
Третья веселая штука: мы перебрали с пяток разных терминальных клиентов для мастдайки и не нашли ни одного приличного. Единственный более-менее нормальный выдавал чудеса: в символьном режиме МК он работал, а в строковом — фигвам! Я уж думал, у меня в коде какие-то глюки; подключил к USART1 переходник на PL2303, воткнул в нетбук — все в строковом режиме работает. ОК, втыкаю переходник в компьютер с мастдайкой (бумц! Ставь дрова!!! Благо, хоть это говно себя перезагружать не потребовало) — символьный работает, строковый — нет.

Нет, это мазохизм чистой воды разрабатывать что-то под мастдайку!

[identity profile] mbr.livejournal.com 2015-05-13 01:16 pm (UTC)(link)
ну да, putty вполне себе как под win, так и linux.

из всех драйверов там простой инф написать. Хотя это бесит конечно.

в строковом не работает - windows тут не при чем - скорее всего преобразование cr/lf

[identity profile] eddy-em.livejournal.com 2015-05-13 02:32 pm (UTC)(link)
Под линуксом putty не нужен, т.к. полным-полно терминальных клиентов есть.

> из всех драйверов там простой инф написать
Ну, этим уж я точно заниматься не буду.

Сейчас еще раз ковырнул putty - ну и наркоманский же там интерфейс! Попробуй найди, как соединиться ☺

> скорее всего преобразование cr/lf
Именно в этом и получилась проблема. Терминал на нажатие enter зачем-то шлет вместо '\n' либо '\r' либо вообще "\r\n". А у меня ожидается формат вида "[ команды ]\n", т.е. пока '\n' во входном потоке не появится, строка обрабатываться не будет; а если перед '\n' нет закрывающей скобки, сообщение считается мусором.

Вот проблема и решилась.

Надеюсь, питон и/или IDL умеет правильно окончания строк делать? Потому что человек, который будет для мастдайки писать обертку, планирует либо напрямую из IDL с портом работать (но непонятно, как там с поллингом - у меня-то передача асинхронная), либо через прослойку на пхитоне (правда, так у него вряд-ли получится: я сильно сомневаюсь, что у него нахрапом выйдет написать демона и наладить IPC -- в мастдайке-то!).

[identity profile] mbr.livejournal.com 2015-05-13 05:47 pm (UTC)(link)
> Под линуксом putty не нужен, т.к. полным-полно терминальных клиентов есть.

Назови хоть один нормальный.

> Именно в этом и получилась проблема.

Итого: ты попросту не умеешь корректно парсить входной поток строк. Проблема в говнокоде, а не в винде.

[identity profile] eddy-em.livejournal.com 2015-05-13 05:56 pm (UTC)(link)
> Назови хоть один нормальный
мой и com из пакета tinyserial — как элементарщина для нубов, либо старый добрый screen. Просто для запуска screen надо страничку мана прочесть.

> ты попросту не умеешь корректно парсить входной поток строк
Как это не умею? Умею. Просто как-то, знаешь ли, не ожидал, что во входном потоке левые символы будут сами по себе втыкаться.
Эдак какой-нибудь шестой гилли бейтс решит туда \b втыкать, и я должен буду на все случаи жизни костыли городить? Да пошли они нафиг!

[personal profile] ex0_planet 2015-05-14 11:55 am (UTC)(link)
ну про \r\n грабли-то известные, можно было и предусмотреть, бо в дикой природе встречаются все три варианта.

в сетях кстати вообще принято, что стандартным окончанием является CRLF.

[identity profile] eddy-em.livejournal.com 2015-05-14 12:20 pm (UTC)(link)
> в сетях кстати вообще принято, что стандартным окончанием является CRLF
Это было давно. Последнее время у меня в CGI'шках строки заканчиваются только '\n', и все браузеры это съедают.

Вот я про эту проблему и подзабыл...

Ну, ничего: я сегодня утром починил эту проблему. Правда, помучился изрядно (пришлось то тут немножко подправить, то там чуть-чуть)...