Eddy_Em: Про прерывания при приеме данных я как то забыл, действительно я раньше их использовал, попробую еще поэкспериментировать, на этот раз выложу исходники в сеть чтобы не искать потом:)
relgames: При подключении телефона как флешки, флешка "отсоединяется" от смартфона и он ничего писать\читать в ней не может, но конечно есть MTP режим, в нем это может сработать, спасибо за идею буду пробовать.
Eddy_Em: Тут вопрос не в том что переполнился, а в том как определить что данные которые уже должны были прийти не пришли, тупо сделать таймаут ожидания не подходит, т.к. нельзя точно определить сколько именно данных придет, потому как та самая матрица полностью не пересылается, пересылаются только изменения в ней. Как тут поможет прямой доступ к памяти если с одной стороны у меня только uart с другой SPI
Eddy_Em: по поводу интерфейса и мышки, wiring пишется на C\C++ ("The Wiring IDE comes with a C/C++ library called "Wiring") Фактически это C\С++ с плюшками вроде заготовленных функций для работы с периферией, так что оно не особо отличается от низкоуровневого программирования:) Потому и часами мучился чтобы заставить это работать:)
Eddy_Em: вот тут в фразе "кольцевой буфер" проблема:) Т.к. соединение с дуинкой идет по 2 проводам, соединение которых не на 100 % идеальное и часть данных может посередине потеряться, и получается ждали 3 байт из массива а на самом деле 15 байт пропустили и читаем уже 16й, а когда дошли до N ждем байт, которые не придут:) И тому подобных ситуаций много, поэтому нормально код не так просто в данном случае сделать. +SPI, он тоже любит "отвлекать" от чтения данных, в итоге потеря и опять не ясно как такую ситуацию обрабатывать. В том то и проблема что 2 раза уже делал:) Оба раза часами сидел мудрил, потом забивал на это дело по той или иной причине, когда вспоминал не мог найти исходники, вот и сейчас дуйня работает со старым кодом, а прошить ее, чтобы подправить код нечем:)
Проблема тут не в C#, он отправляет нормально и может отправлять в десятки раз быстрее, проблема это поймать понять и прожевать на стороне дуйни, простой Serial.Read тут не поможет по многим причинам, на счет нормального C тут вопрос спорный, если на относительно высокоуровневом wires все глючит, то написать подобное на низкоуровневом мне не светит:) Не привык я к низким абстракциям после C#, который все контролирует сам. То что код с десяток строк на 100% согласен, проблема в том что я не могу вспомнить каких именно строк:) Но их и правда было мало)
Армянское Радио: Eddy_Em: ничего вы тут тред резвернули:) "128 тысяч байт в секунду", "полтора мегабита", автор вопроса 99% хотел просто у ардуинки ножками подергать:)
relgames: идея интересная, но есть недостатки:
1. нужны специальные драйвера, которые идут в ADK,
2. нужен ADB.
3. нельзя тупо воткнуть кабель и иметь подключение, нужна возня с запуском всего этого счастья + нужно тыкать на tethering в смарте при каждом подключении.
Хотя метод интересный, спасибо за ссылку.
Алексей Тен: согласен, не для всех случаев алгоритм будет эффективен, он будет эффективен только если размер прямоугольника много меньше размера фигуры. В подобных случаях он будет менее эффективным. в таком случае нужно "Можно провести еще дополнительную оптимизацию, смещая все ячейки с наложением, но тогда нужно будет контролировать что не образовалось частей изображения не перекрытые листом, что проблематично" придется как то так делать, но это довольно сложно реализовать.
akass: это вопрос к автору задачи, теоретически можно просто пропустить данный фрагмент и разбирать остальные, или вообще никак не обрабатывать а просто включить N символов а не N-1 и тогда он будет их схлопывать
relgames: не уверен конечно, но разве параметры подсети для него можно настроить? Все фрагменты кода которые гуглил только "включают", но не настраивают параметры.
akass: правильно, в задаче нет указаний о длине фрагментов, чтобы работать с разными нужно переписать ConcatRecursive, убрав из него все IF и заменить на цикл с проходом стольких N-1 шагов, где N - длина наименьшего из сравниваемых
Алексей Тен: Не совсем так, в предложенном мной алгоритме если фигура скажем бублик то в дырке по центру прямоугольник не берется совсем, поэтому для невыпуклых это правило тоже будет работать, хотя с наложением можно уменьшить степень "незаполненности" прямоугольников при желании
Neuroware: Можно провести еще дополнительную оптимизацию, смещая все ячейки с наложением, но тогда нужно будет контролировать что не образовалось частей изображения не перекрытые листом, что проблематично