Vraag & Antwoord

Programmeren

[c++][linux] serial poort uitlezen

10 antwoorden
  • hallo, Ik moet binnenkort een programma schrijven dat informatie die over de compoort binnenkomt moet gaan verwerken. Ik hoef dus alleen maar te LEZEN van de compoort. Ik bne op zoek naar een stukje voorbeeldcode waarin, in linux, de seriele poort wordt uitgelezen. Ik weet dat hierover op internet meer dan genoeg te vinden is, maar op de een of andere reden werkt het allemaal niet zo... Ik ben op zich redelijk ervaren in C++, maar dit wil niet echt. Is hier iemand die misschien weet hoe dit moet? Bvd, plors PS. voor de linuxusers onder ons. je zou toch denken dat een "cat /dev/tts/0" heerlijk info zou moeten gaan spuien. Alleen gebeurt er niets.
  • Hoi Waarvan moet je data inlezen via de compoort ? groetjes, Yvonne
  • Hoi Yvonne, Het gaat om een apparaat waar werknemers kunnen inklokken met een "sleutelhanger" en dan aan kunnen geven of ze het bedrijf binnengaan of verlaten. De enige data die dus binnenkomt is een ID ( een 10-cijferig nummer dacht ik ) en een 0 (voor verlaten) of een 1 (voor binnenkomen). Vrij eenvoudig dus allemaal. Vanmiddag ga ik even naar het bedrijf toe, dus als je echt serienummers en/of specificaties wilt van dit apparaat kan ik daar voor zorgen. Ik ben echter meer op zoek naar een "algemene oplossing". Maar jij was toch VB-programmeur? Of heb je ook ervaring met C++/Linux?
  • Hoi Ik was gewoon nieuwsgierig waarvoor je het nodig had. En inderdaad gebruiken wij alleen VB. Maar als je met een apparaat gaat testen, gebruik dan desnoods eerst even hyperterm in windows, zodat je weet dat het apparaat inderdaad een record zend, en de kabel goed is. En ga daarna pas ontvangen met je eigen software. Maar afijn, dit zal wel een onnodige tip zijn want dat was je vast al van plan, of moet je zonder apparaat eerst een simulatie toepassen aan de hand van de gegevens die je krijgt? Succes ermee. groetjes, Yvonne ps Vergeef me nijn nieuwsgierigheid, maar ik vind dit een interessant onderwerp
  • cat /dev/ttyS0 waarschijnlijk wel 8) Maar je zult ook nog even rekening moeten houden met baudrate, stopbits etc. Gebruik het programma [i:80bb919e52]minicom[/i:80bb919e52] ipv cat. Als je data pure tekst is, zou je gegevens moeten zien, anders waarschijnlijk ook maar dat kun je niet zo goed lezen :) In Linux (C) open je een seriele poort op dezelfde manier als een file (met [b:80bb919e52][i:80bb919e52]open[/i:80bb919e52][/b:80bb919e52]). Daarna configureer je de filedescriptor voor de juiste baudrate etc (ik dacht met fcntl, maar dat zou ik even na moeten kijken). Overigens is er genoeg code te vinden op het internet (ik heb afgelopen maand ook ergens een stukje vandaan gevist); even zoeken dus.
  • [quote:98383aa46a="Wim Sturkenboom"]cat /dev/ttyS0 waarschijnlijk wel 8) [/quote:98383aa46a] Helaas, dit is gewoon een softlink naar /dev/tts/0, dus dit is niet de oplossing. Dat van die baudrates e.d. weet ik, maar momenteel ben ik al heel blij als ik uberhaupt ook maar IETS zie gebeuren als ik (bijvoorbeeld ) een seriele muis beweeg. Als ik mijn usb device uitlees mbv van cat zie ik wel allemaal data over het scherm vliegen als ik de usbmuis beweeg, maar als ik dus hetzelfde doe voor een seriele muis ( of wat dan ook voor serieel apparaat ) zie ik niets gebeuren. Enig idee waar dit aan kan liggen? En inderdaad, code genoeg te vinden, maar ik denk dat dit toch eerst goed moet zijn voordat ik me druk hoef te maken over de preciese inhoud ervan.
  • Als je baudrate etc verkeerd staan hoef je echt niets te zien. Verder kan het nog een kwestie van rechten zijn. Onder RH moet ik of lid worden van de groep uucp of ik moet de rechten voor others goed zetten. Maar ja, dat zou eigenlijk moeten resulteren in een foutmelding als je een cat doet. Wat is overigens een [i:e2667f616b]of wat dan ook voor serieel apparaat[/i:e2667f616b]? Is de kabel voor dat apparaat goed? Misschien 2-3 swap (nul-modem) nodig?
  • rechten enzo zijn geen probleem. Voor de zekerheid test ik momenteel als root. Gisteren ben ik op het bedrijf zelf geweest en qua hardware zti alles prima. Ze draaien momenteel op Windows en daaronder werkt het prima. Mbv van Knoppix heb ik alles eens van de Linuxkant bekeken en ook toen kreeg ik niets uit die seriele poort. Thuis heb ik gewoon een oude seriele muis aangesloten en probeer ik daarmee wat signaaltjes naar de seriele poort te sturen. Alleen werkt het dus niet om een of andere reden. Support voor "dumb" standard Serial Port staat aan in de kernel en dat zou toch genoeg moeten zijn? trouwes, ik zou toch altijd iig iets moeten zin in /dev/ttyS0 ongeacht de baudrate e.d. ?
  • In gentoo-linux heb ik een device [i:493ca859ac]/dev/mouse[/i:493ca859ac] wat weer een symlink is naar [i:493ca859ac]/dev/misc/psaux[/i:493ca859ac] (PS/2 muis). Als ik die cat krijg ik het een en ander aan 'willekeurige' informatie (ondanks dat ik X gebruik). Voor informatie over je serial divices kun je in [i:493ca859ac]/proc/tty/[/i:493ca859ac] raadplegen.
  • Heb wel enige ervaring met het lezen/schrijven onder linux met C met de LPT. [code:1:6bb6482ee0] /* Eerst ff include file laden: */ #include<asm/io.h> /* poort openen: */ ioperm(nPort,1,1) /* dan: */ inb(nPort) [/code:1:6bb6482ee0] nPort is volgens mij 0x3f8 (COM1) en 0x2f8(COM2) Zorg er wel voor dat dit progje suid heeft (chmod +s) want omdat de port geopend moet worden (ioperm) heb je dit nodig (of gewoon progje executen als root natuurlijk). Hoop dat je hiermee verder komt. GRTZ, René

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.