首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于串口数据提取算法有关问题?

2012-03-17 
关于串口数据提取算法问题?急现从串口取的数据,需从中取出28H到54H中间5个字节中的前4个字节,代码如下://

关于串口数据提取算法问题?急
现从串口取的数据,需从中取出28H到54H中间5个字节中的前4个字节,代码如下:
//数据接收消息处理函数
procedure   tform1.wmcommnotify(var   message:tmessage);
var
    titem:tlistitem;
    commstate:comstat;
    dwnumberofbytesread:dword;
    errorflag:dword;
    inputbuffer:array[0..1024]   of   char;         //静态数组
    recstr:string;
    i,n:integer;
    begin                 ===========数据引出==============

  //开始提取数据
for   n:=0   to   dwnumberofbytesread-1   do//dwnumberofbytesread为串口已读取字节  
          begin                                                       数,在api函数readfile()中已获取      
                  if   inttohex(ord(inputbuffer[n]),2)= '28 '   then
                  begin
                  i:=0;
                  recstr:= ' ';
                  while   i <4   do
                  begin
                  i:=i+1;
                      recstr:=recstr+inttohex(ord(inputbuffer[n+i]),2);
                    end;
                    titem:=listview1.Items.Add;
                    titem.caption:=datetimetostr(date()+time());
                    titem.SubItems.Add(recstr);
但是就是这样,前二组28H和54H之间的能正确的取出来(11022B15,11022B01)到第三组就前面1102为对的0030为错的,本应为2B05),到第四个就是发送测试包中完全没有的00301AFA本应为(11022B09),接下就如上面循环出现错误前,即两组对,半组错,一组全都一直到结束,不知是那里算法有问题,请大家帮我看一看,急啊!!

[解决办法]
哈哈,兄弟,我看不是程序有问题,是串口参数出问题吧!
[解决办法]
简单的测试一下:
把一个字串放进去试试,如果正确,就是楼上的说的可能是串口读到的数据有问题,如果不对,就是程序的问题.

[解决办法]
LZ可以先排除串口等一系列非程序问题!
然后在用例子一步一步测试。
你用的控件最好也检查一下!
[解决办法]
用串口调试器测试一下,看收到的数据是否正确,然后再分析是程序还是串口的问题

热点排行