раскрыть ветку (1)
dll-ку надо было на днях отправить заказчику. Т.к. у него платы нет, то я сделал так, что она выдаёт липовые значения в коллбэки, из желаемого диапазона. Когда отправим плату, уже в каждой функции будет к ней обращение, и вывод реальных результатов.
показать ответы
А чего жесты, а не репа?
Ну замечания:
1. Стиль и табуляция.
2. Мэджики.
3. Адовая смесь C и C++. Неплохо было бы выбрать что-то одно. Поскольку, тут хардвар, то советую переписать всё на С.
4. Буфер сообщение\й в обе стороны потенциально незащищён от ошибок чтения. В случае UDP это критично.
Вот видишь, все оценили.
Ну замечания:
1. Стиль и табуляция.
2. Мэджики.
3. Адовая смесь C и C++. Неплохо было бы выбрать что-то одно. Поскольку, тут хардвар, то советую переписать всё на С.
4. Буфер сообщение\й в обе стороны потенциально незащищён от ошибок чтения. В случае UDP это критично.
Вот видишь, все оценили.
раскрыть ветку (1)
1. исправляю.
2. што?)
3. замечательно, но на с сложновато что-то в параллельный поток выкинуть. Ну, для меня, по крайней мере) И udp я реализовал с помощью инди-клиента, а это возможно только в плюсах. Изначально хотел через winapi и winsock, но там всё как-то замудрено, и у меня не получалось настроить таймаут. А в инди api, таймаут указывается прямо в функции приема пакета, что очень удобно)
4. чем лечится? я ещё не на столько силён в прогании :)
спасибо :)
2. што?)
3. замечательно, но на с сложновато что-то в параллельный поток выкинуть. Ну, для меня, по крайней мере) И udp я реализовал с помощью инди-клиента, а это возможно только в плюсах. Изначально хотел через winapi и winsock, но там всё как-то замудрено, и у меня не получалось настроить таймаут. А в инди api, таймаут указывается прямо в функции приема пакета, что очень удобно)
4. чем лечится? я ещё не на столько силён в прогании :)
спасибо :)
показать ответы
Странно, это как раз таки.
Эзернет можно юзать кому не лень, посылая на микрушку лишнее гамно, в отличии от монополизированного RS232 / 485.
Да и дальность, всего 100 метров, в отличии от 1200 для 485го.
А вы под ARM пишете, я так понимаю?
Эзернет можно юзать кому не лень, посылая на микрушку лишнее гамно, в отличии от монополизированного RS232 / 485.
Да и дальность, всего 100 метров, в отличии от 1200 для 485го.
А вы под ARM пишете, я так понимаю?
раскрыть ветку (1)
да, cortex m4. Устройство находится в метре от пк, и в сети кроме устройства и пк никого нет, так что всё спокойно
показать ответы
ЕБАНУТАЯ ЛОГИКА ПИКАБУ?
Почему эта херня набрала уже под тысячу плюсов, а эти мои посты тупо слили?
http://pikabu.ru/story/moyo_studencheskoe_khobbi_1945761
http://pikabu.ru/story/moyo_poststudencheskoe_khobbi_1946019
Почему эта херня набрала уже под тысячу плюсов, а эти мои посты тупо слили?
http://pikabu.ru/story/moyo_studencheskoe_khobbi_1945761
http://pikabu.ru/story/moyo_poststudencheskoe_khobbi_1946019
раскрыть ветку (1)
Немного не понял вашей терминологии.
На данный момент работаю с 8-ю изолированными 485-ми сетями, в каждой сидит мастер. Помимо мастера, на линии по ~200 slave устройств. В определенных узлах стоят репитеры (адамы, icp-con и подобные). По всей видимости - это шина.
А что значит - линком?
Кстати, да, а почему автор не юзанул 485, гораздо же проще? Одну микруху max485csa на плату, и один RS-485 <-> USB на компутор. По мне, брать байты с COM намного проще, нежели с сокетами возиться. Открыл порт - да бери :-)
На данный момент работаю с 8-ю изолированными 485-ми сетями, в каждой сидит мастер. Помимо мастера, на линии по ~200 slave устройств. В определенных узлах стоят репитеры (адамы, icp-con и подобные). По всей видимости - это шина.
А что значит - линком?
Кстати, да, а почему автор не юзанул 485, гораздо же проще? Одну микруху max485csa на плату, и один RS-485 <-> USB на компутор. По мне, брать байты с COM намного проще, нежели с сокетами возиться. Открыл порт - да бери :-)
раскрыть ветку (1)
уууу.... так это не взаимодействие, это слив. На серьезных объектах за такую реализацию обмена руки отрывают. И не имеет никакого значения, насколько быстро и правильно работает логика. Нет гарантированного обмена - всему твоему коду цена ноль.
раскрыть ветку (1)
если останется время - сделаю гарантированную доставку. Проект через месяц сдавать. У нас в одной локальной сети будут находиться только компьютер и плата, и на 4-м Кортексе tcp поднимать всё-таки неохота...
показать ответы
раскрыть ветку (1)
мало того, что dll udp-запросы принимает, эти запросы ещё и приходят через несколько секунд после вызова функций) так что онли колбэк
Девушка тебе нужна. Я когда что-то, на мой взгляд, крутое написал, то всегда показывал это свой девушке, а она делала умный вид что всё понимает и восхищается )
А вообще мы, программисты, как супергерои. Всё на нас держится, но никто не знает нашего имени.
А вообще мы, программисты, как супергерои. Всё на нас держится, но никто не знает нашего имени.
раскрыть ветку (1)
пизданул как батька) ну...я бывшей периодически рассказываю, что я накодил, она делает умный вид и восхищается :D
показать ответы
раскрыть ветку (1)
не слышал. вряд-ли запутаюсь, в самом верху всякие объявления, ниже функции, поток, а дальше уже проверки, которые идут на экспорт, и перед каждой небольшие комментарии. В последних их нет, т.к. времени не было
показать ответы
раскрыть ветку (1)
окей, гайз
исходник:
https://gist.github.com/63cdc8893d3ddbbdb021.git
хидер:
https://gist.github.com/199e736f465c9ca64e4b.git
гуи-программку для теста этой балды тоже выложить?)
исходник:
https://gist.github.com/63cdc8893d3ddbbdb021.git
хидер:
https://gist.github.com/199e736f465c9ca64e4b.git
гуи-программку для теста этой балды тоже выложить?)
показать ответы
Когда-нибудь точно запутаешься. Оформлять код сложно только на первых порах, потом станет привычно. В нормально оформленном коде сразу видны отдельные блоки, невозможно запутаться в скобках, да и просто приятнее смотреть на него. Сам глянь, я одну из твоих функций переписал: http://pastebin.com/6t6vbZW1
Алсо, у тебя там sizeof(str) - лучше не делай так, тоже когда-нибудь запутаешься. Если задавать строку как char str[20], то тогда sizeof(str) вернет 20, как нужно. А если как char * str = new char[20], то вернет sizeof(char *). Если размер фиксированный - задай его какой-нибудь константой, типа
const size_t STR_SIZE = 20;
char str[STR_SIZE];
...
memset(str, 0, STR_SIZE);
Алсо, у тебя там sizeof(str) - лучше не делай так, тоже когда-нибудь запутаешься. Если задавать строку как char str[20], то тогда sizeof(str) вернет 20, как нужно. А если как char * str = new char[20], то вернет sizeof(char *). Если размер фиксированный - задай его какой-нибудь константой, типа
const size_t STR_SIZE = 20;
char str[STR_SIZE];
...
memset(str, 0, STR_SIZE);
раскрыть ветку (1)
а, красивое оформление скобочек) слышал, на парах программирования пользовался)) в коде просто иногда забывается, особенно в потоке, я его вчера на скорую руку кропал. Да, надо будет оформить)
Насчёт массивов - сверху в дефайнах есть lendatain и lendataout, но так получилось, что ими я особо не пользуюсь. Спасибо тебе большое, чувак, сделаю динамическое выделение памяти) ну или через вектор. Я ещё с bytedynarray не совсем разобрался... странный он)
Насчёт массивов - сверху в дефайнах есть lendatain и lendataout, но так получилось, что ими я особо не пользуюсь. Спасибо тебе большое, чувак, сделаю динамическое выделение памяти) ну или через вектор. Я ещё с bytedynarray не совсем разобрался... странный он)
показать ответы
Ага. То чувство, когда написал восьмидесятистраничную заявку для участия в аукционе и не с кем поделиться этой радостью. Только с заказчиком, который деньги за этот аукцион уже освоил и распилил, а поэтому очень не рад видеть твою правильно составленную заявку.
Или то же самое чувство, когда ты две недели убеждал бюрократических идиотов заказчика принять твою работу и наконец то вам за нее заплатят. Но все думают, что ты хлещешь чай и пинаешь хрен, перекладывая бумажки с места на место.
Или то же самое чувство, когда ты две недели убеждал бюрократических идиотов заказчика принять твою работу и наконец то вам за нее заплатят. Но все думают, что ты хлещешь чай и пинаешь хрен, перекладывая бумажки с места на место.
раскрыть ветку (1)
Сочувствую, бро. Мне пришлось писать 9-страничную документацию с описанием экспортных функций
раскрыть ветку (1)
пока никак, не задумывался об этом. Если останется время, или начальство потребует, буду в начало каждого пакета его номер пихать, например...
Сейчас перед отправкой каждого запроса идёт проверка подключения к плате - отсылается пакет, если приходит такой-то ответ, то всё хорошо, едем дальше, если приходит другой пакет, всё плохо, если не пришло вообще ничего, ждем 300 мсек, пробуем ещё пару раз, если ничего не пришло - плата не подключена
Сейчас перед отправкой каждого запроса идёт проверка подключения к плате - отсылается пакет, если приходит такой-то ответ, то всё хорошо, едем дальше, если приходит другой пакет, всё плохо, если не пришло вообще ничего, ждем 300 мсек, пробуем ещё пару раз, если ничего не пришло - плата не подключена
показать ответы
Проект явно студенческий, и если нету требований по безопасности/надежности, зачем оно надо ?..
Что вы подразумеваете под гарантированной доставкой?
На серьезных объектах предъявляют требования не только по надежности, но и по безопасности, что подразумевает сертификацию не только ПО но и средств передачи данных.Серьезные объекты не работают на Windows, там используются системы реального времени на которых реализовать и доказать безопасность обмена на UDP/TCP .... Нет возможности в общем.
Там везде применяется резервирование (питание/управляющие устройства итд итп), а ПО/процесс разработки проверяется на соответствия стандартам.
И там не используется C++/интерпретируемые языки. Только Си/Асм.
Разной задаче - разный инструмент.
Автору добра и удачи !
Что вы подразумеваете под гарантированной доставкой?
На серьезных объектах предъявляют требования не только по надежности, но и по безопасности, что подразумевает сертификацию не только ПО но и средств передачи данных.Серьезные объекты не работают на Windows, там используются системы реального времени на которых реализовать и доказать безопасность обмена на UDP/TCP .... Нет возможности в общем.
Там везде применяется резервирование (питание/управляющие устройства итд итп), а ПО/процесс разработки проверяется на соответствия стандартам.
И там не используется C++/интерпретируемые языки. Только Си/Асм.
Разной задаче - разный инструмент.
Автору добра и удачи !
раскрыть ветку (1)
Спасибо!
Да, студенческий, я второй курс закончил :)
Требований нет, начальство одобряет.
И тебе добра и удачи)
Да, студенческий, я второй курс закончил :)
Требований нет, начальство одобряет.
И тебе добра и удачи)
Ты бы сделал длиннопост, описал бы плату, показал пустые кофейные банки, выложил бы код и тебя заминусовали бы за использование нескольких "if" вместо "case ... of".
раскрыть ветку (1)