386
Chương 9: File, thư mục, và I/O
// Phát sinh khi một file mới được tạo ra
// trong thư mục cần theo dõi.
private static void OnCreatedOrDeleted(object sender,
FileSystemEventArgs e) {
// Hiển thị thông báo.
Console.WriteLine("\tNOTIFICATION: " + e.FullPath +
"' was " + e.ChangeType.ToString());
Console.WriteLine();
}
}
20.
20.
Truy xu t c ng COM
ấ ổ
Truy xu t c ng COM
ấ ổ
Bạn cần gửi dữ liệu trực tiếp đến một cổng tuần tự (serial port).
Win32 API cung cấp các hàm không-được-quản-lý trong thư viện kernell32.dll
để trực tiếp đọc và ghi các byte đến cổng tuần tự. Bạn có thể nhập các hàm này
vào ứng dụng hoặc sử dụng Microft Communications ActiveX control
(MSComm.ocx—có trong Microsoft Visual Studio 6).
.NET không cung cấp bất kỳ giao diện được-quản-lý nào để thao tác với các cổng tuần tự. Do
đó, những ai cần chức năng này sẽ phải làm việc với các cơ chế tương đối phức tạp.
Một hướng giải quyết là tạo một vỏ bọc .NET cho Microsoft Communications Control
(MSComm.ocx). Điều kiểm này cung cấp một mô hình đối tượng mức-cao để làm việc với
cổng tuần tự. Tuy nhiên, bạn phải thu lấy điều kiểm này thông qua Visual Studio 6 (bạn có thể
chỉ chọn cài đặt các thành phần ActiveX khi cài đặt Visual Studio 6, tốn khoảng 5MB). Để có
thêm thông tin, bạn hãy tham khảo tài liệu Visual Studio 6.
Một hướng giải quyết khác là nhập các hàm API từ thư viện kernell32.dll. Cần cẩn thận khi sử
dụng phương pháp này vì bạn phải sử dụng đúng kiểu dữ liệu C# và duy trì layout của các cấu
trúc bộ nhớ. May mắn là, vấn đề này đã được Justin Harrell (
) giải quyết với
một lớp C# tùy biến có tên là
ComPort
. Mã lệnh của lớp này khá dài, bạn hãy xem trong đĩa
CD đính kèm.
Bạn có thể thêm lớp
ComPort
vào ứng dụng của bạn và sử dụng đoạn mã sau để tương tác với
một cổng COM.
ComPort port = new ComPort();
try {
// Cấu hình cho cổng.