Kysymys:
Kuinka Arduino IDE saa '' Hallitustiedot ''?
n00dles
2017-06-04 18:46:58 UTC
view on stackexchange narkive permalink

Haluan, että C # -sovellukseni valitsee oikean COM-portin automaattisesti merkkijonojen tasaustarkastuksen avulla Getdufo-tyyppisen pyynnön perusteella Arduino-kortille.

Tiedän, että Arduino IDE voi saada tietoa taululta;

Työkalut > GetBoardInfo

enter image description here

Mutta en tiedä miten saada se luonnoksen avulla tai jos se on edes mahdollista.

Onko tämä jotain, joka voidaan lukea taululta, vai onko se USB-asia. Jos se on USB-asia, minun on hankittava tiedot osoitteesta GetUSBDevices.DeviceID tai mistä tahansa, hanki sitten USB-laitteen käyttämä sarjaportti, joka todennäköisesti toimisi, mutta haluaisin mieluummin tehdä kaikki serialPort -palvelun kautta.

Luulen, että haluat USB-toimittajan ja laitetunnukset. Näin käyttöjärjestelmät valitsevat ajurit eri USB-laitteille. Mutta saatat haluta enemmän, jos sinulla on useita samanlaisia ​​USB-liitäntöjä (esimerkiksi FTDI-siruja) samaan käyttöjärjestelmään / tietokoneeseen. Oletan, että siksi kysyt "Arduino-korttitiedoista"?
Jos muutat Windows-portin Com-porttia, se jatkuu, sinun ei tarvitse etsiä
Äänestän tämän kysymyksen sulkemisesta aiheen ulkopuoliseksi, koska kyse on tietokoneella käynnissä olevasta C # -ohjelmasta.
@LookAlterno _En tiedä_, se on kysymys, jonka Arduinon käyttäjät näyttävät kohtaavan jossain vaiheessa. Minua ei häiritse, jos se suljetaan, mutta uskon aidosti, että se on hyödyllinen kysymys erityisesti Arduino-käyttäjille, koska sillä on hyvät katselunumerot täällä. Sen ytimessä se on Arduino-kysymys, vaikka vastaus olisi yleisempi. Se riippuu kuitenkin komissiosta ja mahdollisesta etusijasta.
Kaksi vastused:
Johnny Mopp
2017-06-05 18:11:12 UTC
view on stackexchange narkive permalink

Tarkasteltaessa Arithino IDE: n lähdekoodia githubissa näyttää siltä, ​​että he kutsuvat suoritettavaa tiedostoa (listComPorts.exe). Joten luulen, että et voi saada näitä tietoja sarjakuvien kautta.

Tässä on C # -sovellus, joka käyttää WMI: tä ja joka voi saada portin, vidin ja pid:

  nimitila PortTest { class Program {// Helper-toiminto regex-haun käsittelemiseksi staattinen merkkijono regex (merkkijono, merkkijonoteksti) {Regex re = new Regex (kuvio); Ottelu m = re.Match (teksti); if (m.Success) {palauta m.Value; } else {return null; }} staattinen void Main (merkkijono [] args) {// Käytä WMI: tä saadaksesi tietoja ManagementObjectSearcher searcher = new ManagementObjectSearcher ("root \\ CIMV2", "SELECT * FROM Win32_PnPEntity WHERE ClassGuid = \" {4d36e978-e325-11ce-bfc1 -08002be10318} \ ""); // Hae kaikista sarjaliitännöistä foreach (ManagementObject queryObj in searcher.Get ()) {// Jäsennys tiedot, jos (null! = QueryObj ["Nimi"]) {Console.WriteLine ("Port =" + regex (@ "( \ (COM \ d + \)) ", kyselyObj [" Nimi "]. ToString ())); } // PNPDeviceID = USB \ VID_1A86&PID_7523 \ 5&1A63D808&0&2 if (null! = QueryObj ["PNPDeviceID]]) {Console.WriteLex (" VID = "+ Reg (" VID = "+ Reg (" VID = "+ Reg (" VID = "+ Reg (" VID = "+ ((VID =" +) queryObj ["PNPDeviceID"]. ToString ())); Console.WriteLine ("PID =" + regex ("PID _ ([0-9a-fA-F] +)", kyselyObj ["PNPDeviceID"]. ToString ())); }} Console.WriteLine ("Valmis"); int c = Konsoli.Lue (); }}}  

Sieltä näyttää siltä, ​​että se etsii lisätietoja online-tietokannasta. Katso: getBoardWithMatchingVidPidFromCloud () -toiminto.

IMHO Koska Arduino IDE 1.6.8 listComPorts ei ole enää osa arduino IDE: tä
@jantje He saattavat käyttää JNI: tä nyt, mutta arvaan, että taustalla oleva prosessi on sama. Platform.javalla on 2 natiivitoimintoa `ResolDeviceAttachedToNative` ja` listSerialsNative`, mutta en löydä niiden lähdettä.
edit: Ymmärsin väärin kommenttisi. Luulen, että tämä on koodi https://github.com/arduino/Arduino/blob/master/arduino-core/src/processing/app/Platform.java#L231, jota he käyttävät ResolDeviceAttachedToNative
Olen tutkinut tätä monta kertaa ja näyttää siltä, ​​että se on tämä https://github.com/arduino/libserialport, mutta sitten taas ei
Kiitos Johnny; Etsin itse asiassa WMI: n käyttöä tietojen saamiseksi, joten on mukavaa nähdä, että se on muotoiltu, kuinka tarvitsen sitä :)))) Tämä toimii missä tahansa Windows-versiossa, eikö?
@jantje Jos he käyttävät sitä, se käyttää alemman tason puheluita kuin WMI. Koska Javan sarjaporttikäsittely ei ole kovin hyvää, olisi järkevää käyttää sitä.
@n00dles Sen pitäisi. WMI on ollut käytössä Win2K: n jälkeen.
Faig
2018-01-24 19:49:05 UTC
view on stackexchange narkive permalink

Katso täältä https://todbot.com/blog/2012/03/02/listcomports-windows-command-line-tool-for-usb-to-serial/ Artikkeli on oikeassa siitä, mitä etsit. Kiitos @Johnny Moppille, hakusanalla "listComPorts" auttoi minua.

Lainaus artikkelista:

Kuinka se toimii

C- ja VBS-versiot käyttävät molempia WMI-infrastruktuuria, joka on ollut käytössä Windows 2000: n jälkeen, kysyttäessä koneelta sen konfiguroiduista PnP-laitteista. WMI on valtava datarakenne, joka sisältää lähes kaikki Windows-tiedot. Paitsi näyttää olevan hyvää tietoa COM-porteista. Vaikka WMI: ssä on "Win32_SerialPort" -taulukko, joka sisältää tietoja vain laitteiston sarjaportista, ei USB-sarja -sovittimia. Sen sijaan nämä kaksi työkalua tarkastelevat "Win32_PnPEntity" -taulukkoa. Vaikka tässä taulukossa luetellaan USB-sarjaadapterit, se ei sisällä sovittimen USB- tai PNP-ID: n asianmukaista kartoitusta COM-porttiin. Sen sijaan nämä työkalut tekevät merkkijonohakun "Tekstitys" -kentästä merkkijonolle "(COMn)", jossa "n" on luku. Se on uskomaton hakkerointi, mutta näyttää toimivan.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...