C#中多个窗口操作同一个串口

肚皮向上的鱼 2014-03-07 05:48:59
是这样的,我使用C#中的SerialPort对串口进行操作。现在需要在多个的JS页面上调用同一个串口,即第一个页面上本来在使用这个串口,正在读数据,然后这时第二个页面来了,需要读这个串口的数据,我想要的是把第一个页面上的串口关掉,然后在第二个页面上跑起来。我现在用第二个页面调用发现这个串口被占用啊。请问该怎么实现
...全文
761 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
大风哉 2015-03-26
  • 打赏
  • 举报
回复
我觉得楼主把大家都搞晕了,大家给你的建议是使用全局的变量可以达到你的目的。 你第一个问题就可以用全局的串口来实现,而第二个问题关闭后第二次打开串口没有数据不是正常的吗,为什么应该有数据,操作系统能做到关闭以后没有接受到的数据可以存储起来的功能吗?
肚皮向上的鱼 2014-03-11
  • 打赏
  • 举报
回复
没人了吗?我现在每次打开串口之后都将串口关闭。遇到两个新问题。 1.因为我是将程序写在控件中的,当第一个页面调用时,打开-读数据-关闭,没有问题。这时我又打开另一个页面去调用,假设这时刚好第一个页面程序执行到关闭了串口,那么OK,第二个页面可以打开串口,读数据,再关闭。可是这个时候第一个页面还是再调用的,又把端口打开再读数据,那么第二个页面就读不了了。想要的情况就是打开第二个页面之后,第一个页面就不让它执行了。 2.现在打开-读完数据后关闭串口,等到下一次的打开-读这个过程,发现串口缓冲区有时候会没有数据。之前打开-读数据,不关闭串口,再读数据,不会有这个问题。 请问该怎么解决?
肚皮向上的鱼 2014-03-10
  • 打赏
  • 举报
回复
请问怎么共享?是共享这个串口吗?程序中我把SerialPort是定义成public static的
  • 打赏
  • 举报
回复
可能你不懂static静态变量的概念。 首先,你需要单独设计能够控制这个串口的业务处理对象(类)。包括开通关闭功能。 然后应该声明为
public static 
的实例
,各个窗口都可以直接访问。 每一个窗口访问这个对象,就像你说的那样,判断是否被打开,关闭它,打开它,或者(其实干脆就)不用考虑关闭然后打开、而是直接共享使用。
BobMarley 2014-03-08
  • 打赏
  • 举报
回复
公共变量行不
caoqinghua 2014-03-08
  • 打赏
  • 举报
回复
楼主是要用rs232操作总线上的设备吗?
mznxbc123456 2014-03-08
  • 打赏
  • 举报
回复
看看能不能共享 判断串口是否打开 打开了是不是就是那个串口
敌敌畏耶 2014-03-08
  • 打赏
  • 举报
回复
实现共享不就完了么···
TOGIVE 2014-03-08
  • 打赏
  • 举报
回复
在第二个页面打开串口之前,先检查串口是否已打开,若已打开,就关闭已经使用的串口不就行了吗?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