在一个多窗体的软件中,不同的窗体中要完成不同的串口收发数据并显示在比不同的窗体,我现在只在第一个窗体中加了MSCOMM控件,在软件一启动就打开串口, 然后我发现在不同的窗体中都可以发送数据 用如下代码: form1.mscomm1.output   但是不同窗体中的接收代码我就不懂怎么写了,求教!! 急

解决方案 »

  1.   

    不知道只在主窗体加一个控件,而在不同的窗体实现on_comm事件,会不会有冲突,这样行不行?
      

  2.   

    楼主的意思是一个串口COM1,使用一个Mscomm控件,而在同一工程中:不同的Form,不同的Class,不同的Mod中可以操作它。个人觉得这可以使用公共模块实现,但是要注意各指令调用的秩序,不要造成同一时间对串口进行多项操作,这是不允许的。
      

  3.   

    to  回复人: xiachm(酒剑仙) ( ) 信誉:100  你给我的回答确实可行,而且我也看明白了, 但是那是在另外的一个窗体中实现,如果是在多个窗体中呢? 会不会有冲突产生! 还有一个要考虑的是 我在不同的窗体中接受到的数据要显示在不同的地方,似乎更难理解了  呵呵   继续讨论!!
      

  4.   

    开辟一个全局缓冲区,放MSCOM控件的那个窗体可以使用轮询或是事件触发的方式接收数据,重要的是要把接收到的数据放入缓冲区,然后在其它每个窗体都用轮询的方法访问那个全局缓冲区,如果有数据就显示出来需要注意的是:一定要保护好全局缓冲区!!!!因为不止一个窗体在使用它
      

  5.   

    考虑在每个窗体中用Public Withevents建立一个指向Form1.MsComm的引用。当然,注意事件处理冲突问题。
      

  6.   

    我说的就是外设呀,我前一张帖子不是告诉过你如何让多个窗体共享一个MSCOMM控件吗?你又问我是否会冲突,所以我给了你这个解决冲突的方法。或许我还是没明白你的意思,唉,只能帮你这么多了…………
      

  7.   

    楼上的哥哥很专业! 就是我太菜了  不知道怎么实现   学习中
    to xiachm(酒剑仙) ( ) 信誉:100   实在不好意思   我的意思是  有时候可能会接受到相同的数据但是要显示在不同的窗体, 这不是冲突吗?