我用SPCOMM的控件,将其串口号和BAUDRATE改为我要的值,其它用默认设置.然后进行数据的发送和接收,
可是接收到的数据却只有我发送出去的字符,却没有结果.
如comm1.writecomdata('at',2);
本来应该接收到ATOK才对,可是却只能接收到AT,就没了,这是为什么呀?procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s:string;
begin
setlength(s,bufferlength);
move(buffer^,pchar(s)^,bufferlength);
memo1.Lines.Add(s);end;
可是接收到的数据却只有我发送出去的字符,却没有结果.
如comm1.writecomdata('at',2);
本来应该接收到ATOK才对,可是却只能接收到AT,就没了,这是为什么呀?procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s:string;
begin
setlength(s,bufferlength);
move(buffer^,pchar(s)^,bufferlength);
memo1.Lines.Add(s);end;
procedure TfrmMain.WriteComm (s : string);
var
sLen : integer;
begin
s := 'AT' + #$d + #$a;
sLen := Length (s);
comm.WriteCommData(@s[1],sLen);
end;
如果要关闭串口回显的话可以输入'ATE0'
当我调用DLL中的writecommdata时,就报读地址错误了,应该怎么办呢?
Var
s:Pchar;
begin
s:='AT+GMR'+#13+#10;
if Tempcomm.WriteCommData(s,length(s)+1) then
begin
Result:=True
end else
begin
Result:=False;
end;end;
Spcomm,
SysUtils,
Classes;type
//ss=array[0..200] of char;
TTempProc =class
public
class procedure Receivedata(Sender: TObject; Buffer: Pointer; BufferLength: Word);
end;//var
//str1:^ss;
var
Tempcomm:Tcomm;
ComportReturnstring:Pchar;{$R *.res}
Class procedure TTempproc.Receivedata(Sender: TObject; Buffer: Pointer; BufferLength: Word);
Begin
ComportReturnstring:=buffer;
end;Function Comportinit(Comportno:string;Baudrate:word):Boolean;stdcall;
begin
try
Tempcomm:=Tcomm.Create(nil);
Tempcomm.CommName :=Comportno;
Tempcomm.BaudRate :=Baudrate;
Tempcomm.StartComm ; Tempcomm.OnReceiveData :=TTempproc.Receivedata ;
Result:=True;
except
Result:=False;
end;
end;Function Readsoftwareversion:Boolean;stdcall;
Var
s:Pchar;
begin
//s:='AT+GMR'+#13+#10;
if Tempcomm.WriteCommData('at+gmr',length(s)+1) then
begin
Result:=True
end else
begin
Result:=False;
end;end;Function Comportfree:Boolean;stdcall;
begin
Tempcomm.StopComm ;
Result:= True;
end;Function ReturnResult:Pchar;stdcall;
begin
Result:=Comportreturnstring;
end;exports
Readsoftwareversion,
ReturnResult,
Comportinit;begin
end.