Baixe o app para aproveitar ainda mais
Prévia do material em texto
���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� Comunicação serial com Arduino utilizando Qt5 Console Application ƉŽƌ��ůĞŝƚŽŶ��ƵĞŶŽ�Ğŵ�ƋƵŝŶƚĂͲĨĞŝƌĂ͕�ϬϮ�ĚĞ�Ăďƌŝů�ĚĞ�ϮϬϭϱ͘ Introdução � &ŝnj�Ƶŵ�ƉŽƐƚ�ŚĄ�Ƶŵ�ƚĞŵƉŽ�ƐŽďƌĞ�ĐŽŵŽ�ƌĞĂůŝnjĂƌ�ĐŽŵƵŶŝĐĂĕĆŽ�ƐĞƌŝĂů�ƵƚŝůŝnjĂŶĚŽ�Ž�WLJƚŚŽŶ�;WLJƚŚŽŶ�н��ƌĚƵŝŶŽ�Ͳ �ŽŵƵŶŝĐĂĕĆŽ�^ĞƌŝĂů�ϭͿ�Ğ�ƉĂƌĂ�ĨĂĐŝůŝƚĂƌ�ƵƚŝůŝnjĞŝ�Ƶŵ��ƌĚƵŝŶŽ�hEK͘��ĞƐƚĂ�ǀĞnj�ǀĂŵŽƐ�ĐŽŶŚĞĐĞƌ�Ž�Yƚ�Ğ�ǀĞƌŝĨŝĐĂƌ�Ž ƋƵĞ�ƉƌĞĐŝƐĂŵŽƐ�Ğ�ĂƐ�ŽƉĕƁĞƐ�ĚŝƐƉŽŶşǀĞŝƐ�ƉĂƌĂ�ĐŽŵƵŶŝĐĂƌŵŽƐ͘�WŽĚĞŵŽƐ� ĨĂnjĞƌ�ƵŵĂ�ĂƉůŝĐĂĕĆŽ� ƐŝŵƉůĞƐ͕�ƉĂƌĂ ŝŶƚĞƌĂĕĆŽ�ǀŝĂ�ĐŽŶƐŽůĞ�ĂƉĞŶĂƐ͕�ŽƵ�ĐŽŵ�ŝŶƚĞƌĨĂĐĞ�ŐƌĄĨŝĐĂ͘ � WĂƌĂ�ĨĂŵŝůŝĂƌŝnjĂƌŵŽƐ�ĐŽŵ�Ž�Yƚ͕�ƚĞŵ�Ƶŵ�ƉŽƐƚ�ƋƵĞ�ĞƐĐƌĞǀŝ�ŚĄ�Ƶŵ�ƚĞŵƉŽ�;Yƚϱ�Ͳ��ŽŶŚĞĐĞŶĚŽ�Ƶŵ�ǀĞƌĚĂĚĞŝƌŽ ĐĂŶŝǀĞƚĞͲƐƵŝĕŽ�ϮͿ�Ğ�ĂďŽƌĚĂ�ĐŽŵ�ďĂƐƚĂŶƚĞ�ĚĞƚĂůŚĞƐ�ĞƐƐĂ�ĨĞƌƌĂŵĞŶƚĂ͘�WĂƌĂ�ƋƵĞŵ�ŶƵŶĐĂ�ƚĞǀĞ�ĐŽŶƚĂƚŽ�Ğ�ƋƵĞƌ EMBARCADOS TV OPORTUNIDADES �ĞƐĞŶǀŽůǀĞĚŽƌ�ĚĞ�^ŽĨƚǁĂƌĞ�Ğ�,ĂƌĚǁĂƌĞ�ŶĂ �ŽůŚĂ��ŽŵƵŶŝĐĂĕĆŽ�>d���Ͳ�^ĆŽ�WĂƵůŽ�ͬ�^W WƌŽũĞƚŝƐƚĂƐ�ĚĞ�>ſŐŝĐĂ�WƌŽŐƌĂŵĄǀĞů�Ͳ��ĂƚĂĐŽŵ 1/71 SLE15 - Desenv... � � � � � �HOME SOBRE CONTEÚDO FÓRUM EVENTOS OPORTUNIDADES COMUNIDADE :ƵŶƚĞͲƐĞ�Ă��ŽŵƵŶŝĚĂĚĞ��ŵďĂƌĐĂĚŽƐ͗� ZĞĂůŝnjĂƌ�>ŽŐŝŶ �ŽƵ� ZĞŐŝƐƚƌĂƌͲƐĞ 3HVTXLVDU � ,U �ŽŶƚĂƚŽ�ͬ�&ĞĞĚďĂĐŬ 7UDQVODWH�ª ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� ŝŶƐƚĂůĂƌ�Ž�Yƚ͕�ƉŽĚĞ�ƵƐĂƌ�ĞƐƚĞ�ŽƵƚƌŽ�ƉŽƐƚ͕�Yƚϱ�Ͳ� /ŶƐƚĂůĂĕĆŽ�Ğŵ�ĂŵďŝĞŶƚĞ�>ŝŶƵdž�ϯ͕�ĐŽŵ�ƉĂƐƐŽ�Ă�ƉĂƐƐŽ�ƉĂƌĂ ŝŶƐƚĂůĂƌ�Ž�Yƚ�ƌĞĂƚŽƌ�ŶŽ�>ŝŶƵdž͘�DĞƐŵŽ�ƋƵĞŵ�ũĄ�ŝŶƐƚĂůŽƵ�Ġ�ŝŶƚĞƌĞƐƐĂŶƚĞ�ǀĞƌ�Ž�ƉŽƐƚ�ƉĂƌĂ�ĞŶƚĞŶĚĞƌ�ĂƐ�ŽƉĕƁĞƐ ƋƵĞ�ƉŽĚĞŵ�ƐĞƌ�ŚĂďŝůŝƚĂĚĂƐ�ĂŶƚĞƐ�ĚĂ�ŝŶƐƚĂůĂĕĆŽ͘ � � Configuração do ambiente host � WĂƌĂ�ĞƐƚĞ�ĂƌƚŝŐŽ�ƐĞƌĄ�ƵƚŝůŝnjĂĚĂ�Ă�ĚŝƐƚƌŝďƵŝĕĆŽ�>ŝŶƵdž�DŝŶƚ�ϭϳ�YŝĂŶĂ�ϲϰ�ďŝƚƐ͕�ŵĂƐ�ƐĞŵ�ƉƌŽďůĞŵĂƐ�Ğŵ�ƵƚŝůŝnjĂƌ�Ƶŵ hďƵŶƚƵ�ŽƵ��ĞďŝĂŶ͘���ƐĞŐƵŝƌ�ƐĆŽ�ůŝƐƚĂĚŽƐ�ŽƐ�ƐĞƵƐ�ƉƌĠͲƌĞƋƵŝƐŝƚŽƐ͗ Yƚϱ�/ŶƐƚĂůĂĚŽ�ĐŽŵ�Ž�Yƚ��ƌĞĂƚŽƌ͖ /����ƌĚƵŝŶŽ�ϭ͘ϲ͘Ϯ͖ �ƌĚƵŝŶŽ�hEK͖ WůƵŐŝŶ�Yƚ�^ĞƌŝĂů͘ � � Qt5 Console Application � �� ĂďŽƌĚĂŐĞŵ� ŶĞƐƚĞ� ƉŽƐƚ� Ğ� ŶĂ� ƐĠƌŝĞ� ƋƵĞ� ĞƐƚĄ� ƉŽƌ� ǀŝƌ͕� Ž� Yƚϱ� ƐĞƌĄ� ƵƚŝůŝnjĂĚŽ� Ğŵ� ĂŵďŝĞŶƚĞ� >ŝŶƵdž� Ğ� ĐŽŵ ĚĞƐĞŶǀŽůǀŝŵĞŶƚŽ�ĚĞ�ĂƉůŝĐĂĕĆŽ�ƉĂƌĂ�>ŝŶƵdž�;džϴϲ�ŽƵ�ĂƌŵͿ͕�ƉŽƌĠŵ�Yƚϱ�ƉŽĚĞ�ƐĞƌ�ŝŶƐƚĂůĂĚŽ�ƚĂŶƚŽ�Ğŵ�tŝŶĚŽǁƐ͕ >ŝŶƵdž�ŽƵ�DĂĐK^͕�ĂůĠŵ�ĚĞ�ƉŽĚĞƌ�ƐĞƌ�ĐŽŵƉŝůĂĚŽ�ƉĂƌĂ�ŽƵƚƌĂƐ�ƉůĂƚĂĨŽƌŵĂƐ͘ � ^Ğŵ�ŵĂŝƐ�ĚĞůŽŶŐĂƐ͕� ƐĞ� ǀŽĐġ� ũĄ� ŝŶƐƚĂůŽƵ�Ž�Yƚϱ�ƉŽĚĞ�Ăďƌŝƌ�Ž�Yƚ��ƌĞĂƚŽƌ͕� Ğ� ĐĂƐŽ�ĂŝŶĚĂ�ŶĆŽ� ƚĞŶŚĂ� ŝŶƐƚĂůĂĚŽ ĐŽŶĨŝƌĂ�Ž�ƉƌŽĐĞĚŝŵĞŶƚŽ�ĚŽ�ƉŽƐƚ�Yƚϱ�Ͳ�/ŶƐƚĂůĂĕĆŽ�Ğŵ�ĂŵďŝĞŶƚĞ�>ŝŶƵdž�ϯ͘ � �Žŵ�Ă�/���ĚŽ�Yƚ�ĂďĞƌƚĂ͕�ĐůŝĐŬ�Ğŵ�&ŝůĞ�х�EĞǁ�&ŝůĞ�Žƌ�WƌŽũĞĐƚ͘͘͘�Ğ�ƵŵĂ�ũĂŶĞůĂ�ĐŽŵŽ�ŶĂ�&ŝŐƵƌĂ�ϭ�ƐƵƌŐŝƌĄ�Ğ�ǀŽĐġ ĚĞǀĞƌĄ�ĞƐĐŽůŚĞƌ��ƉƉůŝĐĂƚŝŽŶƐ�х�Yƚ��ŽŶƐŽůĞ��ƉƉůŝĐĂƚŝŽŶ�Ğ�ĐůŝĐĂƌ�Ğŵ��ŚŽŽƐĞ�͘ � (PDLO NEWSLETTER ENQUETES REALIZADAS �ƌĚƵŝŶŽ�Ͳ��ŽŵƵŶŝĐĂĕĆŽ�^ĞƌŝĂů POSTS POPULARES �ŶĂůŝƐƚĂ�ĚĞ�dĞƐƚĞƐ�:ƵŶŝŽƌ�ŶĂ��ƵƚĞƋ dĞůĞŵĄƚŝĐĂͬ:ŽŚŶ��ĞĞƌĞ�Ͳ�^ĆŽ�WĂƵůŽ�Ğ /ŶĚĂŝĂƚƵďĂ �ŶĂůŝƐƚĂ�ĚĞ�^ŝƐƚĞŵĂƐ�ͬ��ŶŐĞŶŚĞŝƌŽ�ĚĞ �ĞƐĞŶǀŽůǀŝŵĞŶƚŽ�;�ŵďĂƌĐĂĚŽͿ�:ƵŶŝŽƌ�Ͳ �ƵƚĞƋ�dĞůĞŵĄƚŝĐĂͬ:ŽŚŶ��ĞĞƌĞ�Ͳ�^ĆŽ�WĂƵůŽ�Ğ /ŶĚĂŝĂƚƵďĂ �ŶĂůŝƐƚĂ�ĚĞ�^ŝƐƚĞŵĂƐ�ͬ��ŶŐĞŶŚĞŝƌŽ�ĚĞ �ĞƐĞŶǀŽůǀŝŵĞŶƚŽ�;�ŵďĂƌĐĂĚŽͿ�WůĞŶŽ�ͬ ^ĞŶŝŽƌ�Ͳ��ƵƚĞƋ�dĞůĞŵĄƚŝĐĂͬ:ŽŚŶ��ĞĞƌĞ�Ͳ�^ĆŽ WĂƵůŽ�Ğ�/ŶĚĂŝĂƚƵďĂ DĂŝƐ�ŽƉŽƌƚƵŶŝĚĂĚĞƐ �ƐĐŽůŚĂ�ĚĞ�DŝĐƌŽĐŽŶƚƌŽůĂĚŽƌ�ͬ DŝĐƌŽƉƌŽĐĞƐƐĂĚŽƌ ^ŝƐƚĞŵĂ�KƉĞƌĂĐŝŽŶĂů��ŵďĂƌĐĂĚŽ >ŝŶŐƵĂŐĞŵ�ĚĞ�ƉƌŽŐƌĂŵĂĕĆŽ dŝƉŽ�ĚĞ�WƌŽĐĞƐƐĂĚŽƌK�EŽǀŽ��ŵďĂƌĐĂĚŽƐ $66,1$5 ϰϲ͘ϱϴϱ�ǀŝƐƵĂůŝnjĂĕƁĞƐ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� &ŝŐƵƌĂ�ϭ�Ͳ��ƌŝĂŶĚŽ�WƌŽũĞƚŽ�Yƚ��ŽŶƐŽůĞ � EĂ� ũĂŶĞůĂ� ƐĞŐƵŝŶƚĞ�ĚĞǀĞŵŽƐ�ĚĂƌ�Ƶŵ�ŶŽŵĞ�ĂŽ�ƉƌŽũĞƚŽ� ;EĂŵĞ͗Ϳ� Ğ�ĚŝnjĞƌ�ŽŶĚĞ�ĚĞǀĞƌĄ� ƐĞƌ� ƐĂůǀŽ� ;�ƌĞĂƚĞ� ŝŶ͗Ϳ ĐŽŵŽ�ŶĂ�&ŝŐƵƌĂ�Ϯ͘�EŽ�ŵĞƵ�ĐĂƐŽ�ĞƐĐŽůŚŝ�ƐĂůǀĂƌ�ŶĂ�ƉĂƐƚĂ�ͬƚŵƉͬ�ĂƉĞŶĂƐ�ƉĂƌĂ�ĞƐƚĞ�ĂƌƚŝŐŽ͕�ŵĂƐ�ǀŽĐġ�ƉŽĚĞƌĄ�ĐƌŝĂƌ ƵŵĂ�ƉĂƐƚĂ�ŶŽ�ƐĞƵ�ͬŚŽŵĞ�Ğ�ƐĂůǀĂƌ�ŶĞůĂ͘� � ^ŝŵƵůĂĚŽƌ�ĚĞ��ƌĚƵŝŶŽ͗�sŝƌƚƵĂů��ƌĞĂĚďŽĂƌĚ �ƌĚƵŝŶŽ�hEK �ƌĚƵŝŶŽ�Ͳ��ŶƚƌĂĚĂƐ��ŶĂůſŐŝĐĂƐ �ŽŵƵŶŝĐĂĕĆŽ�^ĞƌŝĂů�:ĂǀĂ�н��ƌĚƵŝŶŽ PARCEIROS ϰϰ͘ϳϴϵ�ǀŝƐƵĂůŝnjĂĕƁĞƐ ϰϭ͘ϬϬϵ�ǀŝƐƵĂůŝnjĂĕƁĞƐ Ϯϳ͘ϵϰϲ�ǀŝƐƵĂůŝnjĂĕƁĞƐ Ϯϳ͘ϴϲϮ�ǀŝƐƵĂůŝnjĂĕƁĞƐ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� &ŝŐƵƌĂ�Ϯ�Ͳ�EŽŵĞ�Ğ�ůŽĐĂůŝnjĂĕĆŽ�ĚŽ�ƉƌŽũĞƚŽ � EĂ�ĞƚĂƉĂ�ƐĞŐƵŝŶƚĞ�ǀĂŵŽƐ�ĂƉĞŶĂƐ�ĐŽŶĨŝƌŵĂƌ�ƐĞ�ĞƐƚĆŽ�ƐĞůĞĐŝŽŶĂĚĂƐ�ĂƐ�ŽƉĕƁĞƐ�ĐŽŵŽ�Ă�ĚĂ�&ŝŐƵƌĂ�ϯ͕�ŶĆŽ�ƉƌĞĐŝƐĂ ƐĞƌ� ŝŐƵĂů�ŵĂƐ� ĂƚĞŶƚĞ� ƐŽďƌĞ�Ž�'��͘�YƵĂŶĚŽ� ĐƌŝĂƌ� Ž�ƉŽƐƚ� ĚĞ�ƉƌŽũĞƚŽƐ�Yƚ�ƉĂƌĂ� ĞŵďĂƌĐĂĚŽƐ� ĞƐƚĂ� ĞƚĂƉĂ� ƐĞƌĄ ĂďŽƌĚĂĚĂ�ĐŽŵ�ŵĂŝƐ�ĚĞƚĂůŚĞƐ͘�WĂƌĂ�ĂǀĂŶĕĂƌ�ĐůŝƋƵĞ�Ğŵ�EĞdžƚ͘ � ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� &ŝŐƵƌĂ�ϯ�Ͳ�^ĞůĞĐŝŽŶĂŶĚŽ�Ž�Ŭŝƚ�ĚĞ�ĚĞƐĞŶǀŽůǀŝŵĞŶƚŽ�;�ƵŝůĚͿ � EĂ� ũĂŶĞůĂ� ƐĞŐƵŝŶƚĞ� ĚĂ� &ŝŐƵƌĂ� ϰ� ƐĞƌĄ� ŽŶĚĞ� ǀŽĐġ� ĚĞǀĞ� ŽƵ� ŶĆŽ� ĞƐĐŽůŚĞƌ� Ž� ƐŽĨƚǁĂƌĞ� ĚĞ� ǀĞƌƐŝŽŶĂŵĞŶƚŽ� ;'ŝƚ͕ �ĂnjĂĂƌ͕�DĞƌĐƵƌŝĂů͕��s^͕�^ƵďǀĞƌƐŝŽŶ͕�ĞŶƚƌĞ�ŽƵƚƌŽƐͿ͘�EŽ�ĐĂƐŽ�ĚŽ�ĂƌƚŝŐŽ�ŶĆŽ�ĞƐƚĂƌĞŝ�ƵƐĂŶĚŽ͕�ŵĂƐ�ƋƵĂŶĚŽ� ĨŽƌ ƵƚŝůŝnjĂƌ� Ƶŵ� ƉƌŽũĞƚŽ� ĚŽ� Yƚ͕� ƉŽƌ� ĨĂǀŽƌ� ƵƚŝůŝnjĞ� ƵŵĂ� ĚĂƐ� ŽƉĕƁĞƐ͕� ƋƵĞŵ� ĨŽƌ� ĚĂƌ� ŵĂŶƵƚĞŶĕĆŽ� ŶŽ� ĨƵƚƵƌŽ� ŝƌĂ ĂŐƌĂĚĞĐĞƌ͘�>ŽŐŽ�ĂďĂŝdžŽ�ƐĞƌĄ�ĞdžŝďŝĚŽ�Ƶŵ�ƌĞƐƵŵŽ�ƐŽďƌĞ�Ž�ŶŽŵĞ�ĚŽ�ƉƌŽũĞƚŽ�Ğ�Ž�ůŽĐĂů�ƋƵĞ�ƐĞƌĄ�ƐĂůǀŽ͘�^Ğ�ĞƐƚŝǀĞƌ ĚĞ�ĂĐŽƌĚŽ�Ġ�Ɛſ�ĐůŝĐĂƌ�Ğŵ�&ŝŶŝƐŚ͘ � ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� &ŝŐƵƌĂ�ϰ�Ͳ�sĞƌƐŝŽŶĂŵĞŶƚŽ � hŵĂ�ĞƐƚƌƵƚƵƌĂ�ĐŽŵŽ�ŶĂ�&ŝŐƵƌĂ�ϱ�Ġ�ƉĂƌĂ�ƐĞƌ�ĐƌŝĂĚĂ͕�ŽŶĚĞ�ƚĞŵŽƐ�Ž�ŶŽŵĞ�ĚŽ�ƉƌŽũĞƚŽ�Ğŵ�ƉƌŝŵĞŝƌŽ�ŶşǀĞů͕�ůŽŐŽ Ğŵ�ƐĞŐƵŝĚĂ�ĂůŐƵŵĂƐ�ĚŝƌĞƚŝǀĂƐ�ƋƵĞ�ƉŽĚĞŵŽƐ�ƉĂƐƐĂƌ�ƉĂƌĂ�Ž�Yƚ͕�Ğ�^ŽƵƌĐĞƐ�Ğ�,ĞĂĚĞƌƐ͕�ƋƵĞ�ƐĆŽ�ŽƐ�ĚŝƌĞƚſƌŝŽƐ�ĚŽƐ ĂƌƋƵŝǀŽƐ�ĨŽŶƚĞƐ͘�EĞƐƚĞ�ĐĂƐŽ�ĂƉĞŶĂƐ�^ŽƵƌĐĞƐ�ĐŽŵ�Ž�ŵĂŝŶ͘ĐƉƉ�ũĄ�ĐƌŝĂĚŽ�ƉĞůŽ�Yƚ͘ � WĂƌĂ�ĞŶƚĞŶĚĞƌ�ŵĞůŚŽƌ�ƐŽďƌĞ�ĞƐƚĂ�ĞƐƚƌƵƚƵƌĂ�Ğ�ĂƐ�ŽƉĕƁĞƐ�ƋƵĞ�ƐƵƌŐŝƌĂŵ�ŶĂ�ĐŽůƵŶĂ�ĂŽ�ůĂĚŽ͕�ǀĞũĂ�Ž�ƉŽƐƚ�Yƚϱ� Ͳ �ŽŶŚĞĐĞŶĚŽ�Ƶŵ�ǀĞƌĚĂĚĞŝƌŽ�ĐĂŶŝǀĞƚĞͲƐƵŝĕŽ�Ϯ͘ � ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� &ŝŐƵƌĂ�ϱ�Ͳ�dĞůĂ�ŝŶŝĐŝĂů�Yƚ��ŽŶƐŽůĞ � DĂƌĂǀŝůŚĂ͕� ĞƐƚĂŵŽƐ� ĐŽŵ� Ă� /��� ŝŶƐƚĂůĂĚĂ͕� ƉƌŽũĞƚŽ� ĐƌŝĂĚŽ� Ğ� Ž� ƉĂƐƐŽ� ƐĞŐƵŝŶƚĞ� ƐĞƌĄ� ĐŽŶĨŝŐƵƌĂƌ� ƉĂƌĂ ĐŽŵƵŶŝĐĂĕĆŽ�ƐĞƌŝĂů�Ğ�ĐƌŝĂƌ�ŶŽƐƐŽ�ƉƌŝŵĞŝƌŽ�ƉƌŽŐƌĂŵĂ͘ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ���� � � Plugin QtSerialPort � �ĂƐŽ�ǀŽĐġ�ƚĞŶŚĂ�ƌĞĂůŝnjĂĚŽ�Ă�ŝŶƐƚĂůĂĕĆŽ�ĚŽ�Yƚϱ�ĐŽŶĨŽƌŵĞ�ŵĞŶĐŝŽŶĞŝ�ŶŽ�Yƚϱ�Ͳ�/ŶƐƚĂůĂĕĆŽ�Ğŵ�ĂŵďŝĞŶƚĞ�>ŝŶƵdž ϯ͕�ǀŽĐġ�ƐĞůĞĐŝŽŶŽƵ�ƋƚƐĞƌŝĂůƉŽƌƚ�Ğ�ĞƐƚĂƌĄ�ƚƵĚŽ�ĐĞƌƚŽ͘�sŽĐġ�ƉŽĚĞ�ŽďƚĞƌ�ŝŶĨŽƌŵĂĕƁĞƐ�ŶŽ�ůŝŶŬ�Yƚ^ĞƌŝĂůWŽƌƚ�ϰ͘ WƌŝŵĞŝƌŽ�ŝƌĞŵŽƐ�ĂĚŝĐŝŽŶĂƌ�ŶŽ�ĂƌƋƵŝǀŽ�͘ƉƌŽ�Ă�ƐĞŐƵŝŶƚĞ�ĞŶƚƌĂĚĂ͘ � Yƚϱ � Yƚϰ � �ŽŵŽ�ƐĞŝ�ƋƵĞ�ŵƵŝƚŽƐ�ĚĞƐĞŶǀŽůǀĞĚŽƌĞƐ�ĂŝŶĚĂ�ƵƚŝůŝnjĂŵ�Ž�Yƚϰ�;ϰ͘ϴͿ�ƚĞŶƚĂƌĞŝ�ŐƵŝĂƌ�Ž�ƉŽƐƚ�ƉĂƌĂ�ĂƐ�ĚƵĂƐ�ǀĞƌƐƁĞƐ͘ EŽ�ĐĂƐŽ�ĚŽ�Yƚϱ�ƉŽĚĞ�ƐĞƌ�ǀŝƐƚŽ�ŶĂ�&ŝŐƵƌĂ�ϲ͘ � 1 QT += serialport 1 CONFIG += serialport ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����&ŝŐƵƌĂ�ϲ�Ͳ��ŽŶĨŝŐƵƌĂŶĚŽ�Yƚ^ĞƌŝĂůWŽƌƚ�ŶŽ�͘ƉƌŽ � K�ƉƌſdžŝŵŽ�ƉĂƐƐŽ�Ġ�ŝŶĐůƵŝƌ�ĂƐ�ďŝďůŝŽƚĞĐĂƐ�ďĄƐŝĐĂƐ�ƉĂƌĂ�ƚƌĂďĂůŚĂƌ�ĐŽŵ�Ž�Yƚ^ĞƌŝĂůWŽƌƚ͕�ĐŽŵŽ�ƉŽĚĞ�ƐĞƌ�ǀŝƐƚŽ�ŶĂ &ŝŐƵƌĂ�ϳ͕�ůŝŶŚĂƐ�Ϯ�Ğ�ϯ͘ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � &ŝŐƵƌĂ�ϳ�Ͳ��ĚŝĐŝŽŶĂŶĚŽ�ĂƐ�ďŝďůŝŽƚĞĐĂƐ�ĚŽ�Yƚ^ĞƌŝĂůWŽƌƚ�ĂŽ�ƉƌŽũĞƚŽ � sĂŵŽƐ� ĐŽŶƐƚƌƵŝƌ� Ž� ƉƌŽũĞƚŽ͕� ĐůŝĐĂŶĚŽ� Ğŵ��ƵŝůĚ� WƌŽũĞĐƚ� ;�ƚƌů� н� �Ϳ͕� Ž� şĐŽŶĞ� ĐŽŵ� Ƶŵ�ŵĂƌƚĞůŽ� ĚĞƐĞŶŚĂĚŽ͕� Ğ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� ĚĞǀĞŵŽƐ�ƚĞƌ�ƵŵĂ�ƐĂşĚĂ��ŽŵƉŝůĞ�KƵƚƉƵƚ�ĐŽŵŽ�ĚĂ�&ŝŐƵƌĂ�ϳ͘ � �ĂƐŽ� ŶĂ� ƐĂşĚĂ� �ŽŵƉŝůĞ� KƵƚƉƵƚ� ĂƉĂƌĞĕĂ� ĂůŐŽ� ĐŽŵŽ� ΗĞƌƌŽƌ͗� Yƚ^ĞƌŝĂůWŽƌƚͬYƚ^ĞƌŝĂůƉŽƌƚ͗� EŽ� ƐƵĐŚ� ĨŝůĞ� Žƌ ĚŝƌĞĐƚŽƌLJΗ�ǀŽĐġ�ŶĆŽ�ƉŽƐƐƵŝ�Ž�Yƚ^ĞƌŝĂůWŽƌƚ�ŝŶƐƚĂůĂĚŽ�ŽƵ�ĐŽŶĨŝŐƵƌĂĚŽ�ĐŽƌƌĞƚĂŵĞŶƚĞ͘ � �ĂƐŽ�ǀŽĐġ�ŶĆŽ�ƚĞŶŚĂ�ƚŝĚŽ�ƉƌŽďůĞŵĂƐ�ĐŽŵ�Ž��ƵŝůĚ�WƌŽũĞĐƚ�ŝŐŶŽƌĞ�Ă�ĞƚĂƉĂ�Ă�ƐĞŐƵŝƌ͕�/ŶƐƚĂůĂŶĚŽ�Ž�Yƚ^ĞƌŝĂůWŽƌƚ͕ ǀŝƐƚŽ�ƋƵĞ�ĂƉĞŶĂƐ�ƋƵĞŵ�ĞŶĐŽŶƚƌĂƌ�ĞƌƌŽƐ�ĚĞǀĞ�ƌĞĂůŝnjĄͲůĂ͘ � � Instalando o QtSerialPort � ��ƷŶŝĐĂ�ĞdžŝŐġŶĐŝĂ�Ġ�ƉŽƐƐƵŝƌ�WĞƌů�ŝŶƐƚĂůĂĚŽ͕�ĚŽ�ŵĂŝƐ�ǀĂŵŽƐ�ƌĞƐŽůǀĞƌ�ŶĂƐ�ĞƚĂƉĂƐ�Ă�ƐĞŐƵŝƌ͘ � WƌŝŵĞŝƌŽ͕�ĐůŽŶĞ�Ž�ƌĞƉŽƐŝƚſƌŝŽ�ĚŽ�ƋƚƐĞƌŝĂůƉŽƌƚ͗ � �ŽŵŽ�ũĄ�ƉŽƐƐƵşŵŽƐ�Ž�Yƚϱ�ŝŶƐƚĂůĂĚŽ͕�ĂŐŽƌĂ�Ġ�Ɛſ�ĐŽŵƉŝůĂƌ͗ � �ĂƐŽ�ĂƉĂƌĞĐĞƌ�Ž�ĞƌƌŽ�ΗƋŵĂŬĞ͗�ĐŽƵůĚ�ŶŽƚ�ĞdžĞĐ�ΖͬƵƐƌͬůŝďͬdžϴϲͺϲϰͲůŝŶƵdžͲŐŶƵͬƋƚϰͬďŝŶͬƋŵĂŬĞΖ͗�EŽ�ƐƵĐŚ�ĨŝůĞ�Žƌ ĚŝƌĞĐƚŽƌLJΗ͕�ƉŽĚĞ�ƐĞƌ�ƋƵĞ�ǀŽĐġ�ƚĞǀĞ�ŽƵƚƌŽ�Yƚ�ŝŶƐƚĂůĂĚŽ͕�ŽƵ�ũĄ�ŝŶƐƚĂůŽƵ�ĂůŐŽ�ĐŽŵ�Ž�ŐĞƌĞŶĐŝĂĚŽƌ�ĚĞ�ƉĂĐŽƚĞƐ�ĚŽ >ŝŶƵdž�Ğ�ƚĞǀĞ�ƋƵĞ�ƵƚŝůŝnjĂƌ�Ž�ƋŵĂŬĞ͘�EĞƐƚĞ�ĐĂƐŽ�Ġ�Ɛſ�ƵƐĂƌ�Ž�ŵĞƐŵŽ�ĐĂŵŝŶŚŽ�ŽŶĚĞ�Ž�Yƚϱ�ĞƐƚĄ�ŝŶƐƚĂůĂĚŽ͘ � EŽ�ŵĞƵ�ĐĂƐŽ�ĞƐƚĄ�Ğŵ�ͬŚŽŵĞͬďƵĞŶŽͬYƚͬϱ͘ϰͬŐĐĐͺϲϰͬďŝŶͬƋŵĂŬĞ͘ � 1 2 3 4 5 6 7 8 $ cd /tmp && git clone git://gitorious.org/qt/qtserialport.git Cloning into 'qtserialport'... remote: Counting objects: 6869, done. remote: Compressing objects: 100% (4103/4103), done. remote: Total 6869 (delta 4667), reused 3755 (delta 2719) Receiving objects: 100% (6869/6869), 1.74 MiB | 462.00 KiB/s, done. Resolving deltas: 100% (4667/4667), done. Checking connectivity... done. 1 $ cd qtserialport && qmake qtserialport.pro 1 2 $ /home/bueno/Qt/5.4/gcc_64/bin/qmake qtserialport.pro ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � �ŵ�ƐĞŐƵŝĚĂ�ƚĞƌŵŝŶĞ�Ă�ŝŶƐƚĂůĂĕĆŽ͗ � WƌŽŶƚŽ͘�sŽĐġ�ĞƐƚĂ�ĐŽŵ�Ž�Yƚ^ĞƌŝĂůWŽƌƚ�ŝŶƐƚĂůĂĚŽ͘�dĞƐƚĞ�Ž�ƉƌŽũĞƚŽ�ŶŽǀĂŵĞŶƚĞ�ĐůŝĐĂŶĚŽ�Ğŵ��ƵŝůĚ�WƌŽũĞĐƚ͘ � � Listando Portas � sĂŵŽƐ�ĂŐŽƌĂ�ĂĚŝĐŝŽŶĂƌ�ĂŽ�ŶŽƐƐŽ�ŵĂŝŶ͘ĐƉƉ͕�Ƶŵ�ĐſĚŝŐŽ�ƋƵĞ�ĚĞǀĞ�ůŝƐƚĂƌ�ĂƐ�ƉŽƌƚĂƐ�ƐĞƌŝĂŝƐ�ĚŽ�ĐŽŵƉƵƚĂĚŽƌ͘ � 3 Info: creating cache file /tmp/qtserialport/.qmake.cache 1 $ sudo make install 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <QCoreApplication> #include <QtCore/QDebug> #include <iostream> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> QTextStream cinput(stdin); QTextStream coutput(stdout); /** * @brief LoadPorts * @return QStringList * */ QStringList LoadPorts(void); int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QStringList portSerial; int myPortSerial; portSerial = LoadPorts(); uint numPortSerial = portSerial.size(); ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � EŽ�ĐſĚŝŐŽ�ĐƌŝĂĚŽ�ĂĐŝŵĂ�ƚĞŵŽƐ�Ă�ĨƵŶĕĆŽ�>ŽĂĚWŽƌƚƐ;Ϳ͕�ĐƵũĂ�ŝŵƉůĞŵĞŶƚĂĕĆŽ�Ġ�ďĂƐĞĂĚĂ�ŶŽ�ĞdžĞŵƉůŽ�ĚĂ�ƉƌſƉƌŝĂ Yƚ� ϰ͕� ŽŶĚĞ� ƵƚŝůŝnjĂŶĚŽ�Yƚ^ĞƌŝĂůWŽƌƚ/ŶĨŽ� ǀĂŵŽƐ� ŽďƚĞƌ� ŝŶĨŽƌŵĂĕƁĞƐ� ĚĞƚĂůŚĂĚĂƐ� ĚĂ� ƉŽƌƚĂ� ƐĞƌŝĂů͕� ĐŽŵŽ� ĂƐ ƉŽƌƚĂƐ�ĚŝƐƉŽŶşǀĞŝƐ�Ğ�ŝŶĨŽƌŵĂĕƁĞƐ�ĐŽŵŽ�Ž�ŶŽŵĞ�ĚĂ�ƉŽƌƚĂ͕�ĨĂďƌŝĐĂŶƚĞ�Ğ�ĚĞƐĐƌŝĕĆŽ͘��ĂĚĂ�ƉŽƌƚĂ�ƐĞƌĄ�ĂĚŝĐŝŽŶĂĚĂ ă�ǀĂƌŝĄǀĞů�ĚĞǀŝĐĞ͕�ƋƵĞ�Ġ�ƵŵĂ�^ƚƌŝŶŐ>ŝƐƚ͘ 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 coutput << "INDICE" << "\t\tDISPOSITIVO" << endl; if (numPortSerial > 0) { for(uint indice=0; indice<numPortSerial; indice++) { qDebug() << "[" << indice << "]\t\t" << portSerial.value(indice); } } else { qDebug() << "Nenhuma porta serial detectada!\n"; exit(1); } exit(0); return a.exec(); } QStringList LoadPorts(void) { QStringList device; foreach (const QSerialPortInfo &devinfo, QSerialPortInfo::availablePorts()) { QSerialPort devserial; devserial.setPort(devinfo); if (devserial.open(QIODevice::ReadWrite)) { qDebug() << "\nPorta\t\t:" << devinfo.portName(); qDebug() << "Descrição\t:" << devinfo.description(); qDebug() << "Fabricante\t:" << devinfo.manufacturer() << "\n"; device << devinfo.portName(); devserial.close(); } } return device; } ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � sŽůƚĂŶĚŽ�ĂŽ�ŵĂŝŶ;Ϳ͕�ŶĞůĞ�ƚĞŵŽƐ�ŽƵƚƌĂ�Y^ƚƌŝŶŐ>ŝƐƚ�ƉŽƌƚ^ĞƌŝĂů�ƋƵĞ�ŝƌĄ�ƌĞĐĞďĞƌ�Ž�ƌĞƚŽƌŶŽ�ĚĞ�>ŽĂĚWŽƌƚƐ;Ϳ͕�Ğ�Ă ƐĞƋƵġŶĐŝĂ�Ġ�ŵƵŝƚŽ�ƐŝŵƉůĞƐ͘�sĞƌŝĨŝĐĂŵŽƐ�Ž�ŶƷŵĞƌŽ�ĚŽ�ƉŽƌƚ^ĞƌŝĂů�ƋƵĞ�ƐĞƌĄ�Ă�ƋƵĂŶƚŝĚĂĚĞ�ĚĞ�ĚĞǀŝĐĞƐ͘�^Ğ�ĨŽƌ�Ϭ ŶĞŶŚƵŵĂ�ƉŽƌƚĂ� ƐĞƌŝĂů� ĨŽŝ� ĚĞƚĞĐƚĂĚĂ͕� ĐĂƐŽ� ƐĞũĂ�ŵĂŝŽƌ� ƋƵĞ� Ϭ� ĂƐ� ƉŽƌƚĂƐ� ƐĆŽ� ŝŵƉƌĞƐƐĂƐ� ŶĂ� ƚĞůĂ� ĐŽŵ�ŽƐ� ƐĞƵƐ ŶŽŵĞƐ�Ğ�ƐƵĂƐ�ŝŶĨŽƌŵĂĕƁĞƐ͘ � �ůŝĐĂŶĚŽ�ŶŽ�ďŽƚĆŽ�ZƵŶ�ŽƵ�Ž�ĂƚĂůŚŽ�;�ƚƌů�н�ZͿ͕�ǀĂŵŽƐ�ŽďƚĞƌ�ƵŵĂ�ƐĂşĚĂ�ĐŽŵŽ�ĂďĂŝdžŽ͗ � �ŐŽƌĂ�ĐŽŶĞĐƚĂŶĚŽ�Ƶŵ�ĚŝƐƉŽƐŝƚŝǀŽ�ƐĞƌŝĂů͕�ŶŽ�ŵĞƵ�ĐĂƐŽ�Ž��ƌĚƵŝŶŽ�hEK͗ � �ĂƐŽ�ŵĂŝƐ�ĂůŐƵŵ�ĚŝƐƉŽƐŝƚŝǀŽ�ƋƵĞ�ĞŵƵůĞ�ĂƚƌĂǀĠƐ�ĚĂ�ƉŽƌƚĂ�h^��Ă�ƐĞƌŝĂů�ƐĞƌŝĂ�ĂĐƌĞƐĐĞŶƚĂĚŽ�şŶĚŝĐĞ�ĂĐŝŵĂ͘ � � Comunicando�com o Arduino� � YƵĞ�ƚĂů�ĂŐŽƌĂ�ĨĂnjĞƌ�ƵŵĂ�ĐŽŵƵŶŝĐĂĕĆŽ�ĚĞ�ǀĞƌĚĂĚĞ͍�WĂƌĂ� ŝƐƐŽ�ǀĂŵŽƐ�ĐŽŶƚĂƌ�ĐŽŵ�Ă�ĂũƵĚĂ�ĚŽ��ƌĚƵŝŶŽ�hEK͕ ŽŶĚĞ�ĂƚƌĂǀĠƐ�ĚĂ�ƐƵĂ�ƉŽƌƚĂ�h^��ŝƌĞŵŽƐ�ĐŽŵƵŶŝĐĂƌ�ǀŝĂ�ƐĞƌŝĂů�ĐŽŵ�Ž�Yƚ͘��ĂƐŽ�ŶĆŽ�ĐŽŶŚĞĕĂ�Ž��ƌĚƵŝŶŽ�ŽƵ�ƚĞǀĞ ƉŽƵĐŽ�ĐŽŶƚĂƚŽ�ƉŽĚĞ�ĂĐĞƐƐĂƌ�ŽƐ�ƉŽƐƚƐ�ĚŽ�&ĄďŝŽ�^ŽƵnjĂ͕��ƌĚƵŝŶŽ�hEK�ϱ�Ğ��ƌĚƵŝŶŽ�Ͳ�WƌŝŵĞŝƌŽƐ�WĂƐƐŽƐ�ϲ͘ � ^ĞŐƵĞ�ĂďĂŝdžŽ�Ž�ĐſĚŝŐŽͲĨŽŶƚĞ�ĚŽ�ĨŝƌŵǁĂƌĞ�ĚŽ��ƌĚƵŝŶŽ͘�WŽĚĞƌŝĂ�ƐĞƌ�ƵŵĂ�ĂƉůŝĐĂĕĆŽ�ƐŝŵƉůĞƐ͕�ĐŽŵŽ�ƌĞĐĞďĞƌ�Ğ ŝŵƉƌŝŵŝƌ�Ž�ĐĂƌĂĐƚĞƌĞ�ƌĞĐĞďŝĚŽ�ŽƵ�ĞŶǀŝĄͲůŽ�ĚĞ�ǀŽůƚĂ͕�ŵĂƐ�ƉĞŶƐĞŝ͕�ǀĂŵŽƐ�ĨĂnjĞƌ�ĂůŐŽ�ŵĂŝƐ�ůĞŐĂů͕�ƉŽƌƋƵĞ�ŶĆŽ�Ƶŵ ƐŝŵƉůĞƐ�ƉƌŽŵƉƚ͍�KŶĚĞ�ƌĞĐĞďĞ�Ƶŵ�ĐŽŵĂŶĚŽ�Ğ�ƚƌĂƚĂ�Ž�ŵĞƐŵŽ�ƌĞƉŽƌƚĂĚŽ�Ă�ƐĂşĚĂ�ŽƵ�Ƶŵ�ĞƌƌŽ͕�Ğ�ŶŽ�ŶŽƐƐŽ�ĐĂƐŽ Ž�Yƚ�ƐĞƌĄ�ŶŽƐƐŽ�ƉƌŽŵƉƚ͘ � 1 2 3 Starting /tmp/build-comunicacao_serial_qt_console-Desktop_Qt_Qt_Version_GCC_64bit-Debug/comunicacao_serial_qt_console INDICE DISPOSITIVO Nenhuma porta serial detectada! 1 2 3 4 5 6 7 8 Starting /tmp/build-comunicacao_serial_qt_console-Desktop_Qt_Qt_Version_GCC_64bit-Debug/comunicacao_serial_qt_console Porta : "ttyACM0" Descrição : "Arduino Uno" Fabricante : "Arduino www.arduino.cc " INDICE DISPOSITIVO [ 0 ] "ttyACM0" ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� sĂŵŽƐ�ĐŽŵĞĕĂƌ�ĐŽŵ�Ž�ĐſĚŝŐŽͲĨŽŶƚĞ�ĚŽ��ƌĚƵŝŶŽ͘ � 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #define FW_VERSAO 1.0 #define HW_MODELO "ARDUINOUNO" String serialCmd = ""; bool flagControlRxSerial = false; void setup() { Serial.begin(9600); /* Limitando a 10 bytes para nossos comandos */ serialCmd.reserve(10); } void loop() { /* Estarou sempre verificando se acabou a recepcao da serial, esta variavel flagControlRxSerial se tornara true para isso. */ if (flagControlRxSerial) { if( serialCmd == "versao\n" ) { Serial.print("\tFirmware: "); Serial.print(FW_VERSAO); } else if ( serialCmd == "hardware\n") { Serial.print("\tPlaca : "); Serial.print(HW_MODELO); } else if ( serialCmd == "help\n" || serialCmd == "?\n") { Serial.print("\tComandos : \n\thardware - Modelo atual de placa\n\tversao - Versao atual do firmware" } else if (serialCmd == "\n") { Serial.print("\n"); } else { Serial.print("\t* Comando invalido *"); } /* Resetando valores para nova recepcao */ serialCmd = ""; ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � K�ĐſĚŝŐŽ�ĞƐƚĄ�ďĞŵ�ĐŽŵĞŶƚĂĚŽ�ƉĂƌĂ�ĂũƵĚĂƌ�Ă�ĐŽŵƉƌĞĞŶƐĆŽ͕�Ž�ĨŽĐŽ�Ġ�ĂƚĞŶĚĞƌ�ŽƐ�ĐŽŵĂŶĚŽƐ�ŚĂƌĚǁĂƌĞ͕�ǀĞƌƐĂŽ Ğ�ŚĞůƉ�ƋƵĞ�ƐĆŽ�ƌĞĐĞďŝĚŽƐ�ƉĞůĂ�ƐĞƌŝĂů�Ğ�ŝŵƉƌŝŵŝƌ�ĞƐƚĂƐ�ŝŶĨŽƌŵĂĕƁĞƐ�ŶĂ�ƚĞůĂ�Ğ�ƚƌĂƚĂƌ�Ă�ĐŽŵƵŶŝĐĂĕĆŽ�ĐŽŵŽ�Ƶŵ ƉƌŽŵƉƚ͘ � �� ŶŽǀŝĚĂĚĞ� ĂƋƵŝ� Ġ� Ž� ƐĞƌŝĂů�ǀĞŶƚ;Ϳ� ϳ͕� ƋƵĞ� ĂŶƚĞƐ� ĚĂ� ŝŶƚĞƌĂĕĆŽ� ĚĞ� ĐĂĚĂ� ůŽŽƉ;Ϳ� ǀĞƌŝĨŝĐĂ� ƐĞ� ĂůŐƵŵ� ďLJƚĞ� ĨŽŝ ƌĞĐĞďŝĚŽ͕�Ğ�ĞǀĞŶƚƵĂůŵĞŶƚĞ� ŝŶĚŝĐĂ�Ă� ƌĞĐĞƉĕĆŽ�ĚĞ�Ƶŵ�ĐŽŵĂŶĚŽ͘�WĂƌĂ�ĐŽŵƉƌĞĞŶĚĞƌ�ŵĞůŚŽƌ�Ž�ƐĞƌŝĂů�ǀĞŶƚ;Ϳ ǀĞũĂ�Ž�ĂƌƚŝŐŽ��ŶƚĞŶĚĞŶĚŽ�Ğ�ƵƐĂŶĚŽ�ƐĞƌŝĂů�ǀĞŶƚ;Ϳ�ϴ͘ � �ŐŽƌĂ�Ă�ŝŵƉůĞŵĞŶƚĂĕĆŽ�ŶŽ�ůĂĚŽ�ĚŽ�Yƚϱ͕�ǀŽĐġ�ƉŽĚĞ�ĞĚŝƚĂƌ�Ž�ŵĂŝŶ͘ĐƉƉ�ĚŽ�ƉƌŽũĞƚŽ�ĂƚƵĂů�ŽƵ�ĐƌŝĂƌ�ŽƵƚƌŽ�ƉƌŽũĞƚŽ ƉĂƌĂ� ŝƐƐŽ�Ğ�ĂĚŝĐŝŽŶĂƌ�Ž�ĐſĚŝŐŽ�ĂďĂŝdžŽ�ĂŽ�ƐĞƵ�ŵĂŝŶ͘ĐƉƉ͘�>ĞŵďƌĂŶĚŽ͕�Ġ�ĐůĂƌŽ͕�ĚĞ�ĞĚŝƚĂƌ�Ž�ĂƌƋƵŝǀŽ� ͘ƉƌŽ͕�ƉĂƌĂ ĐƌŝĂƌ�Ƶŵ�ŶŽǀŽ�ƉƌŽũĞƚŽ͘ � 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 flagControlRxSerial = false; } } void serialEvent() { /* Loop verificando se algum byte esta disponivel na serial */ while (Serial.available()) { /* O que chegar pela serial feito um typecast de char para a variavel caractere */ char caractere = (char)Serial.read(); /* Nossa variavel caractere eh concatenada a nossa variavel serialCmd que eh uma String */ serialCmd += caractere; /* Se chegar um CR, nova linha, nossa flag de controle (flagsControlRxSerial) passa para true e no loop principal ja podera ser utilizada */ if (caractere == '\n') { flagControlRxSerial = true; } } } 1 2 3 4 #include <QCoreApplication> #include <QtCore/QDebug> #include <iostream> ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> /* Vou criar cinput e couput como globais para utilizar em Debugs * nas funções de leitura e escrita da porta serial * * ReadPort(QSerialPort *port); * WritePort(QSerialPort *port, const QByteArray &writeData) * */ QTextStream cinput(stdin); QTextStream coutput(stdout); /** * @brief ReadPort * @param port * @return */ QByteArray ReadPort(QSerialPort *port); /** * @brief WritePort * @param port * @param writeData */ void WritePort(QSerialPort *port, const QByteArray &writeData); int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); /* Estrutura de variaveis locais */ QByteArray saidaCmdSerial; // Dados recebidos pela serial QByteArray enviarCmdSerial; // Comando a ser enviado pela serial QStringList argumentList; // Parametros passados na execucao da apicação int argumentCount; // Numero de argumentos passados QSerialPort serialPort; // Novo objecto QSerialPort QString serialPortName; // Variavel que ira receber o caminho da porta serial int serialPortBaudRate; // Variavel que ira receber o baudrate da conexão ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 /* Capturando o numero de parametro passado */ argumentCount = QCoreApplication::arguments().size(); /* Carregando em um StringList os parametros passados */ argumentList = QCoreApplication::arguments(); /* Verifica se pelo um parametro foi passado, no caso o tty da serial, por exemplo: * ttyUSB0, ttyACM0 em caso de duvidas verifique no /dev/tty* */ if (argumentCount == 1) { coutput << QObject::tr("Uso: %1 <portaserial> [baudrate]").arg(argumentList.first return 1; } /* Se passou na etapa acima então a porta serial foi passada e a mesma * será carregada em serialPortName e logo em seguida configurada no * serialPort.setPortName(); */ serialPortName = argumentList.at(1); serialPort.setPortName(serialPortName); /* O segundo parametro esperado é o BaudRate, caso não seja passado nenhum automaticamente ira receber * 9600, caso contrario ira configurar serialPort.setBaudRate() com o valor passado, e sera armazenado * na variavel serialPortBaudRate */ serialPortBaudRate = (argumentCount > 2) ? argumentList.at(2).toInt() : QSerialPort serialPort.setBaudRate(serialPortBaudRate, QSerialPort::AllDirections); /* Configuração Padrão e que pode ser configurada de acordo com sua necessidade, no caso estou usando: * Databits 8 (8) * FlowControl NoFlowControl ( Sem controle de fluxo) * Parity NoParity (Sem Paridade) * StopBits OneStop (1) */ serialPort.setDataBits(QSerialPort::Data8); serialPort.setFlowControl(QSerialPort::NoFlowControl); serialPort.setParity(QSerialPort::NoParity); serialPort.setStopBits(QSerialPort::OneStop); /* Proximo passo é realizado a conexão, onde irei abrir o device especificado com as devidas configurações ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 * e no caso abaixo, estou dizendo que para Leitura+Escrita, e as opções são: * * QIODevice::WriteOnly : Apenas escrita no device * QIODevice::ReadOnly : Apenas leitura do device * QIODevice::ReadWrite : Leitura e Escrita do device * * Existem outras flags mas nesta aplicação não serão abordadas. * Em caso de falha, um erro é reportado natela e a aplicação encerrada. */ if (!serialPort.open(QIODevice::ReadWrite)) { coutput << QObject::tr("Falha ao abrir porta %1, erro: %2").arg(serialPortName) return 1; } /* LOOP PRINCIPAL DA APLICAÇÂO */ while(true) { /* Mensagem para aparecer no terminal, dando cara de prompt */ coutput << "prompt :> " << flush; /* O que for digitar no stdin sera capturado e guardado em enviarCmdSerial*/ enviarCmdSerial = cinput.readLine().toUtf8(); /* Verifica se foi digitado algum comando e ignora \n e o exit */ if( (enviarCmdSerial != "exit") && (enviarCmdSerial.length() > 0) ) { /* Atravez da função WritePort(); envia o endereço do objeto serialPort * e o comando a ser escrito na serial */ WritePort(&serialPort,enviarCmdSerial+"\n"); /* Atravez da função ReadPort() é passado o endereço do objecto serialPort * e a variavel saidaCmdSerial aguarda o retorno da resposta ao comando enviado */ saidaCmdSerial = ReadPort(&serialPort); /* Imprimo na tela o comando recebido */ coutput << saidaCmdSerial << endl; /* Limpo o conteudo do variavel dos comandos enviados */ /* Agora é um if() que faz o controle nao mais um while() e a * funcao de clear() nao é mais necessaria */ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 //enviarCmdSerial.clear(); } /* Caso digou exit entra aqui */ if(enviarCmdSerial == "exit") { /* Mensagem padrao que ira aparecer no terminal quando digitar exit */ coutput << "Encerrando prompt Qt <> Arduino :)" << endl; return false; } } /* Fechando a conexão serial */ serialPort.close(); /* Saindo com sucesso da aplicação */ exit(0); return a.exec(); } /** * @brief ReadPort * @param port * @return Bytes com os dados da comunicação serial * * Deve receber apenas o endereço do objeto QSerialPort * e ira devolver os dados recebidos da comunicação serial */ QByteArray ReadPort(QSerialPort *port) { QByteArray readData; /* Vou aguardar X ms, no caso 75, para ver os dados disponiveis e começar a leitura (-1) não possuira timeout. */ while (port->waitForReadyRead(75)) { readData.append(port->readAll()); } /* Descomentar a linha abaixo apenas para debug da recepçao serial */ //coutput << "RX data :> " << readData << endl; return readData; } ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � EŽ� ĐſĚŝŐŽ� ĂĐŝŵĂ͕� ĂĐŚŽ� ƋƵĞ� ƉŽƐƐŽ� ƐĞƌ� ďĞŵ� ďƌĞǀĞ� ƉŽŝƐ� Ğŵ� ĐĂĚĂ� ĞƚĂƉĂ� ĞƵ� ĂĚŝĐŝŽŶĞŝ� Ƶŵ� ĐŽŵĞŶƚĄƌŝŽ͘� �Ɛ ĨƵŶĕƁĞƐ� ĚĞ� ůĞƌ� Ğ� ĞƐĐƌĞǀĞƌ� ŶĂ� ƉŽƌƚĂ� ƐĞƌŝĂů� ƵƐĂŶĚŽ� Ž�Yƚ^ĞƌŝĂůWŽƌƚ� Ġ� ďĂƐĞĂĚŽ� ŶĂ� ŝŵƉůĞŵĞŶƚĂĕĆŽ� ĞdžĞŵƉůŽ ŶŽ�ƐŝƚĞ�ĚŽ�Yƚ�ϵϭϬ͕�Ğ�ŵĂŝƐ�ĚĞƚĂůŚĞƐ�ƐŽďƌĞ�ŵĂŶŝƉƵůĂĕĆŽ�ĚĞ�/K�ŶŽ�Yƚ�ƉŽĚĞ�ƐĞƌ�ǀŝƐƚŽ�ŶĂ�ƐĞƐƐĆŽ�Y/K�ĞǀŝĐĞ ϭϭ͕�ƌĞĐŽŵĞŶĚŽ�ĞƐƚĞ�ůŝŶŬ�ƉĂƌĂ�ĐŽŶŚĞĐĞƌ�ŵĞůŚŽƌ�ĂƐ�ŽƉĕƁĞƐ�Ğ�ĨůĂŐƐ�ƋƵĞ�ƉŽĚĞŵ�ƐĞƌ�ƵƚŝůŝnjĂĚĂƐ͘ � sĂŵŽƐ�ĐŽŶƐƚƌƵŝƌ�ŶŽƐƐĂ�ĂƉůŝĐĂĕĆŽ�Ğ�ĞdžĞĐƵƚĂͲůĂ͘�WŽĚĞ�ĐůŝĐĂƌ�Ğŵ��ƵŝůĚ�WƌŽũĞĐƚ�;�ƚƌů�н��Ϳ͕�Ğ�ĐŽŵŽ�ƵƐĞŝ�Ž�ĚŝƌĞƚſƌŝŽ ͬƚŵƉ�ƉĂƌĂ�Ž�ƉƌŽũĞƚŽ�ǀŽƵ�ĂĐĞƐƐĄͲůŽ�ƉŽƌ�ĞƐƐĞ�ĐĂŵŝŶŚŽ͘�sŽĐġ�ĚĞǀĞƌĄ�ƚƌŽĐĂƌ�ƉĞůŽ�ĐĂŵŝŶŚŽ�ƋƵĞ�ĞƐĐŽůŚĞƵ͘�sĂŵŽƐ 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 /** * @brief WritePort * @param port * @param writeData * * Recebe o endereço do objeto QSerialPort usado e o ByteArray do comandos * a ser enviado e escreve na porta serial. * */ void WritePort(QSerialPort *port, const QByteArray &writeData) { /* Descomentar a linha abaixo apenas para debug da transmissão serial */ //coutput << "TX data :>" << writeData << endl; /* Baseado no endereço do QSerialPort recebido em *port, eu vou escrever na serial * com port->write() e passando como parametro o QByteArray writeData e como retorno * ele irá me dar o numero de bytes enviados */ qint64 bytesWritten = port->write(writeData); /* Faço apenas uma checagem basica onde se retornou -1 deu erro ao enviar os dados e se retornar um numero * diferente do retornado alguma informação foi perdida durante a escrita */ if (bytesWritten == -1) { coutput << QObject::tr("Falha ao escrever os dados na porta %1, error: %2").arg QCoreApplication::exit(1); } else if (bytesWritten != writeData.length()) { coutput << QObject::tr("Falha ao escrever uma parte dos dados na porta %1, error: %2" QCoreApplication::exit(1); } } ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� ĞdžĞĐƵƚĂƌ�Ă�ĂƉůŝĐĂĕĆŽ͗ � YƵĞ�ůĞŐĂů͕�ŶĂ�ƐĂşĚĂ�ĚŽƐ�ĐŽŵĂŶĚŽƐ�ĂĐŝŵĂ�ƉŽĚĞŵŽƐ�ǀĞƌ�ƋƵĞ�ƋƵĂŶĚŽ�ĞdžĞĐƵƚĞŝ�ƐĞŵ�Ž��ƌĚƵŝŶŽ�ĐŽŶĞĐƚĂĚŽ�ĚĞƵ Ƶŵ�ĂǀŝƐŽ�ŶĂ�ƚĞůĂ�ĚĂ�ŵĂŶĞŝƌĂ�ĐŽƌƌĞƚĂ�ĚĞ�ĞdžĞĐƵĕĆŽ͘�>ŽŐŽ�Ğŵ�ƐĞŐƵŝĚĂ�ƉĂƐƐĞŝ�ƵŵĂ�ƉŽƌƚĂ�ŝŶĐŽƌƌĞƚĂ�Ğ�ĨŽŝ�ĚĂĚŽ�Ž ĞƌƌŽ� ĚĞ� ƋƵĞ� ŶĆŽ� ĨŽŝ� ƉŽƐƐşǀĞů� Ăďƌŝƌ� Ž� ĚŝƐƉŽƐŝƚŝǀŽ͘� >ŽŐŽ� Ğŵ� ƐĞŐƵŝĚĂ͕� ĐŽŵ� Ă� ƉŽƌƚĂ� ĐŽƌƌĞƚĂ͕� ĨŽŝ� ƌĞĂůŝnjĂĚĂ� Ă ĐŽŶĞdžĆŽ�Ğ�ũĄ�ĂƉĂƌĞĐĞƵ�Ă�ĞŶƚƌĂĚĂ�ĚŽ�ŶŽƐƐŽ�ƉƌŽŵƉƚ͕�ĂŐƵĂƌĚĂŶĚŽ�ŽƐ�ĐŽŵĂŶĚŽƐ͘�EŽƚĞ�ƋƵĞ�ƐĞ�ŶĆŽ�ƉĂƐƐĂƌ�Ƶŵ ƐĞŐƵŶĚŽ�ƉĂƌąŵĞƚƌŽ͕�ƋƵĞ�Ġ�Ž�ďĂƵĚƌĂƚĞ͕�Ġ�ĂƐƐƵŵŝĚŽ�ƉŽƌ�ƉĂĚƌĆŽ�ϵϲϬϬ�ďƉƐ͘ � �Žŵ� ŽƐ� ĐŽŵĂŶĚŽƐ� ĐŽƌƌĞƚŽƐ� ŚĞůƉ͕� ŚĂƌĚǁĂƌĞ� Ğ� ǀĞƌƐĂŽ� ĨŽƌĂŵ� ƌĞƚŽƌŶĂĚĂƐ� ĂƐ� ĚĞǀŝĚĂƐ� ŝŶĨŽƌŵĂĕƁĞƐ� Ğ� ŽƐ ĐŽŵĂŶĚŽƐ�ŝŶĞdžŝƐƚĞŶƚĞƐ�ƵŵĂ�ŵĞŶƐĂŐĞŵ�ĚĞ�ĞdžĐĞĕĆŽ͘�^Ğ�ŐŽƐƚŽƵ�ĚĂ�ŝĚĞŝĂ͕�ǀŽĐġ�ƉŽĚĞ�ĞƐƚĞŶĚĞƌ�ĂƐ�ĨƵŶĕƁĞƐ�ĚŽ Yƚ�ĂŐŽƌĂ͕� ĐŽŵŽ�ƉŽƌ�ĞdžĞŵƉůŽ�ŶŽ�ƋƵĞ�ĞƵ�ĚŝŐŝƚĞŝ�Ž� ĐŽŵĂŶĚŽ�ĐůĞĂƌ�Ğ�ŶĆŽ�ĂĐŽŶƚĞĐĞƵ�ŶĂĚĂ͕�ƉŽĚĞƌŝĂ� ĨĂnjĞƌ�ĚĞ ůŝŵƉĂƌ�Ă�ƚĞůĂ�ĚŽ�ƚĞƌŵŝŶĂů͕�ƉŽĚĞƌŝĂ�ĂĚŝĐŝŽŶĂƌ�Ƶŵ�ƚŝŵĞŽƵƚ�ĐĂƐŽ�ĚĞƉŽŝƐ�ĚĞ�ĂůŐƵŵ�ƚĞŵƉŽ�ŶĞŶŚƵŵ�ĐŽŵĂŶĚŽ�ĨŽƌ ĚŝŐŝƚĂĚŽ͘ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /tmp/build-comunicacao_serial_qt_console $ ls -1 comunicacao_serial_qt_console main.o Makefile /tmp/build-comunicacao_serial_qt_console $ ./comunicacao_serial_qt_console Uso: ./comunicacao_serial_qt_console <portaserial> [baudrate] /tmp/build-comunicacao_serial_qt_console $ ./comunicacao_serial_qt_console /dev/ttyACM1 Falha ao abrir porta /dev/ttyACM1, erro: No such file or directory /tmp/build-comunicacao_serial_qt_console $ ./comunicacao_serial_qt_console /dev/ttyACM0 prompt :> prompt :> prompt :> info * Comando invalido * prompt :> help Comandos : hardware - Modelo atual de placa versao - Versao atual do firmware prompt :> versao Firmware: 1.00 prompt :> hardware Placa : ARDUINO UNO prompt :> prompt :> clear * Comando invalido * prompt :> exit Encerrando prompt Qt <> Arduino :) /tmp/build-comunicacao_serial_qt_console $ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� � K� Yƚ� Ġ� ŵƵŝƚŽ� ƉŽĚĞƌŽƐŽ� Ğ� ƵƐĞŝ� ŶĞƐƚĞ� ƉŽƐƚ� ĂƉĞŶĂƐ� ƵŵĂ� ƉĞƋƵĞŶĂ� ƉĂƌĐĞůĂ� ĚĞ� ƐĞƵ� ƉŽĚĞƌ� Ğ� ƚĂŵďĠŵ� ĚŽ Yƚ^ĞƌŝĂůWŽƌƚ͕�ƋƵĞ�ƉŽĚĞŵŽƐ� ƚƌĂďĂůŚĂƌ� ĐŽŵ�ĐŽŶĞdžƁĞƐ� ĂƐƐşŶĐƌŽŶĂƐ�Ğ� ƐşŶĐƌŽŶĂƐ͘� �� ƐĞ� ǀŽĐġ� ũĄ� ƚƌĂďĂůŚŽƵ� ĐŽŵ ƚĞƌŵŝŽƐ�ϭϮ�ĚŽ�>ŝŶƵdž�Ğŵ�ĂƉůŝĐĂĕƁĞƐ���ƉĂƌĂ�ĐŽŵƵŶŝĐĂĕĆŽ�ƐĞƌŝĂů͕�ĨŝƋƵĞ�ŵĂŝƐ�ĐŽŶĨŽƌƚĄǀĞů͕�Ġ�Ğŵ�ĐŝŵĂ�ĚĞůĞ�ƋƵĞ Ž�Yƚ^ĞƌŝĂůWŽƌƚ�ĨŽŝ�ĞƐĐƌŝƚŽ�ƉĂƌĂ�ŵĂŶŝƉƵůĂƌ�Ž�ĚĞǀŝĐĞ͘ � EŽ�ƉƌſdžŝŵŽ�ĂƌƚŝŐŽ͕�ĐŽŵ�Ž�Yƚϱ�ǀĂŵŽƐ�ǀĞƌ�ĐŽŵŽ�ƌĞĂůŝnjĂƌ�ĐŽŵƵŶŝĐĂĕĆŽ�ƐĞƌŝĂů�ƵƚŝůŝnjĂŶĚŽ�Ž�Yƚ^ĞƌŝĂůWŽƌƚ�Ɛſ�ƋƵĞ ĚĞƐƚĂ�ǀĞnj�ƵƐĂŶĚŽ�ƵŵĂ�ŝŶƚĞƌĨĂĐĞ�ŐƌĄĨŝĐĂ�Ğ�Ž�ƋƵĞ�ŵĂŝƐ�ƉŽĚĞŵŽƐ�ĂŐƌĞŐĂƌ�ă�ŶŽƐƐĂ�ĂƉůŝĐĂĕĆŽ͘ � �ƐƉĞƌŽ�ƋƵĞ�ƚĞŶŚĂŵ�ŐŽƐƚĂĚŽ͕�ĂƚĠ�Ă�ƉƌſdžŝŵĂ͊� � � Referências � ϭ�ŚƚƚƉ͗ͬͬǁǁǁ͘ĞŵďĂƌĐĂĚŽƐ͘ĐŽŵ͘ďƌͬƉLJƚŚŽŶͲĂƌĚƵŝŶŽͲĐŽŵƵŶŝĐĂĐĂŽͲƐĞƌŝĂůͬ Ϯ�ŚƚƚƉ͗ͬͬĐůĞŝƚŽŶďƵĞŶŽ͘ĐŽŵͬƋƚϱͲĐŽŶŚĞĐĞŶĚŽͲƵŵͲǀĞƌĚĂĚĞŝƌŽͲĐĂŶŝǀĞƚĞͲƐƵŝĐŽͬ ϯ�ŚƚƚƉ͗ͬͬĐůĞŝƚŽŶďƵĞŶŽ͘ĐŽŵͬƋƚϱͲŝŶƐƚĂůĂĐĂŽͲĞŵͲĂŵďŝĞŶƚĞͲůŝŶƵdžͬ ϰ�ŚƚƚƉƐ͗ͬͬƋƚͲƉƌŽũĞĐƚ͘ŽƌŐͬǁŝŬŝͬYƚ^ĞƌŝĂůWŽƌƚ� ϱ�ŚƚƚƉ͗ͬͬǁǁǁ͘ĞŵďĂƌĐĂĚŽƐ͘ĐŽŵ͘ďƌͬĂƌĚƵŝŶŽͲƵŶŽͬ ϲ�ŚƚƚƉ͗ͬͬǁǁǁ͘ĞŵďĂƌĐĂĚŽƐ͘ĐŽŵ͘ďƌͬĂƌĚƵŝŶŽͲƉƌŝŵĞŝƌŽƐͲƉĂƐƐŽƐͬ ϳ�ŚƚƚƉ͗ͬͬĂƌĚƵŝŶŽ͘ĐĐͬĞŶͬdƵƚŽƌŝĂůͬ^ĞƌŝĂů�ǀĞŶƚ ϴ�ŚƚƚƉ͗ͬͬĐůĞŝƚŽŶďƵĞŶŽ͘ĐŽŵͬĂƌĚƵŝŶŽͲĞŶƚĞŶĚĞŶĚŽͲĞͲƵƐĂŶĚŽͲŽͲƐĞƌŝĂůĞǀĞŶƚͬ ϵ�ŚƚƚƉ͗ͬͬĚŽĐ͘Ƌƚ͘ŝŽͬƋƚͲϱͬƋƚƐĞƌŝĂůƉŽƌƚͲĐƌĞĂĚĞƌĂƐLJŶĐͲĞdžĂŵƉůĞ͘Śƚŵů ϭϬ�ŚƚƚƉ͗ͬͬĚŽĐ͘Ƌƚ͘ŝŽͬƋƚͲϱͬƋƚƐĞƌŝĂůƉŽƌƚͲĐǁƌŝƚĞƌĂƐLJŶĐͲĞdžĂŵƉůĞ͘Śƚŵů ϭϭ�ŚƚƚƉ͗ͬͬĚŽĐ͘Ƌƚ͘ŝŽͬƋƚͲϱͬƋŝŽĚĞǀŝĐĞ͘Śƚŵů ϭϮ�ŚƚƚƉ͗ͬͬůŝŶƵdž͘ĚŝĞ͘ŶĞƚͬŵĂŶͬϯͬƚĞƌŵŝŽƐ �ŽŵƵŶŝĐĂĕĆŽ�ƐĞƌŝĂů�ĐŽŵ��ƌĚƵŝŶŽ�ƵƚŝůŝnjĂŶĚŽ�Yƚϱ��ŽŶƐŽůĞ��ƉƉůŝĐĂƚŝŽŶ�ƉŽƌ��ůĞŝƚŽŶ��ƵĞŶŽ͘��ƐƚĂ�ŽďƌĂ�ĞƐƚĄ ƐŽď�Ă�ůŝĐĞŶĕĂ��ƌĞĂƚŝǀĞ��ŽŵŵŽŶƐ��ƚƌŝďƵŝĕĆŽͲ�ŽŵƉĂƌƚŝůŚĂ/ŐƵĂů�ϰ͘Ϭ�/ŶƚĞƌŶĂĐŝŽŶĂů͘ Cleiton Bueno ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� 7ZHHWDU 21 POSTS SIMILARES MSP430 Driver Library ǀĞũĂн KůĄ�ĐĂƌŽ ůĞŝƚŽƌ͊ �ŽŶƚŝŶƵĂŶĚŽ�ĐŽŵ�Ă�ƐĠƌŝĞ�ĚĞ�ĂƌƚŝŐŽƐ�ƐŽďƌĞ Ă�ĨĂŵşůŝĂ�ĚĞ�ŵŝĐƌŽĐŽŶƚƌŽůĂĚŽƌĞƐ�D^WϰϯϬ͕ ŶĞƐƚĞ�ŝƌĞŵŽƐ�ĂƉƌĞƐĞŶƚĂƌ�Ž�D^WϰϯϬ��ƌŝǀĞƌ >ŝďƌĂƌLJ͘���K�D^WϰϯϬ��ƌŝǀĞƌ͘͘͘� Arduino - Controle de uma lâmpada com LDR ǀĞũĂн EŽ�ĂƌƚŝŐŽ�ĂŶƚĞƌŝŽƌ�ĂƉƌĞƐĞŶƚĂŵŽƐ�ĐŽŵŽ ůŝŐĂƌ�ƵŵĂ�ůąŵƉĂĚĂ����ƵƚŝůŝnjĂŶĚŽ�Ƶŵ�ƌĞůġ͘ �ĂŶĚŽ�ĐŽŶƚŝŶƵŝĚĂĚĞ�Ă�ĞƐƐĞ�ĂƐƐƵŶƚŽ͕�ĂŐŽƌĂ ǀĂŵŽƐ�ĞdžƉůŝĐĂƌ�ĐŽŵŽ�ĂĐŝŽŶĂƌ ĂƵƚŽŵĂƚŝĐĂŵĞŶƚĞ�ƵŵĂ�ůąŵƉĂĚĂ ĐŽŶĨŽƌŵĞ͘͘͘� Embedded Linux Build Systems ǀĞũĂн K�ƵƐŽ�ĚŽ�>ŝŶƵdž�ĐŽŵŽ�ƐŝƐƚĞŵĂ�ŽƉĞƌĂĐŝŽŶĂů Ğŵ�ĚŝƐƉŽƐŝƚŝǀŽƐ�ĞůĞƚƌƀŶŝĐŽƐ�ĞŵďĂƌĐĂĚŽƐ ǀĞŵ�ĐƌĞƐĐĞŶĚŽ�ĐĂĚĂ�ǀĞnj�ŵĂŝƐ͘�WŽƌĠŵ͕�Ƶŵ ƐŝƐƚĞŵĂ�ďĂƐĞĂĚŽ�Ğŵ�ůŝŶƵdž�ƉŽƐƐƵŝ�ĚŝǀĞƌƐŽƐ ĂƌƚĞĨĂƚŽƐ�ĚĞ͘͘͘� COMENTÁRIOS �ƉĂŝdžŽŶĂĚŽ�ƉŽƌ�ƚĞĐŶŽůŽŐŝĂ�Ğ�ĞŶƚƵƐŝĂƐƚĂ�>ŝŶƵdž͕�ŵĂŝƐ�ĚĞ�ϭϬ�ĂŶŽƐ�ĚĞ�ĞdžƉĞƌŝġŶĐŝĂƐ�Ğŵ�>ŝŶƵdž͕�ĐƵƌŝŽƐŽ ĂŽ�ŵƵŶĚŽ�ĞŵďĂƌĐĂĚŽ�ĚĞŶƚƌĞ�ĞůĞƐ�;�ƌĚƵŝŶŽ͕�ZĂƐƉďĞƌƌLJ�W/͕��ĞĂŐůĞ�ŽŶĞ��ůĂĐŬ�ĞŶƚƌĞ�ŽƵƚƌŽƐͿ ĂƉƌŽdžŝŵĂĚĂŵĞŶƚĞ�ϴ�ĂŶŽƐ�ĚĞĚŝĐĂĚŽ�Ă�ƉƌŽŐƌĂŵĂĕĆŽ�ƋƵĞ�ǀĂƌŝĂ�ĞŶƚƌĞ�;�͕�WLJƚŚŽŶ͕�Yƚ�Ğ�ŵƵŝƚŽ�ƐŚĞůů ƐĐƌŝƉƚͿ͘�'ƌĂĚƵĂĚŽ�Ğŵ��ŶŐĞŶŚĂƌŝĂ�ĚĂ��ŽŵƉƵƚĂĕĆŽ�ĐŽŵ�ġŶĨĂƐĞ�Ğŵ�ƌŽďſƚŝĐĂ�Ğ�ƐŝƐƚĞŵĂƐ ĞŵďĂƌĐĂĚŽƐ͘�/ŶƚĞƌĞƐƐĞƐ�ĂƚƵĂŝƐ͗�ZdK^͕�<ĞƌŶĞů��ĞǀĞůŽƉŵĞŶƚ͕�/Žd͕�W�/�Ğ��ŶĚƌŽŝĚ͘ 7Curtir 6KDUH ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� Links ^ŽďƌĞ� �ǀĞŶƚŽƐ� sşĚĞŽƐ� �ŽǁŶůŽĂĚƐ� >ŽŐŝŶ� �ŽŶƚĂƚŽ� Comunidade ^ĞũĂ��ŽůĂďŽƌĂĚŽƌ� KƉŽƌƚƵŶŝĚĂĚĞƐ� ^ŝƚĞƐ�Ğ��ůŽŐƐ� Publicidade �ŶƵŶĐŝĞ��ŽŶŽƐĐŽ� Fique por dentro ZĞŐŝƐƚƌĞͲƐĞ� EĞǁƐůĞƚƚĞƌ� ��&RPHQWiULRV (PEDUFDGRV �(QWUDU� �&RPSDUWLOKDU⤤ 2UGHQDU�SRU�0HOKRU�DYDOLDGR 3DUWLFLSH�GD�GLVFXVVmR��� 5HVSRQGHU 0'.� ���PHVHV�DWUiV 0XLWR�ERP�R�DUWLJR��8WLOL]R�4W�D�DQRV��PDV�QXQFD�SHQVHL�HP�XVDU�HOH�SDUD�LQWHUDJLU�FRP $UGXLQR��Mi�PH�UHQGHX�DOJXPDV�LGHLDV��� � △ ▽ � 5HVSRQGHU &OHLWRQ�%XHQR� � ���PHVHV�DWUiV>�0'. 4XH�ERP�TXH�JRVWRX�0'.��2�4W�DEUH�PXLWDV�RSRUWXQLGDGHV�SDUD�FRPXQLFDomR��H LVVR�IRL�DSHQDV�XPD�SHTXHQD�GHPRQVWUDomR��YRFr�QmR�SHUGH�SRU�HVSHUDU�SHOR�TXH YHP�SRU�DH��� � △ ▽ � $VVLQDU�IHHG✉ $GLFLRQH�R�'LVTXV�QR�VHX�VLWH�$GG�'LVTXV�$GGd 3ULYDFLGDGHὑ� �5HFRPPHQG &RPSDUWLOKDU�¾ &RPSDUWLOKDU�¾ ���������� &RPXQLFDomR�VHULDO�FRP�$UGXLQR�XWLOL]DQGR�4W��&RQVROH�$SSOLFDWLRQ���(PEDUFDGRV���6XD�IRQWH�GH�LQIRUPDo}HV�VREUH�6LVWHPDV�(PEDUFDGRV KWWS���ZZZ�HPEDUFDGRV�FRP�EU�FRPXQLFDFDR�VHULDO�FRP�DUGXLQR�XWLOL]DQGR�TW��FRQVROH�DSSOLFDWLRQ� ����� �ĞƐĞŶǀŽůǀŝĚŽ�ƉŽƌ���ŵďĂƌĐĂĚŽƐ�Ͳ�dŽĚŽƐ�ŽƐ��ŝƌĞŝƚŽƐ�ZĞƐĞƌǀĂĚŽƐΠ
Compartilhar