socket 问题

zouzhou1984 2009-03-02 10:31:27
socket程序,在笔记本上运行时不会出现数据接受延时问题,但放在嵌入式机器上会出现3-4秒的延时,导致绘图延时,除了硬件的原因,还有可能是哪方面的原因,比如缓冲区
...全文
56 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zouzhou1984 2009-03-02
  • 打赏
  • 举报
回复
void ReaData()
{
while (true)
{
//Thread.Sleep(3);
data = new byte[1024*3];
//data = new byte[1024*2];

int bytes = newclient.Receive(data);
if (bytes <= 0)
break;

string st = HexCon.ByteToString(data);

string t1 = DateTime.Now.ToString("yyyyMMddHHmmss-ffff");
string t2 = "00";
string t3 = "00";
string[] stringSplit = new string[] { "02 80 6E 01 B0 B5 00" };
//string tempData = HexCon.ByteToString(readbytes);
//sw.Write(tempData + "\r\n");
string tempData = st;
// sw.WriteLine(tempData);
string stringTemp = string.Empty;
string stringNext = string.Empty;
int index = tempData.IndexOf("00 00"); //获取有效字符串
if (index > 0)
{
tempData = tempData.Substring(0, index);
}
int exists = tempData.IndexOf("02 80 6E 01 B0 B5 00");
if (exists > 0)//如果有效字符串中有找到的报文头
{
string[] dataArry = tempData.Split(stringSplit, StringSplitOptions.None); //按报文头分割

for (int i = 0; i < dataArry.Length; i++)
{
string sp = dataArry[i].Trim();
if (sp.Length == 1094) //如果字符串长度等于去掉报文头后的1095个字符长度
{
stringTemp = "02 80 6E 01 B0 B5 00 " + sp; //最终一组有效字符串
}
else if (sp.Length < 1094)//如果字符串长度小于去掉报文头后的1095个字符长度则等待第二组数据并取第二组分割后数据的第一个字符串数组
{
//stringNext = "02 80 6E 01 B0 B5 00 " + 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 = new int[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);
}
}

}
}
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