2013-10-23 20 views
7

Gần đây tôi đã cắm thiết bị nhúng USB (mbed lpc1768) bằng cáp USB thông thường vào máy tính để bàn Windows 7. Theo các tài liệu đi kèm với chương trình đang chạy trên thiết bị, nó giao tiếp với máy chủ (máy tính để bàn) qua Cổng nối tiếp USB ảo.Giao tiếp với thiết bị USB qua “Cổng nối tiếp ảo USB” bằng C#?

Tôi bắt đầu từ đâu nếu tôi cần đọc/ghi dữ liệu bằng C#? Tôi có thể sử dụng lớp SerialPort .NET hay tôi cần phải sử dụng thư viện LibUsbDotNet hoặc có lẽ cái gì khác?

Trả lời

10

Đây là tin tuyệt vời khi tôi phát hiện ra rằng thiết bị USB giao tiếp trong VCP thay vì USB-HID, bởi vì các kết nối nối tiếp dễ hiểu.

Nếu thiết bị đang hoạt động ở VCP (Cổng Com ảo), thì việc này dễ dàng như sử dụng loại System.IO.Ports.SerialPort. Bạn sẽ cần phải biết một số thông tin cơ bản về thiết bị, hầu hết trong số đó có thể được thu thập từ Windows Management (Device Manager). Sau khi xây dựng như sau:

SerialPort port = new SerialPort(portNo, baudRate, parity, dataBits, stopBits); 

Bạn may or may not cần phải thiết lập một số cờ bổ sung, chẳng hạn như Yêu cầu gửi (RTS) và Data Terminal Ready (DTR)

port.RtsEnable = true; 
port.DtrEnable = true; 

Sau đó, mở cổng.

port.Open();

Để nghe, bạn có thể đính kèm một xử lý sự kiện để port.DataReceived và sau đó sử dụng port.Read(byte[] buffer, int offset, int count)

port.DataReceived += (sender, e) => 
{ 
    byte[] buffer = new byte[port.BytesToRead]; 
    port.Read(buffer,0,port.BytesToRead); 
    // Do something with buffer 
}; 

Để gửi, bạn có thể sử dụng port.Write(byte[] buffer, int offset, int count)

+0

Nơi nào tôi thấy portNo (tên cảng)? SerialPort.GetPortNames trả về 0 cổng. – Karlth

+0

Trong trường hợp của tôi, tôi không biết số cổng vì nó có thể không phải lúc nào cũng giống nhau. Tôi sử dụng một 'ManagementObjectSearcher' để tìm thiết bị (vì tôi biết tên), vì vậy tôi làm' var searcher = new ManagementObjectSearcher ("SELECT * FROM WIN32_SERIALPORT") 'và lặp qua bộ sưu tập' ManagementBaseObject' trong 'searcher.Get () '. Tôi sẽ làm việc đó thành câu trả lời. –

+1

Có vẻ như tôi cần cài đặt trình điều khiển cổng nối tiếp Mbed cho Windows (http://mbed.org/handbook/Windows-serial-configuration). Tôi chạy nó và máy tính huffed và puffed cho một vài phút, cuối cùng sản xuất một tốt đẹp "mbed cổng nối tiếp (COM3)" dòng trong quản lý thiết bị! :) Tôi sẽ thử xem. – Karlth

Các vấn đề liên quan