由于以前有个项目使用了SPCOMM,而且那个兄弟修改了SPCOMM里面的代码。我新做一个就暂时用MSCOMM了。但是在使用中出现了这样一个问题:我给单片机发送的数据是正确的,它也给了我正确的返回值(我用串口调试助手可以看到发送和返回的数据),但是我在Delphi中接收的时候却总是差几个字节。我在接收的事件中的代码如下:
procedure TfrmAdvanceRecord.MSCommComm(Sender: TObject);
var
i : integer;
s : OLEVariant;
begin //{
if nCommClose then exit;
if MSComm.CommEvent <> comEvReceive then exit; s := VarArrayCreate([0,1023],varByte);
s := MSComm.Input; Memo1.Lines.Add('总长:=' +IntToStr(Length(s)));
for i := 0 to Length(s) do
begin
Memo1.Lines.Add(IntToHex(s[i],2));
end;
end;我用Memo1显示收到的数据,比串口调试助手中的总是少几个字节的数据。MSComm.RTthreshold := 1
请教大家!!!!!
procedure TfrmAdvanceRecord.MSCommComm(Sender: TObject);
var
i : integer;
s : OLEVariant;
begin //{
if nCommClose then exit;
if MSComm.CommEvent <> comEvReceive then exit; s := VarArrayCreate([0,1023],varByte);
s := MSComm.Input; Memo1.Lines.Add('总长:=' +IntToStr(Length(s)));
for i := 0 to Length(s) do
begin
Memo1.Lines.Add(IntToHex(s[i],2));
end;
end;我用Memo1显示收到的数据,比串口调试助手中的总是少几个字节的数据。MSComm.RTthreshold := 1
请教大家!!!!!
另外我觉得用中断去收1K的数据也太多了,不知道对你是否有帮助。
我查看了这个.ocx文件,应该是装VB6时装上的,和系统没什么关系。
但是我的就是少最后几个(几个还不一定,暂时没发现缺的多于5个)。
procedure TfrmAdvanceRecord.MSCommComm(Sender: TObject);
var
i : integer;
s : OLEVariant;
begin //{
if nCommClose then exit;
if MSComm.CommEvent <> comEvReceive then exit; s := VarArrayCreate([0,1023],varByte);
s := MSComm.Input; //Memo1.Lines.Add('总长:=' +IntToStr(Length(s)));
for i := 0 to 1023 do
begin
try
Memo1.Lines.Add(IntToHex(s[i],2));
except
end
end;
end;