Đâ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)
Nguồn
2013-10-24 00:04:14
Nơi nào tôi thấy portNo (tên cảng)? SerialPort.GetPortNames trả về 0 cổng. – Karlth
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. –
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