Вс мар 06, 2022 20:23:57
Eddy_Em писал(а):Делаешь тупые блокирующие read что ли?
Вс мар 06, 2022 20:47:05
Вс мар 06, 2022 21:16:33
Микрокомп это типа малина или банан?uwrtey писал(а):Но программа рассчитана на использование на современном железе.
На каком нибудь микрокомпьютере.
Вы напрямую работаете с джойстиком или через систему? Система работает с ним из ядра где доступны прерывания, DMA и др. средства позволяющие обойти ограничения ОС не реального времени.uwrtey писал(а):Да я в курсе, но видел собственными глазами как некоторая периферия работает в реальном времени. Джойстики например.
Он относится к .NET, а не WinAPI. Как в .NET реализовано неизвестно. Кроме того неизвестно какие особенности добавляет игровой движок. Уже просто столько времени что могли написать на другом ЯП dll работающую с портом и подключить в проекту. Возможно это полностью решило бы проблему.uwrtey писал(а):класс SerialPort относится к WinAPI, на сколько я знаю...
В любом приличном ЯП можно найти графическую библиотеку (порой их несколько использующих GDI, GDI+, DX, OpenGL и др.). Зачем для этих целей нужен игровой 3D движок непонятно.uwrtey писал(а):2) Юнити выбрал потому как для ПК ни разу не прогал ( до этого AVR на асме ) а тут нужно стало визуализировать входящие данные.
На Java пишите под андроид.uwrtey писал(а):Хуже всего, что планировал запустить софтину на андроиде
Какой размер буфера приема и передачи и какие тайминги порта.uwrtey писал(а):Где я выставляю задержку????
Примеры есть, но не для игрового движка. Мало кто использует игровой 3D движок для работы с COM портом. Это все равно что на самолете летать в булочную находящуюся в соседнем квартале.uwrtey писал(а):А есть пример ПРАВИЛЬНОГО_КОДА ? - посмотреть как должно быть...
Вс мар 06, 2022 22:18:48
Ни как нет. Малина не потянет... Я выше примеры привел - под спойлером.Мурик писал(а):икрокомп это типа малина или банан?
Ясно..Мурик писал(а):Система работает с ним из ядра где доступны прерывания, DMA и др.
Вы правы! Чёт затупил...Мурик писал(а):Он относится к .NET, а не WinAPI
Тут я еще не понимаю ничего..Мурик писал(а):Уже просто столько времени что могли написать на другом ЯП dll работающую с портом и подключить в проекту. Возможно это полностью решило бы проблему.
Ну я выше объяснил почему выбор пал на юнити... От незнания..Мурик писал(а):Зачем для этих целей нужен игровой 3D движок непонятно
Ну да, андроид студио.. Начинал было изучать.. Но так лень переделывать то, что уже сделано в юнити... Эмоционально сложно.. Если бы новый проект, то другое дело....Мурик писал(а):На Java пишите под андроид.
Мурик писал(а):Какой размер буфера приема и передачи и какие тайминги порта.
Как осуществляется прием и передача?
Мурик писал(а):Это все равно что на самолете летать в булочную находящуюся в соседнем квартале
Ктонибудь может по этому хоть что то подсказать?Eddy_Em писал(а):Если так критично, используй select вместо poll: там можно микросекундами оперировать.
Вс мар 06, 2022 23:07:28
Вс мар 06, 2022 23:28:32
У меня четвертая малина много чего тянет в том числе примеры с 3D. 60 FPS без тормозов и подвисаний. Не думаю что перечисленные вами микрокомпы сильно мощнее, а стоят дороже.uwrtey писал(а):Малина не потянет
Я не об этом спрашивал. При открытии COM порта какие вы задали размеры буфера приема и передачи, а также какие тайминги порта?uwrtey писал(а):Все просто. С микроконтроллера сыпется поток на скорости 57600 бод.
Почему побайтно, а не все принятые данные сразу?uwrtey писал(а):В коде C# я использую функцию ReadByte - то есть считываю по одному байту.
Это приведет к потере данных. Буфер можно чистить, только если обмен идет в режиме запрос-ответ и только перед запросом. Если МК отправляет данные без предварительного запроса, входной буфер чистить нельзя.uwrtey писал(а):Чтобы буфер не подвисал регулярно его чищу
Китайский хорошо знаете?uwrtey писал(а):Вот тут еще нашел пример
А может лыжи или ложка?nds писал(а):Л - Lazarus))
Ну почему же? Если обеспечить наличие промежуточного буфера с большим объемом чем может поступить данных между срабатываниями таймера, то даст высокую гарантию стабильной работы.nds писал(а):поллинг - опрос буфера по таймеру а не по прерыванию - не самая лучшая в плане стабильности техника
Вс мар 06, 2022 23:52:12
Пн мар 07, 2022 06:08:34
Мурик писал(а):При открытии COM порта какие вы задали размеры буфера приема и передачи, а также какие тайминги порта?
Мурик писал(а):Почему побайтно, а не все принятые данные сразу?
Мурик писал(а):Китайский хорошо знаете?
Чувствую себя своей женой в разговоре с со мной ))Мурик писал(а):Ну почему же? Если обеспечить наличие промежуточного буфера с большим объемом чем может поступить данных между срабатываниями таймера, то даст высокую гарантию стабильной работы.
Спасибо, глянуEddy_Em писал(а):Простой пример чтения из порта с использованием select. Могу еще пример с poll привести, но его таки лучше для сокетов использовать.
Да, будет через USB. Аппаратный на микрокомпах не выведен вроде...Eddy_Em писал(а):Про чтение по прерыванию - это, конечно, хорошо, но работает лишь с аппаратными USART, а много у вас аппаратных портов используется? Если же USB, то только поллинг.
22.02.22: Добавлены опции чтения данных (ReadLine и ReadTo)
Пн мар 07, 2022 08:31:08
Пн мар 07, 2022 13:10:12
Пн мар 07, 2022 13:50:43
Где гарантия что будет принят весь пакет целиком? В момент чтения может быть получена часть пакета, или пакет с частью следующего пакета. Нужно считывать все и анализировать. Не полностью полученные пакеты, сохранять до приема оставшейся части.uwrtey писал(а):можно избавится от побайтного чтения и читать целиком строку от заголовка одного пакета, до заголовка следующего.
У автора спрашивайте. Ищите документацию. Кто же знает как это сделали в игровом движке.uwrtey писал(а):"readLine" до какого значения опредеояет строку?
Пн мар 07, 2022 20:52:21
Мурик писал(а):Я не об этом спрашивал. При открытии COM порта какие вы задали размеры буфера приема и передачи, а также какие тайминги порта?
Пн мар 07, 2022 21:54:50
Вт мар 08, 2022 04:13:10
uwrtey писал(а):ПС: глянул код автора, который юзаю как пример работы, а он в этом году изменнился.
Теперь он юзает многопоточность.
Попробовал заюзать его код - пока не получилось..
https://github.com/dyadica ( тут уже новый код )
Чт мар 10, 2022 01:28:09
Чт мар 10, 2022 01:35:05
В сторону отладчика. Надеюсь он есть для игрового движка.uwrtey писал(а):Куда копать?
Мьютексы, семофоры используйте? Гонки нет? https://ru.wikipedia.org/wiki/Состояние_гонкиuwrtey писал(а):Поди конфликт какой то в многопоточности?
Правильно проектируйте многопоточноную программу. Доступ к общим данным должен быть в один и тот же момент только у одного потока.uwrtey писал(а):Попинайте плиз в нужном направлении
Чт мар 10, 2022 01:45:18
Мурик писал(а):В сторону отладчика. Надеюсь он есть для игрового движка.
Кроме того, в дополнение к включению триггеров событий я также удалил все следы метода потокового обновления.
Это серьезное изменение сценария, отражающее способ работы Unity.
На самом деле, поскольку Unity API не является потокобезопасным, я пришел к выводу, что нет смысла использовать многопоточный подход.
Пт мар 11, 2022 04:19:36
Пт мар 11, 2022 07:50:25
угу. справку читайте, а то в шоке будетеuwrtey писал(а):тут ?