我想打开COM1端口但是我收到此错误消息“拒绝访问端口'COM1'”。 Actualy,我正在写一个通过网络发送短信的程序。我接受可能有错误,但不应出现“拒绝访问”错误。请给我任何解决方案。如果port需要任何访问权限,那我该怎么做呢。
答案 0 :(得分:10)
首先,确保串口存在。检查设备管理器;右键单击“我的电脑”,从上下文菜单中选择“管理”,选择“设备管理器”,展开“端口Com& LPT”。如果未列出Com1,则需要在BIOS中启用它。
如果有COM1,那么另一个程序将其打开。访问COM1是独家的;只有一个程序可以一次打开它。传真软件或调制解调器可以打开它,或者您可以自己打开它。
这很容易做到。如果您处理打开端口并忘记关闭它的程序,或者如果发生错误并且程序在没有关闭端口的情况下终止,则这是您下次尝试打开COM1时将收到的消息。只有打开端口的程序才能关闭它。 “Catch”或“Finally”块是关闭端口并阻止这种情况的好地方。
答案 1 :(得分:6)
可能还有其他一些使用COM1的东西(自动同步程序在获取COM端口时可能会非常糟糕)。
尝试下载PortMon,它会告诉您使用该端口的确切内容。
答案 2 :(得分:1)
由于您标记了此asp.net,您是否尝试使用多个线程访问该端口? (如在请求中,访问端口,创建连接,发送数据,关闭连接,关闭端口?
如果你是,这也是一个问题。如果我没弄错的话,一次只能有一个线程访问一个com端口。您需要编写一些代码以确保在给定时间只有一个线程尝试访问该端口。通常我会建议一个队列和一个工作人员来完成这项工作。
答案 3 :(得分:0)
可能有另一个使用串口的程序。您是否尝试过激活超级终端?
答案 4 :(得分:0)
如果您尝试在IIS下使用ASP.Net,那么运行该网站的帐户可能没有对该设备的权限,以及可能存在冲突的线程/多访问问题。我需要考虑的是编写一个服务来管理COM端口的请求,然后从ASP.Net与该服务进行通信。这将允许拆分权限和对COM端口的受控单一访问。任何其他黑客都有可能造成很多问题。