Страница 8 из 12

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 02:06
Serg
AndyBig писал(а):Если ЦПУ перестанет реагировать на прерыывания, то никакой буфер уже не спасет :)
Ну почему-же? Останется DMA-контроллер и UART, процессор им нужен только для настройки их взаимодействия.
AndyBig писал(а):Это особенности реализации драйверов :)
Драйвер тут точно не при чём. Причём архитектура и реализация SATA-контроллера. Хотя надо отдать должное - в современных чипсетах стало заметно лучше, но принципиально проблема не решаема на x86.
AndyBig писал(а):Кроме того COM-порты с их аппаратным контролем потока начинают постепенно уходить в прошлое.
Вот как-то не заметил... Сначала порты делали на простеньком 8250, потом стали применять 16450 у которого внутри появился программируемый генератор (скорость передачи), потом все стали ставить 16550, в котором появились аппаратные буфера приёма и передачи (на 14 байт) и полноценная схема аппаратного контроля потока. Потом пошли 16550N, которые научились работать с контроллером DMA. Сейчас все ставят 16750 (и аналоги) которые аппаратно умеют выполнять все функции RS232/422/485, имеют расширяемые буфера и ещё много всяких полезных фишек.
AndyBig писал(а):Что за косяки? :) А то может это косяки организации сети, а не ОС :)
Если мне не изменяет мой склероз, то венда, если у неё на сетевом интерфейсе несколько IP-адресов, до сих пор не научилась отправлять пакеты не с первого адреса...

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 05:38
Сергей Саныч
UAVpilot писал(а):Сейчас все ставят 16750 (и аналоги) которые аппаратно умеют выполнять все функции RS232/422/485, имеют расширяемые буфера и ещё много всяких полезных фишек.
Они-то умеют. А драйвер виндовский об этом догадывается?

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 08:15
Serg
Сергей Саныч писал(а):Они-то умеют. А драйвер виндовский об этом догадывается?
хз, я не силён в программировании под винду. По логике должен-бы поддерживать - железки для x86 в первую очередь в расчёте на винду делают.

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 11:00
vovan
Сергей Саныч писал(а): А драйвер виндовский об этом догадывается?
умеет, просто их надо включить в настройках драйвера.

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 13:57
AndyBig
UAVpilot писал(а):Останется DMA-контроллер и UART
А толку, если обрабатывать данные уже некому? :)
UAVpilot писал(а):Драйвер тут точно не при чём. Причём архитектура и реализация SATA-контроллера
На IDE такого не было? Что-то у меня какие-то смутные воспоминания имеются о таких случаях, когда SATA еще и не было :)
UAVpilot писал(а):Вот как-то не заметил...
Сколько сейчас есть в продаже ноутов с этим портом? Или десктопных материнок с выведенным в разъемы этим портом? Как, впрочем, и с LPT :)
UAVpilot писал(а):венда, если у неё на сетевом интерфейсе несколько IP-адресов, до сих пор не научилась отправлять пакеты не с первого адреса...
Тогда бы доп. адреса просто не работали бы. Но они же работают? :)

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 16:52
Serg
AndyBig писал(а):А толку, если обрабатывать данные уже некому? :)
Ну так пока остатки буфера передаются/принимаются ЦПУ можно ведь ресетнуть, восстановить предыдущее состояние и продолжить работу... :)
Или вот представь, засунули всё, что надо передать в память, настроили DMA на передачу и запустили процесс - всё, тут ЦПУ уже больше не нужен. :)
AndyBig писал(а):На IDE такого не было?
Было. Но дело не только в контроллере - в платформе x86 полноценный асинхронный ввод/вывод невозможен.
AndyBig писал(а):Сколько сейчас есть в продаже ноутов с этим портом?
Я ж не зря написал "и аналоги" - полнофункциональные аналоги 16750 сейчас встроены во все чипсеты. :)
AndyBig писал(а):Тогда бы доп. адреса просто не работали бы. Но они же работают? :)
Они нормально и не работают. Например если на сетевом интерфейсе навешаны адреса 1.1.1.1 и 2.2.2.2, то он будет принимать входящие пакеты и dst:1.1.1.1 и с dst:2.2.2.2, но посылать в сеть сможет только пакеты с src:1.1.1.1, при попытке отправить пакет с src:2.2.2.2 в исходящем пакете всё равно будет src:1.1.1.1.

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 18:09
AndyBig
UAVpilot писал(а):Ну так пока остатки буфера передаются/принимаются ЦПУ можно ведь ресетнуть, восстановить предыдущее состояние и продолжить работу...
Уже пробовали проделать такое на компе с виндой или линуксами? :))
UAVpilot писал(а):в платформе x86 полноценный асинхронный ввод/вывод невозможен
А в какой возможен? Что-то я на вскидку такой и не припоминаю... Кажется, везде внешняя шина адреса-данных одна и если она кем-то занимается на передачу, то на прием уже никак не может быть использована пока не освободится :) А для неблокировки ее на длительное время есть таймауты. Честно говоря, не знаю внутренности драйверов IDE и SATA в подробностях, но не понимаю почему таймауты там не используются в таких ситуациях, и не вижу принципиальных препятствий использовать их :)
UAVpilot писал(а):полнофункциональные аналоги 16750 сейчас встроены во все чипсеты
Я писал не про чипсеты, а про готовые потребительские устройства :) Порт может даже в системе висеть, вот только в большинстве случаев добраться до него физически вариантов нет :)
UAVpilot писал(а):Например если на сетевом интерфейсе навешаны адреса 1.1.1.1 и 2.2.2.2, то он будет принимать входящие пакеты и dst:1.1.1.1 и с dst:2.2.2.2, но посылать в сеть сможет только пакеты с src:1.1.1.1, при попытке отправить пакет с src:2.2.2.2 в исходящем пакете всё равно будет src:1.1.1.1.
Повторюсь - тогда бы они просто не работали :) К примеру - отправляется пакет с HTTP-запросом с адреса 2.2.2.2, а ответ приходит на адрес 1.1.1.1, где его никто не ждет :) Связи нет, интерфейс не работает :)

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 20:09
selenur
В моем случае прикол был в том, что нельзя было сделать UDP слушатель с одним и тем-же портом, на каждом из сетевых интерфейсов, в результате чего это усложняло прием данных по UDP от устройств, из разных подсетей. А если делать один слушатель для всех интерфейсов, по данному порту, то там что-то снова создавало проблему приема по UDP.

