关于串口port already open问题的请教 点击:7714 | 回复:6



djianjun

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2003年7月27日
发表于:2005-05-19 08:15:00
楼主
我是新手,最近遍了一个简单的程序,从一个电子称采集数据,数据是自动接收的, 不用发送数据.程序简单, 一般运行可以.可是我总是遇到一个问题: 我的电子称总和计算机串口连在一起,一旦我推出程序在重新运行,计算机总是告诉: Port already open.只有断开电子称和计算机串口的连接然后重起计算机.有时侯重起计算机也不行. 不知是何缘故. 如何解决这个问题. Email: ljdjjbao@yahoo.com.cn 诚请各位大侠指点. 本人不胜感激. 先谢谢了.



一水

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 54回
  • 年度积分:0
  • 历史总积分:232
  • 注册:2002年8月05日
发表于:2005-05-19 08:40:00
1楼
1、确定此串口有没有它用, 2、如果没有它用,在用此串口前如果检测到串口已经打开可以先从程序中关掉,然后再用此串口。

djianjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2003年7月27日
发表于:2005-05-23 12:14:00
2楼
我已经重新启动计算机,应该没有别的程序用这个串口; 第二个方法我用了, 即在Form_load里关闭port, 在Start里面打开port. 可还是不行. 烦请抽时间帮我看看下面的代码. 谢谢您的建议. Private Sub Form_Load() Left = 0 Top = 0 Width = 20000 Height = 10000 With MSC If MSC.PortOpen = True Then MSC.PortOpen = False End If .CommPort = 2 .Settings = "9600,n,8,1" .InBufferSize = 1024 .OutBufferSize = 1024 ....................... Private Sub CmdStart_Click() If MSC.PortOpen = False Then MSC.PortOpen = True End If .....................

李文思

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 29回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2005年5月12日
发表于:2005-05-30 11:19:00
3楼
你看看 任务管理器/进程 里面你的相关进程是否退出了,有时候程序编写的不合理,或者机器中毒了,或者其他的原因导致程序退出后进程仍然在挂着。退出相关进程应该就可以了。如果进程不能退出,可以用ntsd命令来强制杀死进程。当然要根本解决问题,如果不是中毒了,还得从你的程序上找问题。

李文思

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 29回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2005年5月12日
发表于:2005-05-30 11:20:00
4楼
你看看 任务管理器/进程 里面你的相关进程是否退出了,有时候程序编写的不合理,或者机器中毒了,或者其他的原因导致程序退出后进程仍然在挂着。退出相关进程应该就可以了。如果进程不能退出,可以用ntsd命令来强制杀死进程。当然要根本解决问题,如果不是中毒了,还得从你的程序上找问题。

machao9922

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2004年5月22日
发表于:2005-06-25 00:12:00
5楼
在退出程序是时将串口关闭。

老研

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 63回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2004年3月22日
发表于:2005-07-15 17:54:00
6楼
串口操作必需先OPEN,读完数据后,要CLOSE.另外串口操作比较漫,所以采集定时器要设定时间长

热门招聘
相关主题

官方公众号

智造工程师