Название: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 16, 2007, 17:12 Привет всем,
Пишу под линух прогу на QT 4.3.1 Есть монетоприемник, от выдает импульс 50млск 5вольт Мне нужно словить его прогой через ком порт. Куда подсоединить провод +5 и как читать в QT с ком порта ? Название: Re: ComPort+Монетоприемник Отправлено: Kainit от Ноября 16, 2007, 17:22 Цитировать Куда подсоединить провод +5 и как читать в QT с ком порта Не обижайтесь, но если вы задаёте такие вопросы, о том, куда пихать провода, то возможно не стоит калечить себя и com port, а поискать менее опасное занятие.http://www.computerhope.com/help/serial.htm (http://www.computerhope.com/help/serial.htm) По поводу ловли смотрите QSerialSocket и QExtSerialPort, или пишите сами. Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 16, 2007, 17:42 Цитировать По поводу ловли смотрите QSerialSocket и QExtSerialPort, или пишите сами. Спасибо, это поищу.Ранее писал подобную прогу под билдер С++, но там была задачя проще, замыкание контактов.. кнопки. Замыкал по схеме http://hardware.zp.ua/docs/com9.html Отпишусь как разберусь Название: Re: ComPort+Монетоприемник Отправлено: Kainit от Ноября 16, 2007, 17:48 Вы меня напугали первывм постом...
http://hardware.zp.ua/docs/com9.html (http://hardware.zp.ua/docs/com9.html) http://www.computerhope.com/help/serial.htm (http://www.computerhope.com/help/serial.htm) это одно и то же, с той поры ничего не изменилось слава богу. А в Builder-е действительно немного попроще, поскольку там совершенно стандартный компонент присутствует для работы с COM-ом. Однако, скажу честно, под Linux c Qt сам не пробовал, но на то он (QT) и мультиплатформенный, чтобы QSerialSocket работал... Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 16, 2007, 23:35 QExtSerialPort отлично (в некоторых случаях почти отлично) работает с ком портом.
А какой там ваще интерфейс железяки? Если отличен от RS-232 то нужно согласовать. Для преобразования интерфейса мы использовали интерфейсные микросхемы фирмы Maxim http://www.gaw.ru/html.cgi/txt/ic/Maxim/interfaces/rs232/start.htm Советую погулять по этому сайту возможно вы найдете ответ насчёт электроники. Загляните в раздел "Статьи" Название: Re: ComPort+Монетоприемник Отправлено: alex12 от Ноября 17, 2007, 00:19 Я при работе с COM портом использую платформо-зависимый код. Под винду и под линукс получились исходники странички на две чистого кода (протокол MODBUS RTU).
Чтобы точно разобраться с железом и софтом нужно точное описание протокола. А так ничего сложного в COM порту нету. Напиши подробности про монетоприемник. А то непонятно что за импульс и сколько денег он принял? (Кстати, 50 млск -- это 50 мс т.е. 0,05 с?) Цитировать Есть монетоприемник, от выдает импульс 50млск 5вольт Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 18, 2007, 01:35 монетоприемник HI-07CS, помогите разобратся что нужно к нему,
чтобы его комп воспринимал импульс вроде 50 мс.. 5 вольт, http://www.vegasltd.ru/index.phtml?monety Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 18, 2007, 02:45 монетоприемник HI-07CS, помогите разобратся что нужно к нему, чтобы его комп воспринимал импульс вроде 50 мс.. 5 вольт, http://www.vegasltd.ru/index.phtml?monety Какой интерфейс у этой железяки? Найди на него описание. Тогда можно будет о чем-то говорить Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 18, 2007, 02:48 Инфа в инете есть, просто наверное вам лень искать...
http://slots.narod.ru/Contr/PcCom/PcCom.html Это первая ссылка которая попала во внимание Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 18, 2007, 17:03 Какой интерфейс у этой железяки? Найди на него описание. Тогда можно будет о чем-то говорить Где можно найти описание ? инструкция есть на китайском.. Инфа в инете есть, просто наверное вам лень искать... http://slots.narod.ru/Contr/PcCom/PcCom.html Это первая ссылка которая попала во внимание Спасибо, это может подойти. Но хотелось бы попробывать найти решение без покупки етого дивайса. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 18, 2007, 21:42 Но хотелось бы попробывать найти решение без покупки етого дивайса. имхо, гугл в помощь :) Название: Re: ComPort+Монетоприемник Отправлено: izoomer от Ноября 20, 2007, 19:33 монетоприемник HI-07CS, помогите разобратся что нужно к нему, чтобы его комп воспринимал импульс вроде 50 мс.. 5 вольт, http://www.vegasltd.ru/index.phtml?monety ну ты даешь ... у этого монетоприемника импульсный интерфейс , то есть на каждую монету он выдает 5 вольт длительностью 50 мс (задается переключателем внизу оного 50-250)... каким боком ты его хочешь на COM повесить ... делай девайсик на простейшем контроллере принимаеш импульс и шлеш в порт .... или покупаеш готовый USB контроллер для таких дел и программку , напрмер вот тут - http://www.i-zum.com Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 20, 2007, 20:58 Вешай на lpt ,если он есть в компе на что-нибудь вроде /ERROR или /BUSY и вперед с песнями .... но доступ к ногам порта в каждой системе свой ..... Хотя наверное можно с RTS/DTS и DTR/DSR поиграться но там +-12V надо - может непахать :( А вообще - сунь микрик на ногу лпт и поиграйся с поимкой сигнала ..... Хотя опять-таки IMHO гимору мнооого будет ..... Я бы в лоб на логике rs-триггер собрал (set от монетоприемника,reset по чтению порта) для захвата данных или какую-нибудь однокристалку мееееелкую для подсчета имульсов и выдачи их в паралельном коде на комп .... Или из вариантов сесть на IRQ соответствующий и читать регистр статуса порта - но это уже модуль/драйвер нужен ....
Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 20, 2007, 21:27 Может есть у кого кусок исходника чтения COM и LPT порта на QT ?
ато ищу и не могу разобратся.. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 20, 2007, 22:57 Может есть у кого кусок исходника чтения COM и LPT порта на QT ? ато ищу и не могу разобратся.. Код: QextSerialPort sp("COM1"); ЗЫ: В инете инфы дофига! Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 21, 2007, 00:16 Гы ;) А вообще-то даже интересно стало как товарисч собираеться читать единичный сигнал из кома ;) Если там минимум 5 бит надо кажись ;) 2 Аффтор - ходи сюды http://www.aggsoft.com/rs232-pinout-cable/pinout-and-signal.htm (http://www.aggsoft.com/rs232-pinout-cable/pinout-and-signal.htm) и обрати внимание что RS233 работает на биполярнике +/-12 V .... Ы ?
Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 21, 2007, 01:01 2 IGHOR:
Советую сходить всёже по этой ссылке http://slots.narod.ru/Contr/PcCom/PcCom.html и поговорить с автором девайса. Узнать цены на него. Мастерить дивайс для согласования монетоприёмника и компа придётся. Просто так ты не поцепишь монетоприемник к компу. Даже если ты и наёдешь схему подключения - всеравно будут завтраты на элементную базу и затраты на изготовление. А так как у вас нет определённых знаний в электронике, самый простой путь, имхо, купить согласующий девайс. Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 21, 2007, 02:10 Может есть у кого кусок исходника чтения COM и LPT порта на QT ? ато ищу и не могу разобратся.. Код: QextSerialPort sp("COM1"); ЗЫ: В инете инфы дофига! А где клас QextSerialPort достать ? и как его добавить в QT ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 21, 2007, 02:44 А где клас QextSerialPort достать ? и как его добавить в QT ? http://qextserialport.sourceforge.net/ Бери версию QextSerialPort 1.1. Это под Qt 4 Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 21, 2007, 04:26 оно QextSerialPort точно под линух катит ?
у меня ошибки в файлах win*.h... Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 21, 2007, 08:43 2 pastor - забей ты на эту тему - автор в упор не сышит то, что ему не нравиться ... Если ему хочеться быть китайским комсомольцем - то флаг ему в руки .... А убеждать человека что надо хотя-бы знать то,с чем работаешь (хотя-бы в пределах букваря) - увольте.Особенно если человек и так "все" знает :( :-\
Повторяю последний раз RS - Ком работает на биполярных 12 вольтовых сигналах - 5 вольт в теории могут восприниматься ,но это зависит от чипа( и по уставу (стандарту) не положено) 2) Из кома единичные сигналы можно читать только с управляющих линий 3) при освученых 5 вольтах логичнее использовать LPT 4) И даже если в лоб сделать схему стыковки девайса с комом\лпт то висеть в жестком цикле опроса чтоб поймать 50 мсек импульс - это ой DIXI . Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 21, 2007, 10:55 оно QextSerialPort точно под линух катит ? у меня ошибки в файлах win*.h... Цитировать QextSerialPort is a cross-platform serial port class. This class encapsulates a serial port on both POSIX and Windows systems. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 21, 2007, 10:56 2 pastor - забей ты на эту тему - автор в упор не сышит то, что ему не нравиться ... Если ему хочеться быть китайским комсомольцем - то флаг ему в руки .... А убеждать человека что надо хотя-бы знать то,с чем работаешь (хотя-бы в пределах букваря) - увольте.Особенно если человек и так "все" знает :( :-\ Да, видно прийдеться, ибо автор не прилагает ни малейшего усилия чтобы решить СВОЮ задачу.... Название: Re: ComPort+Монетоприемник Отправлено: izoomer от Ноября 21, 2007, 11:15 2 IGHOR: Советую сходить всёже по этой ссылке http://slots.narod.ru/Contr/PcCom/PcCom.html и поговорить с автором девайса. Узнать цены на него. Мастерить дивайс для согласования монетоприёмника и компа придётся. Просто так ты не поцепишь монетоприемник к компу. Даже если ты и наёдешь схему подключения - всеравно будут завтраты на элементную базу и затраты на изготовление. А так как у вас нет определённых знаний в электронике, самый простой путь, имхо, купить согласующий девайс. а если нету COM порта то можно USB девайс присобачить - http://www.i-zum.com ... Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 21, 2007, 15:51 LPT сейчас найти довольно трудно, особенно в панельных рабочих станциях. Но для экспериментов сгодится :).
Если будешь подключать девайс самостоятельно - нужно соединить медным проводом корпус компа с корпусом устройства, иначе есть шанс сжечь com-порт. Насчёт пригодности порта - а почему нет, только нужно действительно подключать сигнал к служебным ногам(типа CTS, наверное). Имхо никакие классы работы с портом не нужны, ибо данное использование порта - нестандартное, а для com-порта есть прекрасная статья http://sizov.boom.ru/comport1.htm Понадобится всего два вызова - inb и outb, благо в Линукс с ними проблем нет. Если делать этим способом - и геморроя меньше, и легко переходить с LPT на COM и обратно. Думаю, аналогичная статья есть для LPT. Ну и самое главное - желание работать :), а если кипит голова - кофе. Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 21, 2007, 16:28 Понадобится всего два вызова - inb и outb, благо в Линукс с ними проблем нет. Это интересно.. но я в асемблере не очень.. как это использовать ? можно, кусок кода в пример?QextSerialPort: после добавления h в проект при компиляции ошибка что не найдена windows.h так мне с винды достать ее ? Название: Re: ComPort+Монетоприемник Отправлено: Kainit от Ноября 21, 2007, 17:22 2IGHOR
Я уже первым постом говорил что "возможно не стоит калечить себя и com port, а поискать менее опасное занятие." Если вам хватило таланта скачать qextserialport-1.2win-alpha.zip и вы пытаетесь заставить это работать под UNIX, то Аллах вам в помощь. Если вы всё-таки скачали qextserialport-1.1.tar.gz то могли: 1. заметить в этом архивчике файлы типа posix_qextserialport.h и win_qextserialport.h. Так вот, вас, скорее всего, под UNIX будет интересовать posix_qextserialport.h, который прекрасно собирается и никакого windows.h не требует. (А вообще, чёрт вас дери, если у вас проблемы на этой стадии то отказывайтесь от затеи что-то сделать, ибо дальше количество проблем будет расти. qextserialport пользовались все миллион раз и подо всеми платформами, всё там работает!) 2. Возможно (но маловероятно), что чтение документации к qextserialport немного прояснит для вас ситуацию (qextserialport-1.1\qextserialport\html). Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 21, 2007, 17:28 Это интересно.. но я в асемблере не очень.. как это использовать ? можно, кусок кода в пример? Ассемблер тут ни при чём - я же сказал, два системных вызова: inb и outb. Вот здесь есть пример подачи на порт прямоулольных импульсов: http://rt.wiki.kernel.org/index.php/Squarewave-example Код включает переключение планировщика и приоритеты - это нужно выкинуть. Соответственно, при помощи оставшегося кода и данной мной ссылки несложно сочинить что-нибудь своё с участием COM или LPT за недельку неупорного труда. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 21, 2007, 19:07 (А вообще, чёрт вас дери, если у вас проблемы на этой стадии то отказывайтесь от затеи что-то сделать, ибо дальше количество проблем будет расти. qextserialport пользовались все миллион раз и подо всеми платформами, всё там работает!) +1 Лучше и не скажешь Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 21, 2007, 22:12 Я новенький в Qt.
С qextserialport пробую разобратся.. А не выходит наверное через то что время поджимает.. И все в спешку делаю.. Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 22, 2007, 21:33 c qextserialport разобрался.. пришлось немного отредактировать гшки. Вроде все работает.
Как его посадить на ивент приема с компорта ? ато в цыкле неудобно юзать Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 24, 2007, 03:35 Не могу разобратся в линухе с ком портами ???
Как имена пишутся и как найти тот к которому подсоединяюсь ? Спасибо Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 24, 2007, 12:26 Не могу разобратся в линухе с ком портами ??? Как имена пишутся и как найти тот к которому подсоединяюсь ? Спасибо /dev/ttyS0, /dev/ttyS1 ЗЫ: А ваще не линитень искать ответы на свои вопросы самостоятельно! 1) В доке по либе ответ на этот вопрос уже есть!!!!! 2) Накраёняк можно было спросить у гугла Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 24, 2007, 14:04 2 pastor А мне вот все интересно - чего афффтор с комом хочет сделать ? Научиться работать или subj ? Если первое - одобрям ;) Если второе - то сначала RTFM хотя он этого не любит IMHO затея не решабельная (нормально) без внешних железяк .....
Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 24, 2007, 23:00 2 pastor А мне вот все интересно - чего афффтор с комом хочет сделать ? Научиться работать или subj ? Если первое - одобрям ;) Если второе - то сначала RTFM хотя он этого не любит IMHO затея не решабельная (нормально) без внешних железяк ..... )))) Полностью согласен! :) Если первое - то хорошо. Но для начала нужно хотябы попытаться самому найти ответ на вопрос. Если второе, сначало нужно определиться как железяку подключить (одним словом выбрать интерфейс подключение и соорудить железяку), а потом уже думать о программировании порта. Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 25, 2007, 07:41 не открываются порты
/dev/ttyS0, /dev/ttyS1 а также /dev/tty0, /dev/tty1 и все с числами до 5 перепробовал.. как определить какие существуют ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 25, 2007, 13:08 не открываются порты /dev/ttyS0, /dev/ttyS1 а также /dev/tty0, /dev/tty1 и все с числами до 5 перепробовал.. как определить какие существуют ? Зайди в /dev и посмотри Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 25, 2007, 14:01 Там еще не всем можно с портами работать ;)(в некотрых дистрах) соответствнно добавить логин под которым входишь в нужную группу ;)
Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 25, 2007, 14:34 Да, и ещё могут быть ньюансы с правами доступа. Обратите на них внимание
Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 25, 2007, 18:11 Запускаю прогу изпод ROOT.
Залез в /dev/ там много файлов tty0, tty1, .. , tty63 и ttyS0, ttyS1, .. ,ttyS9 Использую код программы6 Код: QextSerialPort sp("/dev/tty0"); Что не так делаю ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 25, 2007, 18:29 1) Попробуй без доп. параметров
sp.setBaudRate(BAUD4800); sp.setDataBits(DATA_8); sp.setFlowControl(FLOW_OFF); sp.setStopBits(STOP_1); sp.setParity(PAR_NONE); 2) Подебажь либу. Глянь почему функция возвращает false Название: Re: ComPort+Монетоприемник Отправлено: Swappp от Ноября 25, 2007, 19:38 /dev/tty0 это не ком порт, это терминал...
Поставь /dev/ttyS0 это com1, /dev/ttyS1 - com2 Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 25, 2007, 19:48 поставь правильный ком
посмотри на права доступа( из под рута обычно пох) натрави strace на свою проги и глянь чего оно скажет Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 25, 2007, 21:03 2 IGHOR: Swappp, Вячеслав правы. Я совсем не глянул что ты пытаешься открыть. Я недумал что все так плохо )))
/dev/tty?? - (0 - 63) - это консоль Тебе нужны ttyS?? - (от 0 и более) ЗЫ: Я же приводил как именуються ком порты. ЗЗЫ: Что у вас за дистрибутив? Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 25, 2007, 22:44 Linux SUSE 10.3
QextSerialPort sp("ttyS0"); char buf[100]; if(sp.open()) { sp.read(buf,100); sp.close(); Mesage="Opened"; } else { Message="CanNotOpen"; } У меня постоянно Message=="CanNotOpen" Запускаюсь из рута может чтото в линуксе надо настроить ? Что делать ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 25, 2007, 23:58 /dev/ttyS0
или /dev/ttyS1 Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 00:57 МАТЬ!!! не ttyS0 а /dev/ttyS0 !!!!
или запускать из /dev , но это для мазохистоффф Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 01:19 /dev/ttyS0
или /dev/ttyS1 результат тот самый.. Message=="CanNotOpen" все компилится, не пойму в чем дело Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 01:39 Я выложыл исходник http://www.ighor.info/downloadua/COMTest.tar.bz2 (http://www.ighor.info/downloadua/COMTest.tar.bz2)
компильните кто может компилилось на Linux, QT 4.3.2 нужно просто компорт открыть.. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 01:54 Ты дебажил либу или нет?? По коду все можно понять что происходит!
Вобщем пробуй передать в open() один из флагов QIODevice::OpenMode: QIODevice::ReadOnly QIODevice::WriteOnly QIODevice::ReadWrite По умолчанию передаеться QIODevice::NotOpen. Для интереса мож глянуть, что выполняеться по этой ветке Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 04:45 open(QIODevice::ReadOnly) заработало!! 8)
при обработке функции read(buf,100) думаэт 3 секунды. мне нужно словить 50 милисекунд.. как это посадить на постоянное "висение" на ком порте ? надо чтобы когда есть изменения на ком порте обрабатывалась моя функция , как это сделать ? Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 09:16 Щаз буду грязно ругаться .... IGHOR ты русский язык понимаешь ? Ком не позволит тебе считать _дискретный_ сигнал через вход данных
1) ему надо минимум 7 _последовательных_ бит старт-5 бит данных-стоп при раскладке 5n1 2) ком работает на биполярке +-12 вольт по стандарту (+-6 минимум который я видел) Или делай конвертор для управляющил линий кома DTR\DSR\RTS\CTS и читай от-туда инфу ( висеть в цикле с частотой опроса 100мсек - ВАХ) или думай ;) Второе вернее и проще .... Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 11:20 Щаз буду грязно ругаться .... IGHOR ты русский язык понимаешь ? Ком не позволит тебе считать _дискретный_ сигнал через вход данных 1) ему надо минимум 7 _последовательных_ бит старт-5 бит данных-стоп при раскладке 5n1 2) ком работает на биполярке +-12 вольт по стандарту (+-6 минимум который я видел) Или делай конвертор для управляющил линий кома DTR\DSR\RTS\CTS и читай от-туда инфу ( висеть в цикле с частотой опроса 100мсек - ВАХ) или думай ;) Второе вернее и проще .... Щас я буду грязно ругатся ... Вячеслав, видишь последний вопрос ? Там русским языком написано "как это посадить на постоянное "висение" на ком порте ?" мне нужно это, а дальше я буду сам решать как его использовать. Прошу помочь просто прочитать нормально порт и посадить его на ивент для любих изменений на порте. Тестировал на винде, при замыкание контактов компорта есть изменение и его можно отследить и на ивент посадить.. Но есть проблема, нужно это на линуксе. Потому помогите если можете, а если нет, зачем лишнее писать ?... Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 12:32 НУ так объясни - накуя тебе rs интерфейс ? Сядь на служебную линию и читай ее скока влезет ....
Ты-же не будешь в жизни использовать GSM телефон в DECT'овской сети мотивируя это тем что он что-то ловит ? И это из той-же серии - половина микросхем просто бред выдаст, а вторая - вообще работать откажеться - им нужно +-6 вольт хотя-бы .... Повесься на служебные ноги _предназначенные_ для дискретных сигналов и лови их спокойно .... Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 26, 2007, 12:47 open(QIODevice::ReadOnly) заработало!! 8) Товарищ IGHOR, если Вы сформулируете свой вопрос так, чтобы он был понятен окружающим, окружающим будет легче Вас понять.при обработке функции read(buf,100) думаэт 3 секунды. мне нужно словить 50 милисекунд.. как это посадить на постоянное "висение" на ком порте ? надо чтобы когда есть изменения на ком порте обрабатывалась моя функция , как это сделать ? Чтение из последовательного порта и ожидание изменения его статуса - совсем разные вещи. Чтение одного байта из пяти бит(это минимум для байта) - это приём стартового бита, пяти информационных и стопового. Каждый бит имеет определённую длину, уж точно не 50мс - Вам же нужно не это. Вам нужно узнать, что на такой-то ноге сейчас 1 или 0. С информационной ноги Вы это не снимите - только со служебной, причём DSR или CTS (поправьте если не прав, но на DTR и RTS можно только писать). Даёт ли эту информацию скачанный Вами класс - не знаю, т.к. не пользовался, но СИЛЬНО сомневаюсь. В любом случае всё это езда по асфальту на лыжах. Я думаю, что с помощью Qt-класса последовательного порта Вы никогда не измерите длительность импульса, а в лучшем случае узнаете, что он был. Раннее я предлагал Вам другой способ работы с портом, между прочим, очень простой и как нельзя подходящий для Вашего применения. Этим способом можно с какой-то точностью узнать длительность импульса на служебной ноге. Если точность не устроит - пишите модуль ядра. IMHO Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 13:20 2 der ты лучше подумай - ком жрет +-12 вольт по спецификации (+-6) по жизни - 0 для него _неопределенное_ состояние ;) И что он будет читать с него ? IMHO проще /dev/rand на чтение подцепить - результат будет один ;)
Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 13:44 2 IGHOR: Ты узнавал про тот девайс, который позволяет подкючить монетоприемник к компу? (я ссылку кидал де-то выше)
Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 26, 2007, 14:08 2 Вячеслав
Есть такая хрень http://www.owen.ru/device/56848065 - я такой пользуюсь, только без "-М". Прекрасно работает. Думаю, АС3 можно приобрести за 1500-1700р. Это намного дешевле, чем делать самому. Если дойдёт до заказа - вполне можно приобрести. Кроме того, некоторые современные панельные рабочие станции имеют com-порт, который умеет работать и как RS232, и как RS485. P.S.: А вообще, если бы IGHOR нам сообщил польше информации о своём проекте, нам было бы легче о нём рассуждать :) Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 14:14 2der На железку щаз гляну - ради интереса
По поводу плат - в курсах ( в столе штук 5 валяеться ;) ) Но 485 ведь тож последовательный ( или там можно дискреты ловить ? ) Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 14:43 2 IGHOR: Можешь ознакомиться со стандартом RS232. Там также описана одна из микросхем преобразования интерфейса
http://www.gaw.ru/html.cgi/txt/interface/rs232/start.htm Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 14:45 2der На железку щаз гляну - ради интереса По поводу плат - в курсах ( в столе штук 5 валяеться ;) ) Но 485 ведь тож последовательный ( или там можно дискреты ловить ? ) Вот есть описание rs485: http://www.gaw.ru/html.cgi/txt/interface/rs485/start.htm Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 14:55 2 pastor спасиб - гугл + опера рулят ;) Это была вторая ссылка ;) Я просто не в теме - 485 может ловить одиночные посылки или нет ;)
Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 26, 2007, 15:03 2 Вячеслав
Вообще, может случиться, что АС3-М такой умный, что пропускает только последовательные данные, а подобные импульсы нет... Но тогда можно взять прибор без автоматического переключения направления. Я просто привёл пример девайса, преобразующего 0..5В в -12..+12В или сколько там. Естественно TxD Овна нужно подключать к служебной ноге порта, а не к RxD. Просто проблема преобразования напряжения является частью проблемы преобразования RS485-RS232. Вообще проблема стандартная, и решений масса, например, микрухи-преобразователи напряжения. P.S.: 2 pastor спасиб - гугл + опера рулят ;) Это была вторая ссылка ;) Я просто не в теме - 485 может ловить одиночные посылки или нет ;) Сходил, но просветление не наступило... ?я чото п Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 15:28 2 der _лично мне_ проще взять мегу 8 с максиной с сделать нормальный переход с дискретки на rs/usb , и не изобретать многоразовые грабли ;)
2 all Интересно тема в итоге лидером по постам будет ? :o :o :o ;) Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 19:02 На винде из Builder C++ ловлю ивент компорта,
он реагирует на замыкание двух ножек.. Можна прикрутить реле, что при 5 вольт оно срабатывает и замыкает те ножки... Тогда все будет работать отлично. Но как читать ивентом компорт на Линуксе ? Простое читание занимает 3 секунды в проге.. и она зависает в это время. Мне нужно по возможности самому разобратся с монетоприемником, потому что таких апаратов будет штук 40.. а каждая платаа стоит 50$ Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 19:04 Это интересно.. но я в асемблере не очень.. как это использовать ? можно, кусок кода в пример? Ассемблер тут ни при чём - я же сказал, два системных вызова: inb и outb. Вот здесь есть пример подачи на порт прямоулольных импульсов: http://rt.wiki.kernel.org/index.php/Squarewave-example Код включает переключение планировщика и приоритеты - это нужно выкинуть. Соответственно, при помощи оставшегося кода и данной мной ссылки несложно сочинить что-нибудь своё с участием COM или LPT за недельку неупорного труда. Как в сдесь разобратся ? Обясните пожалуйста как оно работает. Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 19:27 На винде из Builder C++ ловлю ивент компорта, он реагирует на замыкание двух ножек.. Можна прикрутить реле, что при 5 вольт оно срабатывает и замыкает те ножки... Тогда все будет работать отлично. Но как читать ивентом компорт на Линуксе ? В данной реализации либы имхо невозможно отследить определённые эвенты. В винде это можно сделать, переделав немного либу и отслеживать следующие события, т.е. сделав либу для работы с портом в асинхронном режиме: EV_BREAK Состояние разрыва приемной линии EV_CTS Изменение состояния линии CTS EV_DSR Изменение состояния линии DSR EV_ERR Ошибка обрамления, перебега или четности EV_RING Входящий звонок на модем (сигнал на линии RI порта) EV_RLSD Изменение состояния линии RLSD (DCD) EV_RXCHAR Символ принят и помещен в приемный буфер EV_RXFLAG Принят символ заданый полем EvtChar структуры DCB использованой для настройки режимов работы порта EV_TXEMPTY Из буфера передачи передан последний символ Простое читание занимает 3 секунды в проге.. и она зависает в это время. Проблему с зависанием можно решить путяём добавления потока, в котором будет опрашивться порт Мне нужно по возможности самому разобратся с монетоприемником, потому что таких апаратов будет штук 40.. а каждая платаа стоит 50$ Можно купить этот девайс. С ним будет идти принципиалка. По принципиалке самому соорудить сколько нужно девайсов Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 19:51 Вот есть статейка, где рассмотрена работа с последовательными портами в линукс
http://linuxportal.ru/entry.php/2171_0_3_0_C/ Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Ноября 26, 2007, 21:21 На винде из Builder C++ ловлю ивент компорта, Тогда-уж проще максину присобачить(чего-нибудь типа max232 ) и релюх ненадо ;)он реагирует на замыкание двух ножек.. Можна прикрутить реле, что при 5 вольт оно срабатывает и замыкает те ножки... Тогда все будет работать отлично. Но как читать ивентом компорт на Линуксе ? Простое читание занимает 3 секунды в проге.. и она зависает в это время. Мне нужно по возможности самому разобратся с монетоприемником, потому что таких апаратов будет штук 40.. а каждая платаа стоит 50$ 2 IGHOR , кинь в личку более подробно чего изобретаешь - постораюсь помочь .... Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 21:37 Вот есть статейка, где рассмотрена работа с последовательными портами в линукс http://linuxportal.ru/entry.php/2171_0_3_0_C/ Хорошая стаття. нужно разобратся.. На винде из Builder C++ ловлю ивент компорта, Тогда-уж проще максину присобачить(чего-нибудь типа max232 ) и релюх ненадо ;)он реагирует на замыкание двух ножек.. Можна прикрутить реле, что при 5 вольт оно срабатывает и замыкает те ножки... Тогда все будет работать отлично. Но как читать ивентом компорт на Линуксе ? Простое читание занимает 3 секунды в проге.. и она зависает в это время. Мне нужно по возможности самому разобратся с монетоприемником, потому что таких апаратов будет штук 40.. а каждая платаа стоит 50$ 2 IGHOR , кинь в личку более подробно чего изобретаешь - постораюсь помочь .... что такое max232 ? и с чем его готовят ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 21:41 что такое max232 ? и с чем его готовят ? Прям как на ЛОРе повелось по ссылка не ходить :) Цитата: pastor 2 IGHOR: Можешь ознакомиться со стандартом RS232. Там также описана одна из микросхем преобразования интерфейса http://www.gaw.ru/html.cgi/txt/interface/rs232/start.htm Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 26, 2007, 22:36 Но всеравно не понимаю, max232 это просто усилитель сигнала COM ?
как его использовать в моем случяе ? сколько оно стоит ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 26, 2007, 23:19 Но всеравно не понимаю, max232 это просто усилитель сигнала COM ? как его использовать в моем случяе ? сколько оно стоит ? max232 это микруха, которая прежназначена для создания интерфейса RS-232. Она являеться чуть ли не мировым стандартом 2 IGHOR: Скажи честно, разве так тяжело глянуть в гугле? Скачай спецификацию на неё, почитай. Есть много железячный форумов. На этой микросхеме за 20 лет её существования собраны многие девайсы, принципиалки которых можно найти в инете. Должно буть что-то похожее. Это форум по Qt а не по электронике Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 27, 2007, 01:22 ОК, с темы не сбиваемся,
в итоге мне всеравно прийдется висеть на компорте. в примере http://linuxportal.ru/entry.php/2171_0_3_0_C/ есть такая строчка для асинхронного читания компорта open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); чтобы мне не переписывать весь код компорта можно ли както чтото подобное использовать в qextserialport ? в параметре его open() чтото задать ? O_RDWR | O_NOCTTY | O_NONBLOCK там не катит.. Простое читание занимает 3 секунды в проге.. и она зависает в это время. Проблему с зависанием можно решить путяём добавления потока, в котором будет опрашивться порт а можно по подробнее ? как поток добавить ? Название: Re: ComPort+Монетоприемник Отправлено: pastor от Ноября 27, 2007, 02:02 чтобы мне не переписывать весь код компорта можно ли както чтото подобное использовать в qextserialport ? в параметре его open() чтото задать ? O_RDWR | O_NOCTTY | O_NONBLOCK там не катит.. Нет, так не пойдёт. В posix_qextserialport работа с портом идёт через QFile а можно по подробнее ? как поток добавить ? Смотри QThread и экзамплы связанные с QThread Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 27, 2007, 03:14 Это по ходу должен быть рабочий исходник на ивент:
Код: #include но сдесь нет ни одного указаного #include ... что там должно быть ? Название: Re: ComPort+Монетоприемник Отправлено: der от Ноября 27, 2007, 06:33 Это интересно.. но я в асемблере не очень.. как это использовать ? можно, кусок кода в пример? Ассемблер тут ни при чём - я же сказал, два системных вызова: inb и outb. Вот здесь есть пример подачи на порт прямоулольных импульсов: http://rt.wiki.kernel.org/index.php/Squarewave-example Код включает переключение планировщика и приоритеты - это нужно выкинуть. Соответственно, при помощи оставшегося кода и данной мной ссылки несложно сочинить что-нибудь своё с участием COM или LPT за недельку неупорного труда. Как в сдесь разобратся ? Обясните пожалуйста как оно работает. Прочитайте статью, на которую я давал ссылку (http://sizov.boom.ru/comport1.htm) ранее. Там содержится описание портов(не путать с com-портом), через которые можно работать с COM/LPT. Если работать так, не нужно ничего открывать или настраивать. Вам нужно только отдельным потоком в цикле читать(вызов inb) содержимое порта 3FEh, в котором написано, что, допустим, линия DSR изменила состояние и сейчас высокая. Этим Ваша работа с COM и ограничивается, т.е. одной строчкой + строчками анализа. Если Ваш цикл имеет достаточно хорошую частоту, то Вы сможете опрашивать порт, скажем, раз в 15 мсек и делать выводы, что длительность импульса была не менее 30 мсек. Код: unsigned char state; Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Ноября 27, 2007, 18:51 der, Большое спасибо, думаю этот код будет реально работать.
У меня в обрез мало времени, потому моя задачя временно решилась образом припаивания 5вольтового светодиода к монетоприемнику, и он при срабатывание замыкает правую кнопку мышы. а ее ивент уже обработать просто. Всем БОЛЬШОЕ Спасибо за обговаривание темы. Название: Re: ComPort+Монетоприемник Отправлено: Racheengel от Декабря 01, 2007, 14:51 от тут еще
http://www.ii-system.com/soft/devzone/devzone.htm есть компонент ну и про ком-девайсы кое-что есть Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Декабря 01, 2007, 21:20 от тут еще http://www.ii-system.com/soft/devzone/devzone.htm есть компонент ну и про ком-девайсы кое-что есть Спасибо, это пригодится Название: Re: ComPort+Монетоприемник Отправлено: Yesbody от Марта 06, 2008, 12:02 Это по ходу должен быть рабочий исходник на ивент: Код: #include но сдесь нет ни одного указаного #include ... что там должно быть ? Все файлы в #include указаны в < и > - воспринимаются браузером как теги, поэтому имена файлов и не видно - надо смотреть исходный текст страницы, они там есть! И не за чем их искать по просторам инета. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #define BAUDRATE B38400 #define MODEMDEVICE "/dev/ttyS1" #define _POSIX_SOURCE 1 /* POSIX-совместимый код */ #define FALSE 0 #define TRUE 1 Название: Re: ComPort+Монетоприемник Отправлено: C.H. от Марта 07, 2008, 17:16 Монетоприемник на клавишу мышки - эт опросто суппер! Достено БАША :)
а по теме добавлю от себя: имел возможнотсь просношаться с таким девайсом. И поймать сигнал ВКЛ, еще не значит что это кинули монету. т.к. это может быть помеха. воизбежании помех девайс выдает сигнал о монете и держит его "некоторое" время. в дкументации и на самом девайсе написанно какое время он его держит, даже есть переключатели. так вот вам надо поймать сигнал и посчитаь какое время он был установлен, если совпадает с установленным, то это МОНЕТА, иначе - ПОМЕХА Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Марта 08, 2008, 20:23 Компорт использовать.. лажово. Мышка щелкает на ура без глюков.
Но скоро прийдется конектить купюроприемник в компорт. Кто пробовал ? Как юзать ? Название: Re: ComPort+Монетоприемник Отправлено: IGHOR от Марта 08, 2008, 20:31 Yesbody, спасибо, я и не заметил..
Название: Re: ComPort+Монетоприемник Отправлено: Вячеслав от Марта 08, 2008, 20:37 Гы ;) Я-же тебе говорил - осваивай однокристалки - такие задачи решаються как два байта пререслать ;)
|