Re: Самопальный интерпретатор

Добавлено: 28 апр 2015, 20:35
Serg
AndyBig писал(а):Повторюсь - тогда бы они просто не работали :) К примеру - отправляется пакет с HTTP-запросом с адреса 2.2.2.2, а ответ приходит на адрес 1.1.1.1, где его никто не ждет :) Связи нет, интерфейс не работает :)
Именно так и происходит, если в случае HTTPS сертификат прицеплен ко второму IP - https в этом случае работать не будет. А вот нешифрованные соединения вполне себе будут работать, например пинг вот так работает:

Код: Выделить всё

C:\>ping 172.16.0.99

Обмен пакетами с 172.16.0.99 по с 32 байтами данных:
Ответ от 172.16.0.21: число байт=32 время=1мс TTL=64
Ответ от 172.16.0.21: число байт=32 время=1мс TTL=64
Ответ от 172.16.0.21: число байт=32 время=2мс TTL=64
Ответ от 172.16.0.21: число байт=32 время<1мс TTL=64

Статистика Ping для 172.16.0.99:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 2 мсек, Среднее = 1 мсек

C:\>
Кстати, а не серверная винда при попытке навесить второй IP ругается, что на интерфейсе уже есть IP из этой подсети.

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 00:00
AndyBig
UAVpilot писал(а):например пинг вот так работает:
Странно, у меня он работает вот так:

Код: Выделить всё

