Odmowa dostępu do portu „COM1”


Próbuję otworzyć port COM1, ale pojawia się błąd „Odmowa dostępu do portu 'COM1'”. Piszę program do wysyłania SMS-ów przez .NET. Spodziewam się, że może wystąpić błąd, ale błąd „Odmowa dostępu” nie powinien wystąpić. Proszę o jakieś rozwiązanie. Jeśli port wymaga jakichkolwiek uprawnień dostępu, jak mogę to zrobić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Najpierw upewnij się, że port szeregowy istnieje. Sprawdź Menedżera urządzeń; kliknij prawym przyciskiem myszy na moim komputerze, wybierz „Zarządzaj” z menu kontekstowego, wybierz „Menedżer urządzeń”, rozwiń „Porty COM i LPT”. Jeśli Com1 nie jest wymieniony, musisz włączyć go w systemie BIOS.
Jeśli występuje COM1, oznacza to, że inny program zostawił go otwartym. Dostęp do COM1 jest wyłączny; tylko jeden program może go otworzyć naraz. Oprogramowanie do obsługi faksu lub modem może je otworzyć, ale możesz też zostawić je otwarte samodzielnie.
To łatwe. Jeśli używasz programu, który otwiera port i zapomina go zamknąć lub jeśli wystąpi błąd i program zakończy pracę bez zamykania portu, przy następnej próbie otwarcia portu COM1 pojawi się ten komunikat. Tylko program, który otworzył port, może go zamknąć. Bloki Catch lub Final to dobre miejsca na zamknięcie portu i zapobieżenie temu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Prawdopodobnie jest coś innego używającego COM1 (programy do automatycznej synchronizacji zwykle nie radzą sobie z przechwytywaniem portów COM, gdy tylko staną się dostępne).
Spróbuj pobrać

PortMon
http://technet.microsoft.com/e ... .aspx
i powie ci dokładnie, jakiego portu używa.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ oznaczyłeś ten plik asp.net, czy próbujesz uzyskać dostęp do portu za pomocą wielu wątków? (np. na żądanie, dostęp do portu, tworzenie połączenia, wysyłanie danych, zamykanie połączenia, zamykanie portu?
Jeśli tak, to też jest problem. Jeśli się nie mylę, tylko jeden wątek może mieć dostęp do portu COM w danym momencie. Będziesz musiał napisać kod, aby upewnić się, że tylko jeden wątek próbuje uzyskać dostęp do portu w danym momencie. Zwykle sugerowałbym kolejkę i pracownika dla tej kolejki, która wykonuje zadanie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Prawdopodobnie istnieje inny program korzystający z portu szeregowego. Czy próbowałeś uruchomić hyperterminal?
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli próbujesz użyć ASP.Net w ramach usług IIS, konto uruchomione w witrynie sieci Web może nie mieć uprawnień do urządzeń i mogą również występować problemy powodujące konflikty wątków/wielodostępów. Trzeba wziąć pod uwagę napisanie usługi, która obsługuje żądania do portu COM, a następnie rozmawiać z tą usługą z ASP.Net. Umożliwi to podział uprawnień i kontrolowany pojedynczy dostęp do portu COM. Każdy inny hack może spowodować mnóstwo problemów.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się