日期:2014-05-16  浏览次数:20646 次

急!请教下关于RS485串口通信的问题。
本帖最后由 happyDSQ 于 2013-01-31 09:33:54 编辑
简单描述一下手头的任务吧,这个项目需要的是通过一个485串口接收来自几个不同设备(PLC等)的数据信息,已知这些设备的通信协议不相同,数据包长度也不同,如何完整的识别出所收到的这些信息并且判断出数据包是否完整?请指教
任务 linux 串口 通信协议 plc设备

------解决方案--------------------
有多种协议,每个协议都有协议头,协议头中包含后续长度(如modbus)

while(接收一个字节,保存到一个数组){
  if(这个数组内容是一个/其中某个完整的协议头){
    取出长度部分,备用.
    跳出.
  }else{
    if(数组满了){
      FIFO
    }else{
      继续
    }
  }
}
找个地方放接下来接收到的已知长度的字节.

小心相互干扰.如果几种设备的数据相互有交织,那可能就.....