问题描述
socket程序,在笔记本上运行时不会出现数据接受延时问题,但放在嵌入式机器上会出现3-4秒的延时,导致绘图延时,除了硬件的原因,还有可能是哪方面的原因,比如缓冲区
解决方案
解决方案二:
voidReaData(){while(true){//Thread.Sleep(3);data=newbyte[1024*3];//data=newbyte[1024*2];intbytes=newclient.Receive(data);if(bytes<=0)break;stringst=HexCon.ByteToString(data);stringt1=DateTime.Now.ToString("yyyyMMddHHmmss-ffff");stringt2="00";stringt3="00";string[]stringSplit=newstring[]{"02806E01B0B500"};//stringtempData=HexCon.ByteToString(readbytes);//sw.Write(tempData+"rn");stringtempData=st;//sw.WriteLine(tempData);stringstringTemp=string.Empty;stringstringNext=string.Empty;intindex=tempData.IndexOf("0000");//获取有效字符串if(index>0){tempData=tempData.Substring(0,index);}intexists=tempData.IndexOf("02806E01B0B500");if(exists>0)//如果有效字符串中有找到的报文头{string[]dataArry=tempData.Split(stringSplit,StringSplitOptions.None);//按报文头分割for(inti=0;i<dataArry.Length;i++){stringsp=dataArry[i].Trim();if(sp.Length==1094)//如果字符串长度等于去掉报文头后的1095个字符长度{stringTemp="02806E01B0B500"+sp;//最终一组有效字符串}elseif(sp.Length<1094)//如果字符串长度小于去掉报文头后的1095个字符长度则等待第二组数据并取第二组分割后数据的第一个字符串数组{//stringNext="02806E01B0B500"+sp;if(stringNext!=string.Empty){stringTemp=stringNext+""+sp;stringNext=string.Empty;}}if(stringTemp!=string.Empty&&stringTemp.Length==1115){//t2=DateTime.Now.ToString("yyyyMMddHHmmss-ffff");//swt.WriteLine(t1+","+t2);RealString=stringTemp;int[]tmp=newint[181];tmp=Sick.GetData(RealString);PerScanData=Sick.GetXY(tmp,Sick.Left_Ang,Sick.Down_Ang,Sick.Sick_Height,Sick.left_Dis);panel1.Invalidate();//sw1.WriteLine(stringTemp);}}}}}