现在的情况是在一个软件内,同时连接两个com端口,通过这两个com端口连接有不同仪表,
我在程序里用的是.net提供的SerailPort类进行操作,
程序里就会有两个SerialPort对象同时在进行,
每个对象都有一个Data_Recived事件是用来接收数据的,
然后再通过委托在界面显示,
现在的问题是,这样的话,程序里就会有两个SerialPort对象同时在进行,
每个对象都有一个Data_Recived事件是用来接收数据的,
怎么才能保证两个事件都在进行呢?
我在调试的时候发现,
运行一段时间后,一直都是只有后一个port对象在接收数据,
第一个port对象的Data_Recived事件除了在界面加载的时候进行过,
之后就再也没进行,有没有做过串口编程的同志啊,帮帮忙,
给点建议也好,谢谢了

解决方案 »

  1.   

    怎么会呢,我的程序3个串口都没问题,每个串口的Data_Recived都是一个独立的,怎么会互相影响
      

  2.   

    是么,我这边是连接两个端口,
    界面加载一段时间后,
    两个端口的数据都能显示出来,
    我在第一个端口的 Data_Recived 打断点,
    发现一直都不再走了,
    第二个端口的 Data_Recived 打断点就正常,
    怎么这么奇怪啊
      

  3.   

    第一个RS232设断点没有进入说明其一直没有数据过来。检查一下端口设置,波特率,校验及是否打开端口等,或将R1和R2颠倒一下看看串口有没有问题,或用网上的串口通讯的软件试试。
    我的程序用一个串口扩展卡(俗称八爪鱼)连接了12个串口,同时工作都没有任何问题。
      

  4.   

    应该没问题,他们的datareceived事件是互不干涉的,可能你的代码有问题,先确定你的第一个串口是否有返回数据。。
      

  5.   

    对了 我这两个Data_Recived事件调用的是同一个方法里的委托,
    不知道这个会不会有什么影响
      

  6.   

    还有 问一下关于Data_Recived事件的问题,
    比如说我在Data_Recived事件里获取了数据,
    在下一次执行Data_Recived事件的时候,
    获取的数据的位置也是从我上次获取的位置接着下去的么
    只是想确认一下
      

  7.   

    比如说我在Data_Recived事件里获取了数据, 
    在下一次执行Data_Recived事件的时候, 
    获取的数据的位置也是从我上次获取的位置接着下去的么-----应该是的,上次触发Data_Recived事件的数据会被读走,缓冲区中会被新数据填充。
      

  8.   

    第一个RS232设断点没有进入说明其一直没有数据过来。检查一下端口设置,波特率,校验及是否打开端口等,或将R1和R2颠倒一下看看串口有没有问题,或用网上的串口通讯的软件试试。 
    我的程序用一个串口扩展卡(俗称八爪鱼)连接了12个串口,同时工作都没有任何问题。
    顶,调换端口测试一下!