Доброго времени суток уважаемы участники форума. Столкнулся с проблемой следующего плана: есть фоторезистор, который считывает информацию с лазерного луча, когда луч падает – резистор открыт, когда не падает – соответственно закрыт. Собственно вопрос на какие ножки com-порт’a нужно подвязать данное изобретение, чтобы потом в дальнейшем написать программу по считыванию состояния ком порта… Адрес на мануал к железке, страница 8-9 (http://www.sick-rus.ru/files/products/w2.pdf)
К цифровому сигналу, так тем более serial, нельзя подключить. Нужно использовать адаптер, типа такого: http://www.olimex.com/dev/avr-io.html
На LPT может пойдет - только проблема с matching voltage/input resistance, и так же есть возможность сломать LPT порт (или даже материнку) если сигнал не отфильтрован. Но вообще то с фоторезистором можно и без этого AVR адаптера (который можно заказать с www.olimex.com - или самому спаять. схема на сайте - компоненты стандартные - BJTs, resistors, diodes, и т.д.)
Погугли ИК-порт схема Найдётся много интересного. Конкретно по теме - зависит от параметров фоторезистора и условий работы. Для очень стабильного сигнала (постоянное расстояние от передатчика, отсутствие всякой внешней засветки и помех) Можно подобрать подтягивающий резистор так, чтобы порт срабатывал именно на сигнал - вся схема будет состоять из фотоприбора, резистора и блокировочного конденсатора (по желанию). Если необходим приём с движущегося передатчика, а не закреплённого на штативе, схему нужно усложнять. Советую воспользоваться готовым приёмопередатчиком (будут по тому же запросу в поисковике). Также можно погуглить "светотелефон", но у него несколько другой принцип работы, т.к. сигнал аналоговый.
Элементарно Ватсон! Данное ТЗ воспринимаю буквально, т.е.: 1. светодатчик у тебя - дискретного типа(!) 2. нужно максимально просто его считывать, оценивать, мониторить компортом... Приступим. Поступаем таким образом, как когдато использовали компортовую мышь, т.е. запитку будем осуществлять самим же ком портом используя его выходы для организации слаботочного питающего. Известно, что компорт имеет помимо последовательных данных (линий, регистров...) еще и дискретные. Именно они нам и нужны! Берем один дискретный вход, например, один из сигналов статус-модемых "CTS" и паяем его к одному концу фоторезистора, другой его конец припаяем на выход компорта, например "RTS". Для того, чтобы схема была надежной и НЕ срабатывала на всякие импульсные помехи, прилепим еще один постоянный, "подтягивающий" резистор на другой выходной провод "DTR" R = (4..6)xR открытого фотосопр . Получился элементраный резистивный делитель! С преобладающим плечём фоторезистора, если он... если он ОБЛУЧЁН, освещен...! Гуглим методы и софт и пр. как работать с ком портом, скажем в винде. И... - о прелесть! Драйвера не нужны! Все есть в системе, контроллера никакого не надо, программ полно, даже готовых вот есть чудненькая терминалочка http://www.softoman.ru/windows/internet/connection/14933.html (или http://softsearch.ru/programs/123-258-wterm-download.shtml) http://packages.ubuntu.com/ru/source/hardy/wterm Помятуя о том, что ВСЕ выходы/входы компорта ДВУПОЛЯРНЫЕ подадим на выходы DTR и RTS ПРОТИВОПОЛОЖНЫЕ состояния (полярности). Теперь в зависимости от сотояния фоторезистора облучён/темнота средняя точка резистивного делителя, являющегося нашим программно-отслеживаемым входом CTS будет менять свой статус (полярность). Вот и ВСЁ!!! Заработал глоток пивка, однако!
VaStaNi Согласен. Програмно доступно 4 линии на ввод и 3 линии на вывод. А как их использовать это уже дело каждого. Когдато подклучал последов. АЦП (ADS1286P) с опто-развязкой и линиями "дергал", работало. В КПИ спихнули такой девайс. Они там что-то меряли. Установить и опросить состояние линий можно таким макаром. Код (Text): f_SET_TD proc hDlg:DWORD invoke IsDlgButtonChecked,hDlg,ID_SET_TD .if eax==BST_CHECKED invoke SetDlgItemText,hDlg,S_TD,ADDR szPlus12 invoke EscapeCommFunction,hCOM1,SETBREAK .else; eax==BST_UNCHECKED invoke SetDlgItemText,hDlg,S_TD,ADDR szMinus12 invoke EscapeCommFunction,hCOM1,CLRBREAK .endif ret f_SET_TD endp ; ------------------------------------------------------------------------- f_SET_RTS proc hDlg:DWORD invoke IsDlgButtonChecked,hDlg,ID_SET_RTS .if eax==BST_CHECKED invoke SetDlgItemText,hDlg,S_RTS,ADDR szPlus12 invoke EscapeCommFunction,hCOM1,SETRTS .else; eax==BST_UNCHECKED invoke SetDlgItemText,hDlg,S_RTS,ADDR szMinus12 invoke EscapeCommFunction,hCOM1,CLRRTS .endif ret f_SET_RTS endp ; ------------------------------------------------------------------------- f_SET_DTR proc hDlg:DWORD invoke IsDlgButtonChecked,hDlg,ID_SET_DTR .if eax==BST_CHECKED invoke SetDlgItemText,hDlg,S_DTR,ADDR szPlus12 invoke EscapeCommFunction,hCOM1,SETDTR .else; eax==BST_UNCHECKED invoke SetDlgItemText,hDlg,S_DTR,ADDR szMinus12 invoke EscapeCommFunction,hCOM1,CLRDTR .endif ret f_SET_DTR endp ; ------------------------------------------------------------------------- f_WM_TIMER proc hDlg:DWORD LOCAL lpModemStat:DWORD invoke GetCommModemStatus,hCOM1,ADDR lpModemStat mov eax,lpModemStat and eax,MS_CTS_ON .if eax!=0 invoke SetDlgItemText,hDlg,S_CTS,ADDR szPlus12 .else invoke SetDlgItemText,hDlg,S_CTS,ADDR szMinus12 .endif mov eax,lpModemStat and eax,MS_DSR_ON .if eax!=0 invoke SetDlgItemText,hDlg,S_DSR,ADDR szPlus12 .else invoke SetDlgItemText,hDlg,S_DSR,ADDR szMinus12 .endif mov eax,lpModemStat and eax,MS_RING_ON .if eax!=0 invoke SetDlgItemText,hDlg,S_RI,ADDR szPlus12 .else invoke SetDlgItemText,hDlg,S_RI,ADDR szMinus12 .endif mov eax,lpModemStat and eax,MS_RLSD_ON .if eax!=0 invoke SetDlgItemText,hDlg,S_DCD,ADDR szPlus12 .else invoke SetDlgItemText,hDlg,S_DCD,ADDR szMinus12 .endif ret f_WM_TIMER endp
Доброго времени суток. Прочел, подумал… подскажите а где взять схему разводки ком-потра, т.е. на какой ножке что находится. И где взять техническую схему сего изобретения чтобы потом, это изобретение, его спаять…