2008-09-03 34 views
23

Công ty tôi làm việc để tạo phần cứng giao tiếp với máy tính qua cổng nối tiếp. Các công ty bên thứ ba viết phần mềm giao tiếp với phần cứng của chúng tôi.Làm cách nào để xác định quy trình nào đang sử dụng cổng nối tiếp?

Có những lúc tôi cần chẩn đoán phần cứng của mình. Tuy nhiên, một ứng dụng phần mềm của bên thứ ba kết nối với cổng nối tiếp khi Windows khởi động, chặn bất kỳ kết nối nào khác. Tôi không biết tên của ứng dụng/dịch vụ này và không phải lúc nào cũng giống như vậy.

Có cách nào để một trong hai:

  • Tìm tên/pid của ứng dụng/dịch vụ mà hiện tại đang sử dụng một cổng nối tiếp cho hay
  • Steal kết nối cổng nối tiếp từ ứng dụng khác.

vb.net tốt hơn, nhưng tôi cũng sẽ có một câu trả lời độc lập về ngôn ngữ.

Trả lời

20

Bạn có thể sử dụng công cụ process explorer cũng từ SysInternals để tìm kiếm mở xử lý. Trong trường hợp này, bạn sẽ muốn tìm kiếm 'Serial' vì nó sử dụng tên thiết bị có thể không ánh xạ tới số cổng. (ví dụ: COM1 là \ Device \ Serial0 trên hệ thống của tôi).

Nếu bạn muốn kiểm soát cổng nối tiếp từ một ứng dụng khác, tôi nghĩ bạn sẽ cần sự hợp tác của người lái xe.

+1

Tuyệt vời. Kỳ lạ thay, nó có vẻ hoạt động trên máy tính Windows XP của tôi cho tất cả các cổng ** ngoại trừ ** cái tôi quan tâm: một cổng nối tiếp USB sử dụng trình điều khiển 'usbser.sys' của Windows. –

+0

Có nhiều ngoại lệ hơn: nối tiếp với bộ chuyển đổi ethernet. (ví dụ: Bộ chuyển đổi NPN Moxa sử dụng: '\ Device \ NPdrv ...') – bvdb

+0

Bộ tiếp hợp nối tiếp usb của tôi có tên \ Device \ USBSER0000 – copa017

3

Sysinternals có một loạt tiện ích mà tôi thấy rất hữu ích và giáo dục để theo dõi những quy trình đang làm cho hệ thống.

Họ có một tiện ích thực hiện chính xác những gì bạn cần gọi là Portmon và cung cấp một số thông tin về cách hoạt động gần cuối trang. Thông tin đó và một vài câu hỏi được đặt ra có thể sẽ cung cấp cho bạn mọi thứ bạn cần để tự mình triển khai nếu tiện ích không đủ.

-Adam

+2

Đáng buồn thay, PortMon không hoạt động trên hệ điều hành 64 bit, phần lớn hiện nay. Giả sử bạn có thể thử chạy một máy ảo, nhưng đó không phải là một lựa chọn cho tôi. – topshot

7

Rob Walker said, bạn có thể tìm thấy ai đang sử dụng cổng nối tiếp bằng cách sử dụng Process Explorer. Hầu hết thời gian, nhập Ctrl + F và tìm kiếm "nối tiếp" sẽ hiển thị cho bạn người mở cổng nối tiếp, nhưng tôi chỉ gặp phải tình huống mà cổng điều khiển "COM3" của cổng nối tiếp xuất hiện dưới dạng "\ Device \" VCP0 ". Nó có thể là lạ bởi vì nó đang chạy dưới VirtualBox với một kết nối USB-to-serial.

Nếu tìm kiếm "nối tiếp" và "thiết bị \ vcp" không đưa bạn bất kỳ kết quả nào, bạn có thể tìm ra cách xử lý cổng nối tiếp được đặt tên bằng cách mở một chương trình đã biết. Trong Process Explorer, hiển thị khung bên dưới với các chốt mở của từng quy trình bằng cách nhập Ctrl + L. Nhấp vào quá trình mà bạn đã sử dụng để mở cổng nối tiếp và xem qua khung bên dưới để xem các tay cầm trông giống như chúng có thể là cổng nối tiếp. Bạn có thể mở và đóng cổng trong khi bạn đang tìm kiếm và xử lý tệp sẽ xuất hiện và biến mất, cũng như được đánh dấu bằng màu xanh lục hoặc đỏ. Tất nhiên, điều này chỉ có thể nếu bạn có nhiều hơn một cổng nối tiếp hoặc cổng nối tiếp mà bạn đang cố gắng chẩn đoán không phải lúc nào cũng bị khóa bởi một số quy trình bí ẩn.

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