为什么超级终端可以,而Spcomm传,返回的就不行了。在线等(50分)

  • 主题发起人 主题发起人 neverdeath
  • 开始时间 开始时间
不用那么麻烦,你要设定端口程序,必须先关闭,再设定参数,最后开启,否则够戗。
另外写字符的时候,不需要使用循环语句,多余。
我给你个精简的例子。
unit uDMCOMM;

interface

uses
SysUtils, Classes, SPComm;

type
TDMCOMM = class(TDataModule)
Comm1: TComm;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function COMInit(COM:Integer):Boolean;
function COMSendRead:Boolean;
function COMSendWrite(WStr:String):Boolean;
function COMStop:Boolean;
function COMReset:Boolean;
end;

var
DMCOMM: TDMCOMM;

implementation

uses CGlobal;

{$R *.dfm}

{ TDMCOMM }

function TDMCOMM.COMInit(COM: Integer): Boolean;
begin
if COM=1 then
Comm1.CommName:='COM1' else Comm1.CommName:='COM2';
try
Comm1.StartComm;
Result:=True;
except
Comm1.StopComm;
Result:=False;
end;
end;

function TDMCOMM.COMReset: Boolean;
var
FStr:String;
begin
FStr:=#$1b#97;//97
Sleep(5);
Result:=Comm1.WriteCommData(pchar(FStr),Length(Fstr));
end;

function TDMCOMM.COMSendRead: Boolean;
var
FStr:String;
begin
FStr:=#$1B#$5D;
Sleep(5);
Result:=Comm1.WriteCommData(pchar(FStr),Length(Fstr));
end;

function TDMCOMM.COMSendWrite(WStr: String): Boolean;
var
FStr:String;
begin
FStr:=#$1b#$74+WStr+#$1d#$1b#$5c;
Sleep(5);
Result:=Comm1.WriteCommData(pchar(FStr),Length(Fstr));
end;

function TDMCOMM.COMStop: Boolean;
var
FStr:String;
begin
FStr:=#$1b#$30;
Sleep(5);
Result:=Comm1.WriteCommData(pchar(FStr),Length(Fstr));
end;

procedure TDMCOMM.DataModuleCreate(Sender: TObject);
begin
if Logon.COM=1 then
Comm1.CommName:='COM1' else Comm1.CommName:='COM2';
end;

procedure TDMCOMM.DataModuleDestroy(Sender: TObject);
begin
Comm1.StopComm;
end;

end.
 
谢谢大家的捧场,问题先搞一段落,分不多,见谅!
 
多人接受答案了。
 
我也遇到同样的问题,但不是用SPCOMM写的,是API,你问题解决了没有啊,解决了就麻烦告诉我方法,谢谢啊,很急。QQ89649132
 
老大,我还没那么厉害,用API写,不过有一点可以肯定,超级终端在最后默认加入 空格和回车,只要你也加上应该也可以,如果好的话,可以把源码贴上来,让大家学习一下,特别是我哈~~~
 
我的是别人写的,我改错啊,改了一个星期了都,代码其他一切正常,没有你说的那个问题,因为要是先运行超级终端断开后运行代码,那软件就一点问题都没,现在就是单独运行代码时,不能才会出现不能和端口通信,我看你碰到的和我差不多,就问问你了,我的源代码贴出来了,在提问里面,可惜没人回答。现在我学着用SPCOMM
 
兄弟,我没看清你的问题是什么?
 
那你到我提问的地方看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3455575
 

Similar threads

后退
顶部