S
snight
Unregistered / Unconfirmed
GUEST, unregistred user!
用spcomm控件读com口数据,然后把读出来的数据用integer格式显示出来,但是本来应该是负的,却自动加了256,转换成了正的,代码大概如下:
rbuf:array[1..200] of byte;
comm1:tcomm;
procedure tfcomm.comm1receivedata(sender: tobject; buffer: pointer;bufferlength: word);
var
i:integer;
begin
viewstring:=‘’ ;
move(buffer^,rbuf,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttostr(rbuf)+‘’ ;
viewstring:=‘接收’+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add(‘’ );
end;
其中假如rbuf(2)应该是-123的(我有程序可以正确读到数据),显示出来的时候就变成133了,如果是-96的,就变160了,小弟愚昧,不明白为什么,是语句有问题,还是spcomm控件的缘故?
rbuf:array[1..200] of byte;
comm1:tcomm;
procedure tfcomm.comm1receivedata(sender: tobject; buffer: pointer;bufferlength: word);
var
i:integer;
begin
viewstring:=‘’ ;
move(buffer^,rbuf,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttostr(rbuf)+‘’ ;
viewstring:=‘接收’+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add(‘’ );
end;
其中假如rbuf(2)应该是-123的(我有程序可以正确读到数据),显示出来的时候就变成133了,如果是-96的,就变160了,小弟愚昧,不明白为什么,是语句有问题,还是spcomm控件的缘故?