[ZX]
-
- ИМХО, ATкоманды - плохой выбор для систем промышленного управления. Ядерным реактором так управлять нельзя, равно как ответственным оборудованием тоже. Да и разбирать текстовый протокол на МК занятие не для слабонервных. - Хитрый Китаец(17.05.2012 16:47)
- Всё наоборот! Чем выше избыточность кодирования информации, тем надежнее протокол для передачи данных :) Вопрос на самом деле интересный, но не люблю обсуждение на уровне холивара. Vladimir Ljaschko(333 знак., 17.05.2012 19:42)
- Без сомнения. До тех пор пока избыточность не добавляет неопределённости. - хоар(19.05.2012 04:54,
)
- Скорость то падает,все равно, что повторять посылку несколько раз. Для того, чтобы это не делать, придумали коды исправляющие ошибки:) - Хитрый Китаец(18.05.2012 08:35)
- Без сомнения. До тех пор пока избыточность не добавляет неопределённости. - хоар(19.05.2012 04:54,
- "Нельзя" -- это ваше личное мнение (далёкое от реальности). Разбор же на МК не отличается от разбора на PC (если речь не об ATTINY). - fk0(17.05.2012 17:09)
- Вот видите, сразу ограничения - Tiny ,PIC16(не дай бог PIC12). Это толстая, непростая, избыточная и тормозная, плохо расширяемая прослойка. Её удобно читать в гипертерминале с мануалом в руках. А как только попытаетесь свернуть помехоустойчивым Хитрый Китаец(56 знак., 17.05.2012 18:48)
- Всё наоборот! Чем выше избыточность кодирования информации, тем надежнее протокол для передачи данных :) Вопрос на самом деле интересный, но не люблю обсуждение на уровне холивара. Vladimir Ljaschko(333 знак., 17.05.2012 19:42)
- все текстовые протоколы были придуманы лоботрясами, которым лень было написать софтинку для отладки. И взамен этого получили раздутые траффики и лишние телодвижения для парсирования в понятный вид для любой вычислительной техники. - MegaJohn(17.05.2012 16:43)
- Нет. Все бинарные протоколы придуманы лоботрясами ниасилившими ни зачем нужны текстовые протоколы, ни представляющими как пишется ПО для работы с ними. Любой вид техники? Передай-ка float, а потом будешь рассказывать. Про закавыки с fk0(492 знак., 17.05.2012 17:14)
- кстати а что, такие серьезные заковыки ? Во всех микрухах с SPI, I2C умеют передавать и не считают за проблему. Смотреть к примеру на AD9959. - MegaJohn(18.05.2012 08:37)
- Передай float, потом рассказывай. - fk0(18.05.2012 10:20)
- передается как и целое, но упакованное согласно IEEE 754 - MegaJohn(18.05.2012 11:05)
- И шо, таки в формате указано как этот флоат лежит в памяти? - не верю(19.05.2012 05:09,
)
- А в бинарном виде всегда передать-принять можно. - Apтём(19.05.2012 16:40)
- А шо таки не указано? - Apтём(19.05.2012 05:38)
- Нет, не указано и архитектурозависимо. Текстовое представление же одинаково для любой архитектуры. - chelsea(20.05.2012 00:16,
)
- Ну конечно, одинаково. Например формат плаваюшего в русской кодировке пишется через запятую, англоязычный - через точку. - Apтём(20.05.2012 00:28)
- Уверены, что в тексте везде одинаково? Ведь энтих кодировок ... как блох на каштанке. Намедни обсуждали новую версию кейловского MDK в котором комменты и сообщения на русском языке только в кодировке UTF-8 можно сделать, а в CP-1251 не желает. - rezident(20.05.2012 00:24, ссылка)
- Уверен, что как байты в памяти лежат зависит от архитектуры. Про текст всегда договориться можно. А русскую виндовую кодировку действительно лучше не использовать. - chelsea forever(20.05.2012 00:48,
)
- в бинарном сложно договориться про endian ? Высосали проблему из пальца - MegaJohn(20.05.2012 18:34)
- Все бы хорошо, но вот еще какая петрушка - char не всегда 8-ми битным бывает. - rezident(20.05.2012 01:22 - 01:29)
- А уж сколько вариантов для, хотя бы, 32битного флоата.. - manchester(20.05.2012 01:58,
)
- А уж сколько вариантов для, хотя бы, 32битного флоата.. - manchester(20.05.2012 01:58,
- Уверен, что как байты в памяти лежат зависит от архитектуры. Про текст всегда договориться можно. А русскую виндовую кодировку действительно лучше не использовать. - chelsea forever(20.05.2012 00:48,
- А таки не все соотетствуют этому IEEE и много тонкостей, вроде нечисел. Тут через printf|scanf не всегда передашь. - fk0(19.05.2012 12:25)
- это вы намекаете на професеанальные компиляторы для таких же контроллеров? =8) - Mahagam(19.05.2012 23:35)
- Какой там IEEE в IAR'е, а? - fk0(21.05.2012 23:03)
- вроде есть (и не только в иаре) вариант, когда многие проверки опускаются (на NaN, infinite и т.д.), но формат в памяти не меняется. - Mahagam(21.05.2012 23:18)
- Некошерно, но доступно тут strange(69 знак., 22.05.2012 03:19,
)
- Некошерно, но доступно тут strange(69 знак., 22.05.2012 03:19,
- В IAR стандартный float IEEE-754 rezident(526 знак., 21.05.2012 23:08 - 23:10, ссылка, ссылка)
- вроде есть (и не только в иаре) вариант, когда многие проверки опускаются (на NaN, infinite и т.д.), но формат в памяти не меняется. - Mahagam(21.05.2012 23:18)
- Какой там IEEE в IAR'е, а? - fk0(21.05.2012 23:03)
- это вы намекаете на професеанальные компиляторы для таких же контроллеров? =8) - Mahagam(19.05.2012 23:35)
- Нет, не указано и архитектурозависимо. Текстовое представление же одинаково для любой архитектуры. - chelsea(20.05.2012 00:16,
- И шо, таки в формате указано как этот флоат лежит в памяти? - не верю(19.05.2012 05:09,
- передается как и целое, но упакованное согласно IEEE 754 - MegaJohn(18.05.2012 11:05)
- Передай float, потом рассказывай. - fk0(18.05.2012 10:20)
- ключевое слово "кажется". Деятели на C# даже не задумываются что и как работает. Эти все тяжелые regexp - всё их плоды. Для многих уже strlen выполняется за один такт. Куда катится мир. - MegaJohn(17.05.2012 17:27)
- Не надо превращаться в ассемблериста. regexp'ы умеют превращаться в весьма быстрые конечные автоматы. В особо тяжёлых случаях -- с прямой генерацией C-кода и пропусканием его через компилятор перед обработкой данных. Самодельный разбор BER fk0(425 знак., 17.05.2012 17:38)
- однажды в исходниках к одному батарейному девайсу в парсере встретил for( ; i < strlen( ); i++ ) { bla-bla }. Аж поплохело - MegaJohn(17.05.2012 17:44)
- Случаев крайнего идиотизма не надо. Да и аж 0.1% к разряду батареи. Неоптимальные алгоритмы в других местах дадут все 90%. Бороться не за что. Тем более что попал мимо -- GCC на уровне -O1 выоптимизирует этот strlen нафиг: fk0(1841 знак., 17.05.2012 18:05)
- Лень профессиональный асм изучать. Вот такой пропусти-ка. И сообщи результат в циклах. Для AVR+IAR-speed optimize у меня получилось. v1 = 285200 циклов ! v2 = 2813, v3 = 1403 MegaJohn(652 знак., 18.05.2012 11:39)
- Если ты не знаком с асмом x86 и не умеешь написать hello world в debug.exe то о чём вообще говорить? А проблема как всегда в ассемблерах. Микрочиповский компилятор (ещё то говно) тоже выкидывает strlen нафиг. Я не поленился и AVR-GCC проверил. fk0(1022 знак., 21.05.2012 22:52 - 23:02)
- да, подтверждаю что GCC думает за человека, и гораздо лучше оптимизнул код. Про говно выше написано - MegaJohn(24.05.2012 12:30)
- Если ты не знаком с асмом x86 и не умеешь написать hello world в debug.exe то о чём вообще говорить? А проблема как всегда в ассемблерах. Микрочиповский компилятор (ещё то говно) тоже выкидывает strlen нафиг. Я не поленился и AVR-GCC проверил. fk0(1022 знак., 21.05.2012 22:52 - 23:02)
- был не GCC и проект даже не оптимизился. Вот так вот делается. - MegaJohn(17.05.2012 18:38)
- Лень профессиональный асм изучать. Вот такой пропусти-ка. И сообщи результат в циклах. Для AVR+IAR-speed optimize у меня получилось. v1 = 285200 циклов ! v2 = 2813, v3 = 1403 MegaJohn(652 знак., 18.05.2012 11:39)
- Случаев крайнего идиотизма не надо. Да и аж 0.1% к разряду батареи. Неоптимальные алгоритмы в других местах дадут все 90%. Бороться не за что. Тем более что попал мимо -- GCC на уровне -O1 выоптимизирует этот strlen нафиг: fk0(1841 знак., 17.05.2012 18:05)
- однажды в исходниках к одному батарейному девайсу в парсере встретил for( ; i < strlen( ); i++ ) { bla-bla }. Аж поплохело - MegaJohn(17.05.2012 17:44)
- Не надо превращаться в ассемблериста. regexp'ы умеют превращаться в весьма быстрые конечные автоматы. В особо тяжёлых случаях -- с прямой генерацией C-кода и пропусканием его через компилятор перед обработкой данных. Самодельный разбор BER fk0(425 знак., 17.05.2012 17:38)
- кстати а что, такие серьезные заковыки ? Во всех микрухах с SPI, I2C умеют передавать и не считают за проблему. Смотреть к примеру на AD9959. - MegaJohn(18.05.2012 08:37)
- Ты посмотри какую хрень по http передают. Не зря уже Ethernet 1Гиг - мало :) - Vladimir Ljaschko(17.05.2012 16:54)
- я тоже охреневал от информационной избыточности WWW, когда изучал HTML - MegaJohn(17.05.2012 17:07)
- И где же хвалёный BML из WAP? Правильно, в заднице. А HTML у тебя на дисплее. - fk0(17.05.2012 17:15)
- Кстати, Opera вроде первой стала понимать сжатые странички для уменьшения траффика. Правда со стороны сервака должна быть поддержка - MegaJohn(17.05.2012 17:12)
- И со стороны сервака должна быть поддержка, но прокси. - мультимедия без потерь(19.05.2012 04:09,
)
- Дальше собственного носа в упор ничего не видишь. Компрессия траффика HTTP (не путать с HTML) появилась в ~1999, когда Opera-Mini и в проекте не было. См. rfc2616. И естесственно, там нет никакого BML и др. извращений, тупо HTML внутри gzip. Если fk0(176 знак., 17.05.2012 17:21)
- в опере это таки появилось ДО опера-мини. факт. вроде даже с версии 4 или 5. - jaga-jaga(18.05.2012 09:12)
- Компрессия траффика HTTP на SIM300/900 реализована ? Или он распаковывается на лету ? - MegaJohn(17.05.2012 17:30)
- И со стороны сервака должна быть поддержка, но прокси. - мультимедия без потерь(19.05.2012 04:09,
- я тоже охреневал от информационной избыточности WWW, когда изучал HTML - MegaJohn(17.05.2012 17:07)
- нахрен не надо между железками делать протокол читаемый для человека. Между железками должен быть протокол легко усваемый самими железками. AT, NMEA и прочее - фу кака. - MegaJohn(17.05.2012 16:48)
- сначала непонятное человеку нужно отладить. два говнокода завсегда отлаживать интереснее, чем один:) особенно приятно объединение протоколов для настройки и для говноскад в один бинарный, свой, ни с чем не совместимый. своё не пахнет(С), а когда в Vit(479 знак., 21.05.2012 00:38)
- а что, теперь планируется глобальный плановый переход на Modbus ASCII ? - MegaJohn(21.05.2012 11:17)
- для модбаса есть готовые терминалы. А для собственных протоколов их надо писать и отлаживать, а потом ещё не потерять со временем, быть уверенным, что оно пойдёт под вин12, и не забыть где какой используется - koyodza(21.05.2012 11:52)
- Почему во множественном числе? Один протокол, одна dll. - Vladimir Ljaschko(21.05.2012 11:55)
- и куда эту dll засовывать? И что делать, если завтра приспичит законнектиться под линуксом? Или Вы имеете ввиду, что у Вас всю жизнь во всех изделиях используется единственный самодельный протокол, который не эволюционирует? - koyodza(21.05.2012 11:58)
- 1) Увы, 2/3 жизни ушло на понимание :) 2) Протокол не эволюционирует. Остальное здесь. - Vladimir Ljaschko(21.05.2012 12:22, ссылка)
- текстовым можно и без dll в терминале связаться, об этом и речь - koyodza(21.05.2012 12:31)
- Конечно можно, и что? DLL нужна для облегчения работы с прибором сторонним программистам, поскольку транспорт там реализован. Зачем каждый должен писать свой парсер, если не требуется экзотичная ОС? - Vladimir Ljaschko(21.05.2012 13:01)
- эта ветка о другом - koyodza(21.05.2012 13:18, ссылка)
- Я старался осмысленно отвечать на Ваши возражения, а получился "испорченный телефон" :) Vladimir Ljaschko(373 знак., 21.05.2012 13:34)
- эта ветка о другом - koyodza(21.05.2012 13:18, ссылка)
- Конечно можно, и что? DLL нужна для облегчения работы с прибором сторонним программистам, поскольку транспорт там реализован. Зачем каждый должен писать свой парсер, если не требуется экзотичная ОС? - Vladimir Ljaschko(21.05.2012 13:01)
- текстовым можно и без dll в терминале связаться, об этом и речь - koyodza(21.05.2012 12:31)
- 1) Увы, 2/3 жизни ушло на понимание :) 2) Протокол не эволюционирует. Остальное здесь. - Vladimir Ljaschko(21.05.2012 12:22, ссылка)
- и куда эту dll засовывать? И что делать, если завтра приспичит законнектиться под линуксом? Или Вы имеете ввиду, что у Вас всю жизнь во всех изделиях используется единственный самодельный протокол, который не эволюционирует? - koyodza(21.05.2012 11:58)
- Почему во множественном числе? Один протокол, одна dll. - Vladimir Ljaschko(21.05.2012 11:55)
- Вы не знаете зачем это нужно, потому и столь категоричны. Разберитесь, а уж потом называйте фукаками. - Vit(21.05.2012 11:35)
- И зачем это нужно ? Для мануального ввода с терминала ? Этот способ еще кто то юзает ? - MegaJohn(21.05.2012 13:18)
- Затем, что текстовый протокол проще наблюдается и отлаживается (с помощью готовых программ), текстовый протокол вообще обычно проще устроен (проще синтаксис, ввиду доступности "внеполосных символов", в бинарном же начинаются массовые ограничения fk0(1454 знак., 21.05.2012 22:47)
- Модемная связь посредством коммутируемых линий, радиомодемная связь и т.п. связь с использованием промежуточного коммуникационного оборудования. - rezident(21.05.2012 13:30)
- загадками говорите все. То есть при использовании промежуточного коммуникационного оборудования и бинарного протокола возможны совпадения с опкодами, и промежуточное оборудование ретранслируемые данные воспримет как-то иначе ? - MegaJohn(21.05.2012 13:40)
- Да. Модем, например, может перейти из "прозрачного" режима трансляции данных в командный режим. Кроме того, промежуточное оборудование может вносить значительные задержки, которые в соответствии со спецификацией RTU должны интерпретироваться как rezident(15 знак., 21.05.2012 13:53)
- №2 пусть разработчики промежуточного коммуникационного оборудования не отключили в транспорте +++<пауза> (в модемах это настраивается). Тогда что мешает бинарный протокол упаковать в base64 ??? [>] да, этот тот самый ASCII. Но он де-факто MegaJohn(68 знак., 21.05.2012 14:08, ссылка)
- 0xBE, 0xF5 вместо SET_PAUSE=123 ещё менее понятно. - fk0(21.05.2012 22:34)
- Я уже плохо понимаю смысл ваших сообщений :( Это рассуждения вслух или возражения? Если возражения, то кому или к какому сообщению? - rezident(21.05.2012 14:26)
- №1. но и в спецификации MODBUS-ASCII пауза не более 1сек. Может не правильно выбран транспортный протокол ? Логичнее применять разделение фреймов не по таймауту а по байту-сепаратору ? К примеру как SLIP. - MegaJohn(21.05.2012 14:05)
- №2 пусть разработчики промежуточного коммуникационного оборудования не отключили в транспорте +++<пауза> (в модемах это настраивается). Тогда что мешает бинарный протокол упаковать в base64 ??? [>] да, этот тот самый ASCII. Но он де-факто MegaJohn(68 знак., 21.05.2012 14:08, ссылка)
- Да. Модем, например, может перейти из "прозрачного" режима трансляции данных в командный режим. Кроме того, промежуточное оборудование может вносить значительные задержки, которые в соответствии со спецификацией RTU должны интерпретироваться как rezident(15 знак., 21.05.2012 13:53)
- загадками говорите все. То есть при использовании промежуточного коммуникационного оборудования и бинарного протокола возможны совпадения с опкодами, и промежуточное оборудование ретранслируемые данные воспримет как-то иначе ? - MegaJohn(21.05.2012 13:40)
- резюмирую: ASCII есть только в UART (ну еще в etnernet). В периферийных микрухах с SPI, I2C и 1-Wire это слава богу нет, и производители пукрутят у виска если им это предложат. Зачем им усложнять устройство ? Но N людям так и прет ввести MegaJohn(274 знак., 21.05.2012 13:25)
- смешались в кучу интерфейсы, протоколы... - Snaky(22.05.2012 00:49)
- при взаимодействии HARD-HARD, что интерфейсы что протоколы все аналогично - MegaJohn(24.05.2012 12:32)
- Вот у меня протокол работы прибора выводится текстом. С помощью grep в linux или find в windows я могу простейшими средствами отфильтровать только (не)нужные сообщения. Что бы я делал с бинарным протоколом? Два говнокода завсегда интереснее? (C) fk0(4 знак., 21.05.2012 22:50)
- 10010100011100100010100010010011000101000100100111101011010101 - fk0(21.05.2012 22:33)
- рассуждалки ниочем. грустно - Vit(21.05.2012 14:24)
- смешались в кучу интерфейсы, протоколы... - Snaky(22.05.2012 00:49)
- +1. У нас до сих пор применяют вариант ASCII в случае возникновения такой потребности при модемной связи. Благо возможность выбора/перехода RTU<->ASCII заранее предусмотрена. Причем не только с использованием MODBUS. - rezident(21.05.2012 12:00)
- И зачем это нужно ? Для мануального ввода с терминала ? Этот способ еще кто то юзает ? - MegaJohn(21.05.2012 13:18)
- для модбаса есть готовые терминалы. А для собственных протоколов их надо писать и отлаживать, а потом ещё не потерять со временем, быть уверенным, что оно пойдёт под вин12, и не забыть где какой используется - koyodza(21.05.2012 11:52)
- а что, теперь планируется глобальный плановый переход на Modbus ASCII ? - MegaJohn(21.05.2012 11:17)
- AT и NMEA существуют третий-четвёртый и второй десяток лет соответственно. Бинарные альтернативы, а они были, но исключительно вендор-специфичные и как-то по-тихому загнулись. К чему бы это? - fk0(17.05.2012 17:23)
- люди перестали думать по-машинному - scanf прилипил, работает и так сойдет. Красноармейцы захватили мир. - MegaJohn(17.05.2012 17:36)
- сначала непонятное человеку нужно отладить. два говнокода завсегда отлаживать интереснее, чем один:) особенно приятно объединение протоколов для настройки и для говноскад в один бинарный, свой, ни с чем не совместимый. своё не пахнет(С), а когда в Vit(479 знак., 21.05.2012 00:38)
- Нет. Все бинарные протоколы придуманы лоботрясами ниасилившими ни зачем нужны текстовые протоколы, ни представляющими как пишется ПО для работы с ними. Любой вид техники? Передай-ка float, а потом будешь рассказывать. Про закавыки с fk0(492 знак., 17.05.2012 17:14)
- ИМХО, ATкоманды - плохой выбор для систем промышленного управления. Ядерным реактором так управлять нельзя, равно как ответственным оборудованием тоже. Да и разбирать текстовый протокол на МК занятие не для слабонервных. - Хитрый Китаец(17.05.2012 16:47)