Как получать и обрабатывать информацию с экрана ПК?

Zorgio
Offline
Зарегистрирован: 29.05.2022

Каким образом можно считывать информацию с экрана ПК и на основе полученных данных выполнять определенные действия через ардуино?
Например, на мониторе раз в N секунд появляется красный круг небольшого радиуса. Как при появлении этого круга - отправлять сигнал в Arduino (хотя бы цифрой, вида 0 - 1)?
Рассматривал вариант с датчиком цвета, но хотелось бы дешевле, да и явно можно как-то программными средствами определять цвет в определенной точке экрана... 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Ну как вариант - программно делать скриншот экрана и смотреть цвет пикселей в определенной области... )))))

Zorgio
Offline
Зарегистрирован: 29.05.2022

Ага. Но какими средствами тогда это делать, чтобы потом можно было отправить на Ардуинку через COM порт?

mixail844
Offline
Зарегистрирован: 30.04.2012
что каким сдрествами ? 
 
ищите / пишите / заказываете софтину(можно на пайтоне, можно на процессине, можно на c++/c#) для ПК ,   которая раз в N милисекунд делает скриншот экрана , это же софтиной обрабатываете - если в изображении есть "крансный круг" , в той же софтине открваете COM порт и шлете ардуине что вам угодно.
 
хотя лучше отслеживать сам "источник красонго круга" а на его наличие

 

rkit
Offline
Зарегистрирован: 23.11.2016
Argus19
Offline
Зарегистрирован: 08.05.2022

Zorgio пишет:

Например, на мониторе раз в N секунд появляется красный круг небольшого радиуса. Как при появлении этого круга - отправлять сигнал в Arduino (хотя бы цифрой, вида 0 - 1)?
Рассматривал вариант с датчиком цвета, но хотелось бы дешевле, да и явно можно как-то программными средствами определять цвет в определенной точке экрана... 

 Всё это решается программой в самом ПК. Arduino ни к чему.

 Можно определить появление красного круга в ПК и отправить "1" в Arduino через COM-port. И что вы с этой единицей будете делать? Можно отправить весь круг в виде битмапа, но он просто не влезет в память Arduino.

 Как-то непонятен смысл задачи. Сформулируйте иначе.

Morroc
Offline
Зарегистрирован: 24.10.2016

Zorgio пишет:

да и явно можно как-то программными средствами определять цвет в определенной точке экрана... 

можно, но если речь об играх с защитой типа какого нибудь gameguard'а, то простые способы не работают

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Zorgio пишет:

Каким образом можно считывать информацию с экрана ПК и на основе полученных данных выполнять определенные действия через ардуино?

У самого был подобный вопрос. Решение отложил на неопред.время, т.к. пока общий уровень подготовки слабооват))

Нашёл только, что вроде-бы (сам не пробовал) можно обратится к ПК через биос, прерывание 10Н стандартного видеосервиса ROM- BIOS. Там можно вызвать нужную функцию и считать пиксель.

Возможно на новых компах не прокатит.

P.S.Вернее пробовал в эмуляторе 8086, через 10h  выводить символы на экран., т.е. самые азы.

 

 

Morroc
Offline
Зарегистрирован: 24.10.2016

Так надо то наверное под виндой, а не в эмуляторе ДОСа ? Ничего общего. Там совершенно ничего хитрого нет пока речь не об играх - гуглится легко на каком нибудь vb или c#.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Morroc пишет:

Так надо то наверное под виндой, а не в эмуляторе ДОСа ? Ничего общего.

Я имел ввиду не DOS, а напрямую к железу, если через винду нельзя. 10h и на моём компе поддерживается, но только в низком разрешении(CGA/Mono). А на высоком - если есть VESA BIOS Extensions для VGA.(на моём нет, к сожалению)

  Повторю, я сам только начал этим заниматься, могу ошибаться, что всё правильно понял.  Но тема интересная))

inspiritus
Offline
Зарегистрирован: 17.12.2012

