var
s: string;
i:Integer;
mystr,showstr:String;
begin
mystr := ''; //初始化分析用字符串为空
showstr := ''; //初始化显示用字符串为空
SetLength(s, Len); //设定接收长度
CopyMemory(PChar(s), PChar(Integer(Buffer)), Len); //接收数据 //忽略网络测试命令
if s='net test' then //net test 为自定义的网络测试命令
begin
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + s +'网络测试命令');
Exit;
end; for i := 1 to Length(s) do //将接收数据转换为16进制字符串
begin
try
mystr := mystr+ IntToHex(Ord(s[i]), 2); //分析用字符串
showstr := showstr+' '+ IntToHex(Ord(s[i]), 2); //显示用字符串
except
end;
end;
mystr:=Trim(mystr); //去除前后空字符
showstr:= Trim(showstr);
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + showstr);
//////////////////
while Length(mystr)>0 do //处理分析字符串
begin
if copy(mystr,1,2)= '81' then //81信号状态,不需存储,直接显示
begin
try
RedGreenLight(mystr,FromIP); //信号状态更新显示
mystr := Copy(mystr,21,Length(mystr));//出错的时候 程序停止到这儿 except
end;
end
从单片机接受数据,运行一段时间会出错,不是一运行就报错
s: string;
i:Integer;
mystr,showstr:String;
begin
mystr := ''; //初始化分析用字符串为空
showstr := ''; //初始化显示用字符串为空
SetLength(s, Len); //设定接收长度
CopyMemory(PChar(s), PChar(Integer(Buffer)), Len); //接收数据 //忽略网络测试命令
if s='net test' then //net test 为自定义的网络测试命令
begin
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + s +'网络测试命令');
Exit;
end; for i := 1 to Length(s) do //将接收数据转换为16进制字符串
begin
try
mystr := mystr+ IntToHex(Ord(s[i]), 2); //分析用字符串
showstr := showstr+' '+ IntToHex(Ord(s[i]), 2); //显示用字符串
except
end;
end;
mystr:=Trim(mystr); //去除前后空字符
showstr:= Trim(showstr);
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + showstr);
//////////////////
while Length(mystr)>0 do //处理分析字符串
begin
if copy(mystr,1,2)= '81' then //81信号状态,不需存储,直接显示
begin
try
RedGreenLight(mystr,FromIP); //信号状态更新显示
mystr := Copy(mystr,21,Length(mystr));//出错的时候 程序停止到这儿 except
end;
end
从单片机接受数据,运行一段时间会出错,不是一运行就报错
解决方案 »
- 如何用程序实现在扩展的另外一个显示屏上播放视频文件。代码应该如何写?
- 菜鸟问题:在Application中打开一个Form的代码怎么写啊?
- 我在工程文件中uses midasLib单元,将midas打包进服务器端,exe也大了200多K,但运行时为什么还是提示需要midas.dll?应该怎么做才能编译成
- 编写数据库连接时候 出现问题 请各位大哥帮帮小弟
- 如何注册OCX文件,不记得在哪看过啦!
- 如何用程序控制,令打印纸退纸几厘米?
- 从不连续的号码中找到最多不连续的数字
- selectDirectory怎样才能使目录浏览窗口居中?
- 老调重弹,TWebBrowser如何控制网页的多页显示?
- 能不能在程序中显示Flash动画?
- 创建按钮的问题
- Delphi怎么定义一个有返回值的方法。
将这个函数的代码贴出来看下。
//if LightState = '00' then ;
// 检测器/////////////////////////////////////////////////////////////
LightState:=copy(InputData,15,2);// 检测器位置
if LightState = '03' then ChechPlace:='东口';
if LightState = '02' then ChechPlace:='南口';
if LightState = '01' then ChechPlace:='西口';
if LightState = '00' then ChechPlace:='北口'; LightState:=copy(InputData,17,2);
ChechSubPlace:= IntToStr(StrToInt('$'+LightState));//16进制转成10进制
//1相位
LightState:=copy(InputData,3,2);
sDiffer:= IntToStr(StrToInt('$'+LightState));//16进制转换10进制
LightState:=copy(InputData,5,2);
sCountDown:= IntToStr(StrToInt('$'+LightState));//16进制转换10进制
是不是这里有问题
所以报错。