求助:关于spcomm 接收数据的问题..急...分不够可以再加.谢谢
最近在做医院一台Elec 2010 (电化学发光)仪器的数据接受..每次发接受的数据解码出来都不对...请各位帮忙指导一下...
procedure TTestComFrm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
viewstring:string;
rbuf:array[1..8] of byte;
begin
//=============================================
viewstring:='' ;
move(buffer^,pchar(@rbuf)^,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttohex(rbuf[i],2)+'' ;
viewstring:='接收:'+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
end;
//=========以下是我的测试记录
我设了断点跟踪
move(buffer^,pchar(@rbuf)^,bufferlength);
这时的值是 0,57,1,85,0,6,0
最后得到的viewstring的值 是'05'
仪器上的输出的结果是 105 1407 CA125 18.06
问题点数:100、回复次数:4Top
1 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 09:50:40 得分 0
move(buffer^,pchar(@rbuf)^,bufferlength);
换成move(buffer^,rbuf[1],bufferlength);试试Top
2 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2006-03-04 09:55:37 得分 0
var
iLen:integer;
begin
iLen := bufferlength;
move(buffer^,pchar(@rbuf)^,iLen );
for i:=1 to iLen do
看
0,57,1,85,0,6,0
和
105 1407 CA125 18.06
我估计,得到的值,可能是一个偏差而已,所以,
你要多测几次,才能找出标准值Top
3 楼luxuewei5214(小卢)(以下内容仅供参考)回复于 2006-03-08 13:52:04 得分 0
我直接move(buffer^,rbuf,bufferLength)也可以取到数据,你要了解传输协议,在对数据分析,接受时要在发送后的100-200ms后,要延时,防止数据丢失。从仪器上显示的内容看,数据不止六个字节吧Top
4 楼Jethill(生儿子之前,老婆说她喜欢女儿!)回复于 2006-03-09 15:54:19 得分 0
我比较同意楼上老兄的意见,我做的读卡程序也是如此,延时时间要注意一下他给的相关协议。有的有要求,比如间隔等。Top