PING 192.168.1.95 (192.168.1.95): 56 data bytes
64 bytes from 192.168.1.95: seq=0 ttl=128 time=2.159 ms
64 bytes from 192.168.1.95: seq=1 ttl=128 time=1.504 ms
64 bytes from 192.168.1.95: seq=2 ttl=128 time=1.219 ms
64 bytes from 192.168.1.95: seq=3 ttl=128 time=1.222 ms
64 bytes from 192.168.1.95: seq=4 ttl=128 time=1.225 ms
64 bytes from 192.168.1.95: seq=5 ttl=128 time=1.246 ms
64 bytes from 192.168.1.95: seq=6 ttl=128 time=1.240 ms
64 bytes from 192.168.1.95: seq=7 ttl=128 time=1.233 ms
64 bytes from 192.168.1.95: seq=8 ttl=128 time=1.229 ms
64 bytes from 192.168.1.95: seq=9 ttl=128 time=1.217 ms
При этом конфигурация сетевой карты:
112.JPG (2557 просмотров) <a class='original' href='./download/file.php?id=49188&mode=view' target=_blank>Загрузить оригинал (81.21 КБ)</a>
Это еще и к вопросу про
UAVpilot писал(а):Кстати, а не серверная винда при попытке навесить второй IP ругается, что на интерфейсе уже есть IP из этой подсети
Винда - семерка 64, не ругается :)
selenur писал(а):В моем случае прикол был в том, что нельзя было сделать UDP слушатель с одним и тем-же портом, на каждом из сетевых интерфейсов
А интерфейсы были физически разными? Или несколько IP на одной сетевой карте?

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 01:27
Serg
AndyBig писал(а):Странно, у меня он работает вот так:
возможно уже и поправили, у меня венда только во внутренней сети есть - апдейты не накатить.
С SSL не далее как в начале апреля клиент попал с 2008 server, ему нужно два разных вебсервера, каждый со своим сертификатом - он так и не смог наладить нормальную работу SSL на втором IP, пришлось ему второе подключение к сети покупать.
AndyBig писал(а):А интерфейсы были физически разными? Или несколько IP на одной сетевой карте?
а это не важно, должно и так и так работать.

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 04:54
AndyBig
UAVpilot писал(а):С SSL не далее как в начале апреля клиент попал с 2008 server, ему нужно два разных вебсервера, каждый со своим сертификатом - он так и не смог наладить нормальную работу SSL на втором IP
По части HTTP-серверов на винде не в курсе, занимался ими слегка только под CentOS (на своем выделенном сервере) :)
UAVpilot писал(а):а это не важно, должно и так и так работать
По идее да, но все равно интересно :)

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 20:54
Крафтер
Сейчас добавляю ползунок регулировки скорости подачи. Как его совместить с подачей, задаваемой параметром F? Есть два варианта.
1. Перемножать значение ползунка на текущую подачу. Например, если ползунок посередине, то всё двигается в 2 раза медленнее.
2. Ползунок показывает текущую подачу. При движении ползунка мышкой значение текущей подачи заменяется на новое. Когда программа доходит до новой команды F, ползунок сдвигается в новое значение.

Мне первый вариант больше нравится. Во втором случае если на каждой строке будет указана подача, то нормально притормозить не получится.

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 21:02
Predator
Крафтер писал(а):Перемножать значение ползунка на текущую подачу
А зачем? Принимай текущую подачу за 100% и всё, а ползунок допустим будет от 0 до 150%, но текущая подача F равна именно 100%, т.е. ползунком можно, как убавить, так и прибавить подачу.

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 21:15
selenur
Predator писал(а):
Крафтер писал(а):Перемножать значение ползунка на текущую подачу
А зачем? Принимай текущую подачу за 100% и всё, а ползунок допустим будет от 0 до 150%, но текущая подача F равна именно 100%, т.е. ползунком можно, как убавить, так и прибавить подачу.
Абсолютно согласен, в данном случае, ты лишь итоговую скорость корректируешь, и не задумываешься, о передергиваниях ползунка и прочего :-)

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 21:19
Predator
Просто в таком случае ползунок будет равносилен переключателю % подач, выделил на скрине, что собственно правильно.
1273151574-.jpg (2508 просмотров) <a class='original' href='./download/file.php?id=49308&mode=view' target=_blank>Загрузить оригинал (88.15 КБ)</a>
Кстати, на обороты тоже ползунок бы не помешал, если возможно конечно ;)

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 22:09
Крафтер
Значит все за первый вариант.

Re: Самопальный интерпретатор

Добавлено: 29 апр 2015, 22:20
AndyBig
Крафтер писал(а):Значит все за первый вариант.
Угу, так логичнее и удобнее всего :)
Только вот
Крафтер писал(а):если ползунок посередине, то всё двигается в 2 раза медленнее
Посередине - все должно двигаться как задано в кодах (скорость 100%), а влево-вправо уменьшает-увеличивает скорость :)

Re: Самопальный интерпретатор

Добавлено: 30 апр 2015, 06:13
Predator
Крафтер писал(а):Значит все за первый вариант
Я не за первый и не за второйю
Я уже написал, как лучше сделать Re: Самопальный интерпретатор #154

Re: Самопальный интерпретатор

Добавлено: 01 май 2015, 07:29
selenur
Крафтер - посмотрел твои исходники, и заметил что у тебя управление моторами реализовано не через драйверы моторов, где используется всего по 2 вывода (step, dir), а путем управления каждой обмоткой (т.е. практически минуя драйвер), чем обусловлена такая реализация? :-)