Лениво было, да и невозможно вмешаться в научный прибор с рэдхэтом от царя гороха на борту. Просто придепил на скрин присоску с фоторезистором и развязанную оптроном леонарду  ака мышьЭмулятор. Теперь это всё изображает оператора.

Morroc
Offline
Зарегистрирован: 24.10.2016

Дим-мычъ пишет:

  Повторю, я сам только начал этим заниматься, могу ошибаться, что всё правильно понял.  

Ага, про ДОСы или какие то там БИОСы забудьте, а винда вам просто так глубоко в себя копать не даст ) Вполне возможно, что вариант с камерой, направленной на экран, будет и в итоге проще и надежней, смотря что там разглядывать нужно и с какой точностью.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вопщем, если ты хочешь иметь прерывания - забудь про Винду, если хочешь иметь винду - забудь про прерывания.  Подсистема BIOS - 16 битный реальный режим процессора, никто тебя в него не пустит из защищенного режима, BIOS нужен только чтоб проверить и проинициализировать железо и стартануть ОС. 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Morroc пишет:

Ага, про ДОСы или какие то там БИОСы забудьте, а винда вам просто так глубоко в себя копать не даст )

DetSimen пишет:

Вопщем, если ты хочешь иметь прерывания - забудь про Винду, если хочешь иметь винду - забудь про прерывания. 

 Пошёл ка я учиться дальше...

skoctehs
Offline
Зарегистрирован: 27.02.2016

пк=скада-- модбас -- ардуино

вопрос в управлении железом от ПК и обратной связи от датчиков

я использую российскую программу simplight скада в ознакомительной/обрезанной/бесплатной версии 

  на их сайте есть руководство для подключения ардуинки

к ардуине цепляем плату за 50руб rs-485 на пины rx tx и добавляем библиотеку модбас (адрес скорость протокол регистры)

на компьютере делаем микро проектик(адрес скорость протокол регистры) , там можно и скрипты (я вот на паскале) писать

даже всю логику можно на пк убрать, конечно же она будет работать пока пк включен и программа запущена.

скада всё пишет с нужной периодичностью, либо по изменению в установленных пределах температуры/ датчиков вкл/откл

 

я с нуля освоил за пару вечеров, теперь при случае пользуюсь

подключал модбас через usb адаптер485  к смартфону USB-OTG  = tesla scada2 

также нажимаешь на экране смартфона на мнемосхеме кнопочки и обратно меняется их цвет к примеру

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим-мычъ пишет:

Morroc пишет:

Так надо то наверное под виндой, а не в эмуляторе ДОСа ? Ничего общего.

Я имел ввиду не DOS, а напрямую к железу, если через винду нельзя. 10h и на моём компе поддерживается, но только в низком разрешении(CGA/Mono). А на высоком - если есть VESA BIOS Extensions для VGA.(на моём нет, к сожалению)

  Повторю, я сам только начал этим заниматься, могу ошибаться, что всё правильно понял.  Но тема интересная))

Замучаешься "напрямую к железу" - слишком уж оно все разное и каждый год появляется новое.

Собственно, универсально (т.е. под любое железо) можно сделать лишь системными функциями. В сообщении №1 указан метод - как. Хотя, конечно, не обязательно делать скриншот всего экрана, если нужен его небольшой фрагмент.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

andriano пишет:

Замучаешься "напрямую к железу" - слишком уж оно все разное и каждый год появляется новое.

Собственно, универсально (т.е. под любое железо) можно сделать лишь системными функциями. В сообщении №1 указан метод - как. Хотя, конечно, не обязательно делать скриншот всего экрана, если нужен его небольшой фрагмент.

 В методе из #1 не сомневаюсь, но

 уж больно похожа задача ТС на попытку создать помощника в прохождении игры))(см#6)

P.S. Кстати , LPT порт тоже может быть удобен для связи ПК с ардуино

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим-мычъ пишет:

P.S. Кстати , LPT порт тоже может быть удобен для связи ПК с ардуино

Два вопроса:

1. Где в современном ПК взять LPT порт?

2. Чем именно он может быть удобен?

Argus19
Offline
Зарегистрирован: 08.05.2022

Дим-мычъ пишет:

 уж больно похожа задача ТС на попытку создать помощника в прохождении игры))(см#6)

ТС до сих пор не сформулировал задачу. Если ему надо организовать ловушку для игры, то это делается на самом ПК. У Arduino слишком мало памяти, чтобы впихнуть в неё функции, аналогичные GDI, GDI+ и их обёртки WIC и WIA.

 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

andriano пишет:

1. Где в современном ПК взять LPT порт?

2. Чем именно он может быть удобен?

1. У меня есть. ПК правда не очень современный, но мне хватает. (AMD Athlon 64 X2 4200+,DDR2).

Именно из-за LPT и берегу, конденсаторы меняю))

