至于接收判断
1 是判断数据的有效性 如果根据规约没有接收完 那就等待
2 是有的控件本身有设置,间隔XX ms之内的数据都当做一帧来接收
如果非要用你说的延时方法,每次接收数据就记录在数组里
那我用个傻办法吧
方法1
每次接收数据都记录接收的时间 T1
然后在定时器里设置间隔为N毫秒 定时判断当前时间和T1的间隔
如果间隔大于XX毫秒 就取接收的数组作为接收的数据。
方法2
用while等待 也记录接收时间 判断多少时间没有接收到数据 就停止接收
while循环中可以用delay延时
procedure Delay(const uDelay: DWORD)
var
n: DWORD
begin
n := GetTickCount
while ((GetTickCount - n) <= uDelay) do
Application.ProcessMessages
end
原因如下1、本身串口通讯的RS485,数据传输速率很慢,可以设定较快的波特率。(治标不治本)
2、触摸屏中的数据地址不连续(当前画面的数据地址),触摸屏在向PLC获取数据的时候,需要分好几个数据包多次发送,无形中增加了反应时间。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)