USB seri bağlantı noktasına tty. * Bağlantı noktası tarafından değil, aygıt kimliğiyle erişmenin bir yolu var mı?


17

Linux USB seri aygıtlarında, seri bağlantı noktasına iki takma ad oluşturun:
/dev/tty*ve/dev/serial/by-id/<my_usb_device_id>

OSX'te USB bağlantı noktası kimliği ile bir seri bağlantı noktası tanımlamanın bir yolu var mı? Hem System Profiler'da hem de kullanarak ioreg -p IOUSBkimliği görebiliyorum, ancak bu beni bu kimliği kullanarak bağlanmaya daha yakın hale getirmiyor.

Birkaç donanım geliştiriyoruz ve farklı bir cihazı her bağladığımda bunları test etmek acı verici bir test yazılımı seri port yapılandırmasını doğrulamam gerekiyor, çünkü OSX'te tty.*bağlantı noktası adı bilgisayarımdaki bağlantı noktasına bağlı, cihazda değil. Linux çalıştıran çocuklar /dev/serial/by-id/<my_usb_device_id>, farklı cihazlar arasında otomatik olarak ayrım yapmak için bağlantı noktasını mutlu bir şekilde kullanıyor .

Yanıtlar:


2

Sahip olduğum bir FTDI köprüsü için, seri numarası aygıt adında zaten görünüyor: Linux'ta /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DA00AG57-if00-port0(bazılarına karşılık gelir /dev/ttyUSBx) /dev/cu.usbserial-DA00AG57ve /dev/tty.usbserial-DA00AG57macOS olarak ve olarak görünür. ( Ve arasındaki farklar için /programming//a/8632603/4896937 adresine bakın .)tty.*cu.*

Ne yazık ki, üretken köprü için, sizinki gibi bir sorun hala geçerlidir: /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0(seri numarası içermeyen) olarak görünen bir cihaz basitçe /dev/cu.usbserialve /dev/tty.usbserialmacOS'ta (Sistem Profiler bile bunun için bir seri numarası vermez). Eğer fişini taktıysam ne olacağını kim bilebilir ki.

Belki satıcıdan bağımsız olan daha genel bir cevap var, ancak bazı cihazların bir seri numarası bildirmeyebileceği konusunda uyarılmalıdır.


Benim için /dev/tty.usbmodemFD121 ve /dev/tty.usbmodemFA131 olarak görünüyorlar. Numara doğrudan dizüstü bilgisayarımdaki USB bağlantı noktasına bağlıdır. Sistem bilgisi, bellenimleri tarafından ayarlanan cihazlar için doğru kimliği gösterir. Her iki seri de STM32F2 / F4 işlemciler tarafından oluşturulur.
Johan

2

Aslında, kullanarak aygıt kimliği / seri numarasından seri bağlantı noktası adına eşleme bulabilmeniz gerekir ioreg. Bu komutu deneyin:

ioreg -r -c IOUSBHostDevice -l

Tüm USB ana cihazlarını yazdırır ve tüm özellikleri her cihazın alt ağacından yazdırır. Cihazınızı kimliğine veya seri numarasına göre en üst düzeyde bulabilmeniz gerekir. Bir kez bulduğunuzda, onun alt ağacını tarayabilmeli ve sonunda bir sınıf nesnesi bulabilmelisiniz IOSerialBSDClient. Bu, istediğiniz özelliği içerir IODialinDevice.

Daha sonra bunu programlı olarak yapmak isterseniz , yukarıdaki çıktının plist sürümünü çıktılayacak olan komuta -aseçenek ekleyebilirsiniz ioreg. Daha sonra bunu gibi bir kütüphaneyle ayrıştırabilirsiniz plistlib.

Tam ioregçıktıyı okumak biraz zor olduğundan , bunu görselleştirmek için IORegistryExplorer uygulamasını kullanmak yararlı olabilir ! Bu, XCode'un Apple geliştirici sitesindeki indirmeleri arayarak bulabileceğiniz "Donanım IO Araçları" paketinde mevcuttur . Cihazımda şöyle görünüyor:

IORegistryExplorer örneği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.