Tôi có giới hạn hiển thị đối với hệ điều hành Mac OS X và bây giờ tôi đã bắt đầu sử dụng Xcode và đang nghiên cứu về bộ I/O. Tôi cần tạo một chương trình trong Xcode dưới công cụ dòng lệnh để liệt kê tất cả các thiết bị USB được kết nối trong hệ thống Mac. Những người có kinh nghiệm trước đây, xin hãy giúp tôi. Nếu bất cứ ai có thể cung cấp cho tôi với mã mẫu sau đó nó sẽ được sử dụng tuyệt vời, như tôi đang tìm kiếm điểm khởi đầu.Làm cách nào để tạo chương trình liệt kê tất cả các thiết bị USB trong máy Mac?
Trả lời
Bạn có thể thích ứng USBPrivateDataSample yêu cầu của bạn , mẫu thiết lập trình thông báo, liệt kê các thiết bị hiện được đính kèm, sau đó đợi thiết bị đính kèm/tháo rời. Nếu bạn làm như vậy, bạn sẽ muốn xóa usbVendor
và usbProduct
từ điển phù hợp, vì vậy tất cả các thiết bị USB được kết hợp.
Cách khác, bạn có thể sử dụng IOServiceGetMatchingServices
để nhận trình lặp cho tất cả các dịch vụ phù hợp hiện tại, sử dụng từ điển được tạo bởi IOServiceMatching(kIOUSBDeviceClassName)
.
Đây là một mẫu ngắn (mà tôi chưa bao giờ chạy):
#include <IOKit/IOKitLib.h>
#include <IOKit/usb/IOUSBLib.h>
int main(int argc, const char *argv[])
{
CFMutableDictionaryRef matchingDict;
io_iterator_t iter;
kern_return_t kr;
io_service_t device;
/* set up a matching dictionary for the class */
matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (matchingDict == NULL)
{
return -1; // fail
}
/* Now we have a dictionary, get an iterator.*/
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &iter);
if (kr != KERN_SUCCESS)
{
return -1;
}
/* iterate */
while ((device = IOIteratorNext(iter)))
{
/* do something with device, eg. check properties */
/* ... */
/* And free the reference taken before continuing to the next item */
IOObjectRelease(device);
}
/* Done, release the iterator */
IOObjectRelease(iter);
return 0;
}
Nếu bạn chạy system_profiler SPUSBDataType
nó sẽ liệt kê tất cả các thiết bị USB được kết nối với hệ thống, sau đó bạn có thể tương tác với dữ liệu đó bằng cách đổ nó vào tệp văn bản hoặc đọc nó từ lệnh vào ứng dụng và làm việc với nó .
nhờ sự giúp đỡ của bạn. – Dili
Bạn chỉ cần truy cập IOKit Registry. Bạn cũng có thể sử dụng công cụ ioreg
để thực hiện việc này (ví dụ: chạy công cụ này qua system()
hoặc popen()
). Nếu không thì bạn ít nhất có thể sử dụng nó để xác minh mã của bạn:
Thông tin về ioreg
công cụ: danh sách
$ man ioreg
Nhận các thiết bị USB:
$ ioreg -Src IOUSBDevice
Cảm ơn sự giúp đỡ của bạn. Nó sẽ rất hữu ích để xác minh. Nhưng tôi cần một chương trình trong xcode (trong c + +) cho danh sách các thiết bị USB – Dili
Bạn đã đọc một phần về cách sử dụng 'system()' hoặc 'popen()' để thực thi công cụ ioreg từ bên trong mã của bạn? –
Tôi đã đọc nó. nhưng tôi đã looing cho một cái gì đó giống như mã được đưa ra dưới đây bởi hausturkun. điều này cũng hữu ích. nhưng nếu bạn đưa ra một số mã mẫu như tôi đã nói nó sẽ là tốt nhất. – Dili
- 1. windows - Cách liệt kê tất cả đường dẫn thiết bị của thiết bị USB được kết nối?
- 2. Làm cách nào để liệt kê/liệt kê tất cả các ứng dụng đã cài đặt trong Windows XP?
- 3. Tôi làm cách nào để liệt kê tất cả các tiến trình đang chạy trong Windows?
- 4. Tạo thiết bị USB ảo
- 5. liệt kê tất cả các quy trình trong iOS 5.0.1
- 6. Liệt kê tất cả virtualenv
- 7. Liệt kê các thiết bị USB HID bằng SetupAPI trong ứng dụng 64 bit
- 8. Làm cách nào để liệt kê tất cả các yanks trong các emacs?
- 9. Liệt kê tất cả các kho SVN
- 10. Truy cập thiết bị iOS qua USB trên máy mac
- 11. Làm thế nào để bạn liệt kê tất cả các tiến trình con trong python?
- 12. Liệt kê tất cả các chỉ mục
- 13. Psql liệt kê tất cả các bảng
- 14. Làm cách nào để liệt kê tất cả các cụm được nạp?
- 15. Liệt kê tất cả các hội đồng .NET có sẵn
- 16. Làm thế nào để lập trình liệt kê tất cả các thuộc tính được xác định?
- 17. Làm cách nào để liệt kê tất cả các bảng trong lược đồ trong Oracle SQL?
- 18. Làm thế nào để liệt kê tất cả các mục của tệp tar trong java?
- 19. Tìm các thiết bị USB có sẵn Mac OS X
- 20. Làm cách nào để liệt kê tất cả các miếng đệm trong etherpad-lite
- 21. Cách liệt kê tất cả các ngày giữa hai ngày
- 22. Làm cách nào để liệt kê tất cả các hoạt động WCF đang thực thi?
- 23. liệt kê các thiết bị bluetooth được kết nối?
- 24. Làm thế nào để viết một liệt kê của tất cả các chức năng tính toán?
- 25. Liệt kê tất cả các bảng trong postgresql information_schema
- 26. Làm cách nào để liệt kê tất cả các trình kích hoạt của cơ sở dữ liệu trong sqlite?
- 27. Làm cách nào để liệt kê tất cả các chuỗi được quản lý bằng WinDBG?
- 28. AppleScript - Liệt kê tất cả các phông chữ
- 29. Liệt kê tất cả các trang web trong IIS C#
- 30. Liệt kê tất cả các thư mục trong thư mục
Cảm ơn sự giúp đỡ của bạn. Nó rất hữu ích và điều này tương tự như những gì tôi đang tìm kiếm. khi tôi xây dựng nó nhưng mã này được hiển thị lỗi như lỗi: IOServiceGetmatchingServices được tham chiếu từ _main trong main.o ... Lỗi tương tự cho _IOObjectRelease, _IOServiceMatching, _IOIteratorNext, _kIOMasterPortDefault..I đã tạo một dự án theo xcode-> Command line tool-> standard C++. Nếu bạn có thể giúp đỡ, tôi sẽ rất biết ơn bạn – Dili
Lỗi mà tôi gặp khi xây dựng ................. Ký hiệu không xác định: "_kIOMasterPortDefault", được tham chiếu từ: _kIOMasterPortDefault $ non_lazy_ptr trong main.o "_IOServiceGetMatchingServices", tham chiếu từ: _main trong main.o "_IOObjectRelease", tham chiếu từ: _main trong main.o _main trong main.o "_IOServiceMatching", tham chiếu từ: _chính trong chính.o "_IOIteratorNext", được tham chiếu từ: _chính trong chính.o ld: (các) biểu tượng không tìm thấy collect2: ld trả về 1 trạng thái thoát – Dili
Bạn cần sử dụng khung công cụ I/O Kit (ví dụ 'IOKit.framework') và Core Foundation trong dự án của bạn, hoặc chiến thắng này ' t liên kết. – Hasturkun