485通过232接电脑主机,从站最多允许到254台,每个从站均有可能发送数据到电脑主机,然后电脑主机进行应答。从站发过来的数据有源地址,电脑主机程序可以根据源地址识别具体是哪个从站过来的数据。对这方面不熟的,建议先看看485通讯的机制。
    现在问题来了,在电脑主机中的接收程序收到第一字节的数据后,System.IO.Ports.SerialPort就产生了一个事件,由于无法判定从站具体数据包长度,因此主机只能做一个固定的延时,然后就读取缓冲区数据,因而,有可能一次性没有把从站的数据包读完,也就是从站的一个数据包,在主机中可能会被识别为2个数据包,而第二个数据包是没有源地址的。请问如何建立缓冲机制?要求能够不把不同从站的数据混在一起的。    感觉好像无所适从,因为过程中数据是有可能丢失的,例如硬件故障,在485的发送机制来说,只要从站能够进入发送状态,发送数据是没问题的,从站会把数据通道的占用一直到一个完整的数据包发送结束才会释放控制权。