| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:[求助]怎么发送二进制数据呀,我找不到这个程序有什么错误,怎么就是不好使 ...
取消只看楼主 加入收藏
wjz
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-26
收藏
 问题点数:0 回复次数:0 
[求助]怎么发送二进制数据呀,我找不到这个程序有什么错误,怎么就是不好使呢

这是一书上的例子,我也看不出有什么毛病,就是在DSP接收数据时候不能接收到正确的2进制数,但是DSP能收到别的调试软件发送的2进制数据,所以不可能是DSP软件的错误,请高手们帮忙指正啊(程序能调通,编译没有错误),或者给一个别的程序,谢谢啦

implementation

{$R *.dfm}
function hex(c:char):integer;
var
x:integer;
begin
if c='' then
x:=0
else if (ord(c)>=ord('0'))and (ord(c)<=ord('9')) then
x:=ord(c)-ord('0')
else if (ord(c)>=ord('a'))and (ord(c)<=ord('f')) then
x:=ord(c)-ord('a')+10
else if (ord(c)>=ord('A'))and (ord(c)<=ord('F')) then
x:=ord(c)-ord('A')+10
else
x:=-1;
result:=x;
end;

function hextoint(s:string):integer;
var
tmpint1,tmpint2:integer;
begin
if length(s)=1 then
begin
result:=hex(s[1]);
end
else if length(s)=2 then
begin
tmpint1:=hex(s[1]);
tmpint2:=hex(s[2]);
if (tmpint1=-1)or (tmpint2=-1) then
result:=-1
else
result:=tmpint1*16+tmpint2;
end
else
result:=-1
end;


procedure TForm1.Button3Click(Sender: TObject);
var
len:integer;
i,count,tmpint:integer;
tmpvar:variant;
tmpstr,output:string;

begin
if not mscomm1.PortOpen then
begin
showmessage('没有打开串口');
exit;
end
else begin
output:=edit2.Text;
len:=length(output);
if len>0 then
begin
i:=1;
count:=1;
tmpvar:=vararraycreate([1,1],varbyte);
while(i<len)do
begin
tmpstr:=copy(output,i,2);
tmpstr:=lowercase(tmpstr);
tmpint:=hextoint(tmpstr);
if tmpint=-1 then
begin
showmessage('发送的数据格式有问题');
exit;
end
else begin
tmpvar[count]:=tmpint;
inc(count);
vararrayredim(tmpvar,count);
end;
i:=i+3; //------这里没看明白
end;
mscomm1.Output:=tmpvar;

end;

end;

end;
end.

搜索更多相关主题的帖子: 二进制 数据 
2006-09-28 16:53
快速回复:[求助]怎么发送二进制数据呀,我找不到这个程序有什么错误,怎么就是不 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016771 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved