Jump to content

    

Ink

Участник
  • Content Count

    40
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Ink

  • Rank
    Участник
  1. Дела... Кто-нибудь еще такое наблюдал? Как это можно объяснить?
  2. Сдвиг будет происходить визуально плавно (идеальная плавность) только тогда, когда информация будет обновляться каждую развертку. Т.е. при развертке 75Гц строка должна уехать на 75 пикселей (или кратно). Иначе будут спецэффекты. Двойная буферизация заключается в том, что вы пока рисуете на экране первый буфер, обновляете в памяти второй, чтобы у вас не нарисовалась случайно полуизмененная картинка. Больше она ни от чего не помогает. Да, еще один наблюдаемый эффект: при низкой развертке (50Гц например) сверху-вниз бегущая строка выглядит наклонной. Поэтому если кто-то сделает строку из 3х "этажей" и будет разворачивать каждый этаж одновременно - картина может быть печальная. Как и с разверткой по столбцам. Кстати, при развертке в 200-1000 Гц, лично я наблюдал размножение точек - размазанность движущегося текста (когда кадр при такой быстрой развертке сдвигается 1 раз на 4-20 разверток). Кто-то еще это наблюдал?
  3. если человек не знает инструмент, с которым работает = сам дурак. не принципиально, асм это или не асм.
  4. Не знаю уж, при чем здесь modicon, но я за вас погуглил: http://en.wikipedia.org/wiki/Multi_Point_Interface http://forums.mrplc.com/index.php?showtopic=6316 http://www.control.com/thread/1026184548
  5. Не уверен, но думаю, что в чистом виде описания протокола просто нет. А чем не устраивают готовые библиотеки? Prodave или бесплатная libnodave? Если ну очень надо - можете выковырять протокол из последней (посмотрите и инфу на сайте, что-то там было).
  6. prottoss, спасибо! будет время - покурю и исправлю.
  7. prottoss, а вы, раз уж разобрались, могли бы сделать фикс этих багов и выложить здесь прошивку? Автор допера не горит желанием быстро обновлять сайт (до сих пор там старые прошивки лежат, с глюками в CDC, хотя я ему писал и он сказал что попозже посмотрит). Или конкуренция и все такое?;)
  8. А это ничего, вообще, что локальные переменные (в т.ч. временные, созданные компилятором) так же могут лежать на стеке? И их будет разное кол-во в этих функциях. Вы перейдете на другую подпрограмму, она выкинет другое кол-во переменных со стека при возврате и улетит вникуда...
  9. Может я ошибаюсь, но сдается мне, что никак так не сделать. Либо как-то в отдельно взятом компиляторе, но все равно сомневаюсь. Очень. А инлайн не подходит?
  10. Проще и быстрее написать тест под нужные параметры. Если вас интересует безглючная работа именно у вас, при ваших условиях, - проверяйте и все увидите, забыли или нет.
  11. Никто не отвечает:) Код большой слишком, долго ковырять, а пропустить что-то запросто. Я бы вам рекомендовал сделать простой тест: 100500 тыщ раз в цикле вызывать эту функцию с рандомными параметрами, и вызывать эталонную функцию с этими же параметрами. Потом сравниваете результаты, и если ошибка - смотрите что где. Не 100% гарантия, но может быть близко при хорошем генераторе. Как реализовать - дело ваше: либо нативно в контроллере (используя библиотеки компилятора за эталон) - медленно, либо на компе, переписав этот код на си 1 в 1 - быстро.
  12. Это тоже ошибочное мнение:) Программеры на си, которые воюют, они воюют и с си! Потому что не знают языка! А те, кто знает, те не воюют, точно так же как и с си++.
  13. Если это ошибка разрушения кучи - вы пишите мимо выделенных областей, затирая служебную информацию. Но это и так ясно. Как можно найти место: переопределяете malloc и free макросами, которые вызывают нормальные функции и тоже пишут в консоль сообщение и номер строки. После вылета увидите последнее действие, ищите где-то рядом. А нельзя запустить прогу в дебаггере студии? Там было бы видно, что где, по call-stack.
  14. Естественно X там нет, он лежит отдельно от всего в единственном экземпляре. Но я не понимаю вот этого: Это как так может быть? С чего создастся два разных Х? Конечно. И ровно то же самое говорят упертые ассемблерщики в сторону цешников (и справедливо, если на все смотреть плоско!). Смотрите на мир шире, не зря эти языки были придуманы, не зря существуют методы проектирования ПО. Естественно, что для простого SPI не нужно городить классы, но когда у вас будет огромный проект, вы встряните и будете долго понимать, как же так получилось непонятно. Думается мне, что это не "проблемы языка", а банально проблемы от незнания языка. Это не характеризует язык.
  15. Нифига не понял. Вот пример: #include <iostream> class A { public: static int X; void printx() {std::cout << X << std::endl;}; void setx(int x) {X=x;}; }; int A::X=0; class B : public A { public: void printx() {std::cout << X << std::endl;}; void setx(int x) {X=x;}; }; class C : public A { public: void printx() {std::cout << X << std::endl;}; void setx(int x) {X=x;}; }; int main() { A a; B b; C c; a.setx(10); a.printx(); b.printx(); c.printx(); b.setx(20); b.printx(); a.printx(); c.printx(); return 0; } Одна статическая переменная в базовом классе. От базового наследуются 2 класса, каждый видит одну и ту же переменную, так же, как если бы она была глобальной. Как бывает еще? Ответ проги: 10 10 10 20 20 20