大家好:
     我用SPCOMM控件发送十六进制数据,别人给我了一个自定义的函数如下:
procedure SendHex(S: String);
var
  s2:string;
  buf1:array[0..50000] of char;
  i:integer;
begin
  s2:='';
  for i:=1 to  length(s) do
  begin
    if ((copy(s,i,1)>='0') and (copy(s,i,1)<='9'))or((copy(s,i,1)>='a') and (copy(s,i,1)<='f'))
        or((copy(s,i,1)>='A') and (copy(s,i,1)<='F')) then
    begin
        s2:=s2+copy(s,i,1);
    end;
  end;
  for i:=0 to (length(s2) div 2-1) do
    buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));
  Comm1.WriteCommData(buf1,(length(s2) div 2));
end;不知道怎么搞的发送数据调用它时,总是出错。请高手帮俺改一下好吗???
先谢谢了啊

解决方案 »

  1.   

    for i:=1 to  length(s) do
      begin
        if s1[i] in [0..9, 'a'..'z','A'..'Z'] then
            s2:=s2 + s1[i];
      end;
      for i:=0 to (length(s2) div 2-1) do
        buf1[i]:=char(strtoint('$'+copy(s2,i*2, 2)));
      Comm1.WriteCommData(buf1,(length(s2) div 2));
      

  2.   

    aiirii(ari) 
       你好!
     你的那段程序应该不是太理想吧!十六进制不能出现A到F以外的字符。在你的那段程序里,如果
    我误输入了Z,应该怎么办啊?
      

  3.   

    http://218.56.11.178:8020/web/index.aspx->下载基地->例程-硬件控制->spcom事例程序
      

  4.   

    http://218.56.11.178:8020/web/index.aspx->下载基地->例程-硬件控制->串口通讯控制器
      

  5.   

    jpyc(九品御厨-进军嵌入式) 
      你好
      我这个就是在你哪儿下载的啊!我还有一个问题还要打扰你一下
      你的那个作品“串口通讯”,当接受数据时。为什么显示的时候老是分行啊!本来一行显示都
    很宽余的。它非要多行显示。
      你有办法吗?
      

  6.   

    那你修改如下不就行了:
    if s1[i] in [0..9, 'a'..'f','A'..'F'] then原文:
      你好!
     你的那段程序应该不是太理想吧!十六进制不能出现A到F以外的字符。在你的那段程序里,如果
    我误输入了Z,应该怎么办啊?