我把ReadTimeOutInterval设成10000都没用,若收到的数据超过14字节便会自动
截断到下一次接收,同样的数据用SPCOMM控件接收能一次收完,数据没有问题呀比如应接收到字节140,16,49,51,49,52,49,51,49,52,49,51,49,52,49,51,49,52,258
但接收时被ComPort自动分成2段来接收变为:
第一次:140,16,49,51,49,52,49,51,49,52,49,51,49,52
第二次:49,51,49,52,258
我用SPCOMM能一次性收完的,ComPort有什么属性需要设置吗?(延时已经设了,没用)
贴下我的代码
procedure Tfrm_QueryCard.ComPortPwdRxChar(Sender: TObject; Count: Integer);
var
i:integer;
rbuf:array of byte;
yh:integer;
begin
sleep(100);
try
try
setLength(rbuf, count);
ComPortPwd.Read(pchar(rbuf)^,count); //check
yh:=rbuf[0];
for i:=1 to count-2 do
begin
yh:=yh xor rbuf[i];
end;
if yh<>rbuf[count-1] then
begin
myshowmessage('校验码错误');
TotalGetCardAmt := 0;
close;
exit;
end; viewstring:='';
for i:=2 to strlen+1 do
begin
viewstring:=viewstring+chr(rbuf[i]);
end;
except
end;
finally
pwdlock:=false;
end;
end;
截断到下一次接收,同样的数据用SPCOMM控件接收能一次收完,数据没有问题呀比如应接收到字节140,16,49,51,49,52,49,51,49,52,49,51,49,52,49,51,49,52,258
但接收时被ComPort自动分成2段来接收变为:
第一次:140,16,49,51,49,52,49,51,49,52,49,51,49,52
第二次:49,51,49,52,258
我用SPCOMM能一次性收完的,ComPort有什么属性需要设置吗?(延时已经设了,没用)
贴下我的代码
procedure Tfrm_QueryCard.ComPortPwdRxChar(Sender: TObject; Count: Integer);
var
i:integer;
rbuf:array of byte;
yh:integer;
begin
sleep(100);
try
try
setLength(rbuf, count);
ComPortPwd.Read(pchar(rbuf)^,count); //check
yh:=rbuf[0];
for i:=1 to count-2 do
begin
yh:=yh xor rbuf[i];
end;
if yh<>rbuf[count-1] then
begin
myshowmessage('校验码错误');
TotalGetCardAmt := 0;
close;
exit;
end; viewstring:='';
for i:=2 to strlen+1 do
begin
viewstring:=viewstring+chr(rbuf[i]);
end;
except
end;
finally
pwdlock:=false;
end;
end;
解决方案 »
- ADOQUERY的BOF和EOF同时为真,但是RecordCount记录数是对的,怎么解决呀
- 求助fastreport报表导出为excel时会导致excel进程吊死
- 在fastreport中设置字体属性时出现提示"system error,code 1722,RPC服务器不可用"怎么解决??
- 因业务需要,本公司高薪聘Delphi开发人员
- 急呀!一个报表的问题!一个QRDBRichText的和一个QRDBText的问题!
- 我学Delphi有前途吗????delphi和.net的关系!!!!请教大家!!!
- object pascal资料
- 主窗体隐藏问题
- DELPHI中相互调用和循环调用是不同的概念吗?
- 如何读取gif图片的大小?
- delphi 编程的几个基本的问题
- access数据库的小软件,窗体关闭的错误提示
我想知道此现象能不能解决
FTComm.Inx_XonXoffFlow := False; // 设置此两项 可解决 你的问题
FTComm.Outx_XonXoffFlow := False; // 设置此两项
FTComm.ReadIntervalTimeout := 110;
FTComm.StartComm;
不好意思啊,我问的是ComPort控件,SPComm控件原本就没问题我的程序已完成 在测试阶段发现这个问题,现在要在换控件的话...唉
FlowControl.XonXoffOut = False
FlowControl.XonXoffIn = False
都是默认的
你看看这篇,应该可以解决你的问题,我现在也遇到相同的问题