做的是与单片机通信的软件,以前的都是实时通信,即上位机发送一个信号,下位机返回一个信号
目前的软件需要这样调整:下位机主动会向上位机发送检测到的信号
那么我的问题是:当下位机主动发送数据到串口的时候,上位机正好也发送了一个命令令,那么串口上的数据不是混乱了吗?大家觉得怎么解决好?

解决方案 »

  1.   

    发送接收是有信号控制的,就像红绿灯一样
    先看看串口通信的机制吧
      

  2.   

    不知道下位机什么时候发送啊,随时可能发送,怎么设置延时呢?
      

  3.   

    最好不要下位机主动发,感觉
      

  4.   

    上位机不能随意的发呀,上位机和下位机要有通讯协议的,发送应答要有规定如果随便发,你就要对数据进行处理过滤,当然尽量避免这种情况,也不应该出现这种情况
      

  5.   

    下位机需要检测环境,发现问题,需要传给上位机来处理的。
    或许你的意思是上位机发送一个命令,然后下位机再把问题发回来了,但是这样实时性很不好。
    另外如果我设置另外一个线程来每个一段时间发送命令给下位机看是否有问题的话,这样也会干扰正常的收发命令。
      

  6.   

    接收过来的数据先放置缓冲区,同时定义双方的通讯协议。
      

  7.   

    先谢谢,协议是有的啊。
    下位机随时监测硬件的工作环境,有问题需要立刻发送,而且也不知道问题什么时候发生!
      

  8.   

    采用事件处理机制,串口的收发会有事件发生,另外尽量采用一问一答的形式,在一定时间内没有收到应答可以重复发送可以避免一些数据遗漏吧。
      

  9.   

    就这么一根线
    大家随便发,不乱套才怪
    以前软件估计不是楼主写的
    建议仔细看看
    原来的程序也不会随时想扔个数据包就扔过去的
    串行通信前一般都会有握手
      

  10.   

    如果是RS232通讯,同时发送和接受是没有问题的只要你接受的时候单片机进中断就可以了