Olen Javalla kehitellyt softaa, joka lukee Arduinolta dataa USB:n kautta. Windowsilla olen päässyt RXTX-kirjaston avulla kiinni Arduinon USB-porttiin nimellä COM3. Miten tähän pääsee käsiksi Ubuntulla?
lsusb näyttää sen tiedoilla Bus 003 Device 003: ID 2341:0042.
Et ole missään vaiheessa lukenut dataa suoraan USB-portin kautta, vaan olet kytkenyt USB-porttiin jonkin sarjaporttiadapterin ja lukenut dataa sarjaportin kautta. Tämä on tärkeää ymmärtää, koska USB-portti ja sarjaportti ovat teknisesti aivan erilaiset.
Voit käyttää myös Linuxissa RXTX-kirjastoa, ja sarjaportin polku on mahdollisesti /dev/ttyUSB0 tai vastaava.
Jeps, joo, eli sarjaporttia tässä käsiteltiin.
Ihmeellistä kyllä, en löydä ollenkaan portteja tuolla ohjelmalla. Jollain oli samanlainen ongelma, joka nähtävästi korjaantui kun suoritti korkeemmilla oikeuksilla. Sudolla ei ainakaan toiminut mulla.
Pitäisikö muuten komennon ls -l /dev/tty* näyttää kaikki USB-laitteet? YLöytyy montakymmentä tty{joku-numero} laitetta, mutta yhdessäkään ei ole USB:tä.
Jos et löydä laitetta, vertaa /dev/-hakemiston sisältöä ennen ja jälkeen laitteen kiinnityksen. Lisäksi voit katsoa, mitä dmesg-komennon tulosteen lopussa lukee laitteen kiinnityksen jälkeen. On toki mahdollista, että Ubuntusta puuttuu laitteen ajuri tai että liittäminen koneen ollessa käynnissä ei jostain syystä toimi, mutta hieman kyllä ihmettelen, jos näin on.
Macro kirjoitti:
Pitäisikö muuten komennon ls -l /dev/tty* näyttää kaikki USB-laitteet?
Ei, vaan kaikki /dev/tty-alkuiset tiedostot, mutta kyllä näihin sisältyisi myös /dev/ttyUSB0, jos sitä tarkoitit.
dmesg tuon nimen liitettäessä kertoo, mikäli sopivat ajurit on. Luultavammin nuo Ubuntussa oletuksena on.
Omat Arduinot ovat näkyneet joko /dev/ttyUSB? tai /dev/ttyACM? -nimillä. Tuo riippuu Arduinon versiosta (ja siinä käytetystä sarjaporttiadapterista). Toinen oli Arduino Duemilanove ja toinen olisiko ollut joku Unon versio. Ei nyt ole käsillä niin ei pääse tarkistamaan.
Sinänsähän ohjelmoijan kannalta ei ole olennaista sattuuko siellä toisessa päässä olemaan sajarporttiadapteri (ja oikea sarjaportti) vai ei. Yhtä hyvin mikrokontrollerin kanssa voisi jutella suoraankin niin että mikrokontrolleri vaan näyttäisi sarjaportilta.
Olennaista lienee että USB-laitteiden kanssa on yleensä helpompi keskustella käyttäen laitteen ajuria kuin suoraan USB-tasolla. Ja jos laite käyttää sarjaporttiprofiilia niin silloin helpointa on käyttää sitä ajurin tarjoamaa virtuaalisarjaporttia.
Arduino nähtävästi näkyikin nimellä /dev/ttyACM0. Tätä ei kuitenkaan voinut lukea suoraan, vaan piti luoda symlinkki komennolla ln -s /dev/ttyACM0 /dev/ttyS89. Tähän pääsin Javalla kirjoittamaan, mutta sitä ei pystynyt lukemaan...
Vaikka Linux onkin ihan hauska järjestelmänä, on se kyllä vielä vähän alkukantainen joltain osin...
Oletko tarkistanut tuon laitetiedoston omistajan, ryhmän ja oikeudet?
Macro kirjoitti:
Vaikka Linux onkin ihan hauska järjestelmänä, on se kyllä vielä vähän alkukantainen joltain osin...
Niinpä niin, hyvä aina syyttää Linuxia. ^^ Esimerkiksi tuo symlinkin tarve ei takuulla ole Linuxin vika vaan ehkäpä RXTX-kirjaston puute.
Edit. Oliko jokin erityinen syy yrittää poistaa tämä keskustelu? Mitä siitä nyt tulee, jos kaikki vain poistavat keskustelunsa?
Aihe on jo aika vanha, joten et voi enää vastata siihen.