Есть ещё переходники, LPT>USB если что 300-400р

2. Было дело, делал простенькие программаторы, и использовал LPT. Для работы с ним находил много софта,

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

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Argus19 пишет:

ТС до сих пор не сформулировал задачу.

 Конечно, Вы правы. Даже неизвестно, что за ПК и что за ОС. Пару лет назад, заходил мужик, и спрашивал флоппик.

У него станок до сих пор из под  ДОСа работал.

 

Argus19
Offline
Зарегистрирован: 08.05.2022

Дим-мычъ пишет:

 Пару лет назад, заходил мужик, и спрашивал флоппик.

У него станок до сих пор из под  ДОСа работал.

 Ничего удивительного. У самого японская машина работает под DOS. Вынули батарейку и комп сбрендил. Оказалось, что DOS записана в два УФ ПЗУ, а диск D: сделан на статическом ОЗУ. Пока не соображу, как его отформатировать. К счастью, комп нужен для "рюшечек". На работу машины не повлияло. Мышь с разъёмом похожим на DIN-5 нашёл в одном месте.

 Жду окончательной формулировки ТС. Были похожие вопросы. Решались на стареньком VB 6.0.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нуууу...  Если нужен иксперд по MSDOS/DRDOS 3.3 - 7.0, пишы. 

Argus19
Offline
Зарегистрирован: 08.05.2022

DetSimen пишет:

Нуууу...  Если нужен иксперд по MSDOS/DRDOS 3.3 - 7.0, пишы. 

 Напомните как отформатировать диск D:, при условии, что он выполнен на статическом ОЗУ.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Если какая-то DOS записана в ПЗУ, это не MS и не DR DOS, это не ко мне. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим-мычъ пишет:

1. У меня есть. ПК правда не очень современный, но мне хватает. (AMD Athlon 64 X2 4200+,DDR2).

Именно из-за LPT и берегу, конденсаторы меняю))

Ну да, и очень здорово спалить раритет какими=-нибудь экспериментами.

Цитата:

2. Было дело, делал простенькие программаторы, и использовал LPT. Для работы с ним находил много софта,

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

"Отправляй" - это хорошо, что делать, если надо "принимай"?

 

В общем, и с точки зрения сохранности компа, и с точки зрения удобства работы с внешними пинами Ардуина даст 100 очков вперед любому LPT.

Я, помню, тоже устройства на LPT вешал - приходилось тянуть два кабеля: один, собственно, LPT, а другой - USB для питания. Сейчас, когда есть Ардуина, можгно забыть это как страшный сон.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Argus19 пишет:

 Напомните как отформатировать диск D:, при условии, что он выполнен на статическом ОЗУ.

format d: /fs:FAT v:LABEL /q /a:512

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

andriano пишет:

" что делать, если надо "принимай"?

Все программаторы умеют как "шить", так и читать дамп. Вы , наверно имели ввиду изначальный порт принтера?  У меня комп поддерживает , кроме SPP mode ,ещё двунаправленные ECP  и EPP.

P.S. И, даже в SPP mode работают в обе стороны,  если используют последовательное программирование, т.е. CLOK и DATA

Т.е. я не противопоставляю LPT и Arduino, я наоборот, за Ардуино!))

Дим-мычъ пишет:

P.S. Кстати , LPT порт тоже может быть удобен для связи ПК с ардуино