用delphi实现pc机和单片机通讯 |
尚未結案
|
ggggggggg
一般會員 發表:6 回覆:9 積分:3 註冊:2003-05-27 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
我用delphi寫一串口通訊程式,用元件spcomm,在往單片機寫資料時,總共16個信道的資料,當我寫道12信道時出錯,出錯信息是:project pcmain.exe raised exception class econverterror with message ''
還有就是怎麼提高串口通訊的準確度????? ==================
請列出你的程式~方便回覆~ < src="http://simg3.pchome.com.tw/simage/thumbnail/3628/home.kimo.com.tw£¯angelbeach2002£¯qoo£¯angel_qoo.gif">網海無涯,學無止境!
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
資料來源:大富翁論壇~ 程式採用的是 class="code">
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SPComm, ExtCtrls; type
TForm1 = class(TForm)
Comm1: TComm;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
viewstring:string;
i:integer;
rbuf,sbuf:array[1..16] of byte; implementation
{$R *.DFM} procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 6 do
begin
if not form1.comm1.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
//發送時字節間的延時
sleep(2);
viewstring:=viewstring inttohex(sbuf[i],2) '';
end;
viewstring:='發送' viewstring;
form1.memo1.lines.add(viewstring);
form1.memo1.lines.add('');
if not commflg then messagedlg('發送失敗 !' ,mterror,[mbyes],0);
end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end; procedure TForm1.FormShow(Sender: TObject);
begin
comm1.StartComm;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
sbuf[1]:=byte($f0); //幀頭
sbuf[2]:=byte($01); //命令號
sbuf[3]:=byte($ff);
sbuf[4]:=byte($ff);
sbuf[5]:=byte($01);
sbuf[6]:=byte($f0); //幀尾
senddata;//調用發送函數
end; procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
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; //這個timer事件是在下懶得用鼠標點擊了,就通過timer來觸發!
procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Click;
end; end. ==============================================================
//下面是spcomm元件的參數設置:
object Comm1: TComm
CommName = 'COM1'
BaudRate = 9600
ParityCheck = False
Outx_CtsFlow = False
Outx_DsrFlow = False
DtrControl = DtrEnable
DsrSensitivity = False
TxContinueOnXoff = True
Outx_XonXoffFlow = True
Inx_XonXoffFlow = True
ReplaceWhenParityError = False
IgnoreNullChar = False
RtsControl = RtsEnable
XonLimit = 500
XoffLimit = 500
ByteSize = _8
Parity = None
StopBits = _1
XonChar = #17
XoffChar = #19
ReplacedChar = #0
ReadIntervalTimeout = 100
ReadTotalTimeoutMultiplier = 0
ReadTotalTimeoutConstant = 0
WriteTotalTimeoutMultiplier = 0
WriteTotalTimeoutConstant = 0
OnReceiveData = Comm1ReceiveData
Left = 24
Top = 8 end.
網海無涯,學無止境!
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
ggggggggg
一般會員 發表:6 回覆:9 積分:3 註冊:2003-05-27 發送簡訊給我 |
unit pcmain; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdActns, ActnList, StdCtrls, ComCtrls, ImgList, ToolWin, Menus,
OleCtrls, MSCommLib_TLB, SPComm, DB, DBTables, Grids, DBGrids, ExtCtrls,
Buttons; type
TmainForm = class(TForm)
MainMenu1: TMainMenu;
f1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N1: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N2: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N3: TMenuItem;
N13: TMenuItem;
N4: TMenuItem;
ActionList1: TActionList;
ToolBar1: TToolBar;
ToolButton6: TToolButton;
ToolButton4: TToolButton;
ImageList1: TImageList;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton5: TToolButton;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
PrintDlg1: TPrintDlg;
ToolButton7: TToolButton;
COM21: TMenuItem;
COM31: TMenuItem;
COM41: TMenuItem;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Timer1: TTimer;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
PrintDialog1: TPrintDialog;
StatusBar1: TStatusBar;
Table1BDEDesigner: TStringField;
Table1BDEDesigner2: TStringField;
Table1CTCSS: TStringField;
Table1BDEDesigner3: TStringField;
Table1CTCSS2: TStringField;
Table1BDEDesigner4: TBooleanField;
Table1BDEDesigner5: TBooleanField;
Table1BDEDesigner6: TBooleanField;
ProgressBar1: TProgressBar;
Timer2: TTimer;
Timer3: TTimer;
Timer4: TTimer;
Timer5: TTimer;
Comm1: TComm;
Timer6: TTimer;
Timer7: TTimer;
Timer8: TTimer;
Timer9: TTimer;
Timer10: TTimer;
Timer11: TTimer;
Timer12: TTimer;
Timer13: TTimer;
Timer14: TTimer;
Timer15: TTimer;
Timer16: TTimer;
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure COM21Click(Sender: TObject);
procedure COM31Click(Sender: TObject);
procedure COM41Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Comm1ReceiveError(Sender: TObject; EventMask: Cardinal);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Timer1Timer(sender:tobject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
function sw(v:string):integer;
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure Timer7Timer(Sender: TObject);
procedure Timer8Timer(Sender: TObject);
procedure Timer9Timer(Sender: TObject);
procedure Timer10Timer(Sender: TObject);
procedure Timer11Timer(Sender: TObject);
procedure Timer12Timer(Sender: TObject);
procedure Timer13Timer(Sender: TObject);
procedure Timer14Timer(Sender: TObject);
procedure Timer15Timer(Sender: TObject);
procedure Timer16Timer(Sender: TObject);
function datasw(revstr:string):string;
// procedure Table1CalcFields(DataSet: TDataSet);
//procedure DelayMSec(MSec: Word);
private
{ Private declarations }
public
{ Public declarations } end; var
mainForm: TmainForm; implementation uses gongnengshezhi;
{$R *.dfm} procedure TmainForm.N8Click(Sender: TObject);
begin
application.Terminate;
end; procedure TmainForm.N11Click(Sender: TObject);
var
form1:tform1;
begin
form1:=tform1.Create(self);
form1.showmodal;//gongnengshezhi.show;
end; procedure TmainForm.N13Click(Sender: TObject);
begin
n13.Checked:=true;
end; procedure TmainForm.COM21Click(Sender: TObject);
begin
com21.Checked :=true;
end; procedure TmainForm.COM31Click(Sender: TObject);
begin
com31.Checked :=true;
end; procedure TmainForm.COM41Click(Sender: TObject);
begin
com41.Checked :=true;
end; procedure TmainForm.N9Click(Sender: TObject); //dupin
begin
timer1.Enabled:=true;
end; procedure tmainform.Timer1Timer(sender:tobject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$10;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer2Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$18;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer3Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$20;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer4Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$28;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer5Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$30;
p[3]:=$30;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer6Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$38;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer7Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$40;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer8Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$48;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer9Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$50;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer10Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$58;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer11Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$60;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer12Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$68;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer13Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$70;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer14Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$78;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer15Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$80;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer16Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$88;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; function tmainform.datasw(revstr:string):string;
var
t1:string;
begin
t1:=copy(revstr,7,2) copy(revstr,5,2) copy(revstr,3,2) copy(revstr,1,2);
datasw:=t1;
end;
procedure TmainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
ch,rtem,atem,btem:string;
rep:array[1..12]of byte;
begin
rtem:='';
move(buffer^,rep,bufferlength);
for i:=1 to bufferlength do
rtem:=rtem inttohex(rep[i],2) '';
if length(rtem)=24 then
begin
ch:=copy(rtem,5,2);
btem:=copy(rtem,9,8);
atem:=copy(rtem,17,8);
case sw(ch) of
16:begin
timer1.Enabled:=false;
timer2.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post
//Next;
end;
atem:='';
btem:='';
end;
24:begin
timer2.Enabled:=false;
timer3.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
32:begin
timer3.Enabled:=false;
timer4.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 40:begin
timer4.Enabled:=false;
timer5.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
48:begin
timer5.Enabled:=false;
timer6.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 56:begin
timer6.Enabled:=false;
timer7.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
64:begin
timer7.Enabled:=false;
timer8.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 72:begin
timer8.Enabled:=false;
timer9.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
btem:='';
atem:='';
end;
80:begin
timer9.Enabled:=false;
timer10.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 88:begin
timer10.Enabled:=false;
timer11.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
96:begin
timer11.Enabled:=false;
timer12.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 104:begin
timer12.Enabled:=false;
timer13.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
112:begin
timer13.Enabled:=false;
timer14.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 120:begin
timer14.Enabled:=false;
timer15.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
128:begin
timer15.Enabled:=false;
timer16.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 136:begin
timer16.Enabled:=false;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
end;
end;
end; procedure TmainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
procedure TmainForm.FormShow(Sender: TObject);
begin
comm1.StartComm;
end; procedure TmainForm.N5Click(Sender: TObject);
begin
if OpenDialog1.Execute then
//table1.lines.LoadFromFile(OpenDialog1.FileName);
end; procedure TmainForm.N6Click(Sender: TObject);
begin
if savedialog1.Execute then
begin
//memo1.Lines.SaveToFile(savedialog1.FileName );
savedialog1.InitialDir:= extractfilepath(savedialog1.FileName );
end;
end;
procedure TmainForm.ToolButton2Click(Sender: TObject);
begin
if printdialog1.Execute then
print;
end; procedure TmainForm.FormCreate(Sender: TObject);
begin
Application.ShowHint := True;
Application.HintColor := clAqua; //{ÑÕɫΪÇà}
Application.HintPause := 1000;
table1.Open;
//TStringGrid(DbGrid1).FixedCols := 2;
end; procedure TmainForm.Comm1ReceiveError(Sender: TObject;
EventMask: Cardinal);
begin
showmessage('chaoshi');
end; function tmainform.sw(v:string):integer;
var
t1,t2,re:integer;
begin
t1:=0;
t2:=0;
case v[1] of
'0':t1:=0;
'1':t1:=1;
'2':t1:=2;
'3':t1:=3;
'4':t1:=4;
'5':t1:=5;
'6':t1:=6;
'7':t1:=7;
'8':t1:=8;
'9':t1:=9;
'A':t1:=10;
'B':t1:=11;
'C':t1:=12;
'D':t1:=13;
'E':t1:=14;
'F':t1:=15;
end;
case v[2] of
'0':t2:=0;
'1':t2:=1;
'2':t2:=2;
'3':t2:=3;
'4':t2:=4;
'5':t2:=5;
'6':t2:=6;
'7':t2:=7;
'8':t2:=8;
'9':t2:=9;
'A':t2:=10;
'B':t2:=11;
'C':t2:=12;
'D':t2:=13;
'E':t2:=14;
'F':t2:=15;
end;
re:=t1*16 t2;
sw:=re;
end;
procedure TmainForm.N10Click(Sender: TObject);//xiepin
begin
timer5.Enabled:=true;
end;
end. 请各位大大帮我看看?接收数据时,总是接收到一半就结束啊??
|
ggggggggg
一般會員 發表:6 回覆:9 積分:3 註冊:2003-05-27 發送簡訊給我 |
unit pcmain; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdActns, ActnList, StdCtrls, ComCtrls, ImgList, ToolWin, Menus,
OleCtrls, MSCommLib_TLB, SPComm, DB, DBTables, Grids, DBGrids, ExtCtrls,
Buttons; type
TmainForm = class(TForm)
MainMenu1: TMainMenu;
f1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N1: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N2: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N3: TMenuItem;
N13: TMenuItem;
N4: TMenuItem;
ActionList1: TActionList;
ToolBar1: TToolBar;
ToolButton6: TToolButton;
ToolButton4: TToolButton;
ImageList1: TImageList;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton5: TToolButton;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
PrintDlg1: TPrintDlg;
ToolButton7: TToolButton;
COM21: TMenuItem;
COM31: TMenuItem;
COM41: TMenuItem;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Timer1: TTimer;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
PrintDialog1: TPrintDialog;
StatusBar1: TStatusBar;
Table1BDEDesigner: TStringField;
Table1BDEDesigner2: TStringField;
Table1CTCSS: TStringField;
Table1BDEDesigner3: TStringField;
Table1CTCSS2: TStringField;
Table1BDEDesigner4: TBooleanField;
Table1BDEDesigner5: TBooleanField;
Table1BDEDesigner6: TBooleanField;
ProgressBar1: TProgressBar;
Timer2: TTimer;
Timer3: TTimer;
Timer4: TTimer;
Timer5: TTimer;
Comm1: TComm;
Timer6: TTimer;
Timer7: TTimer;
Timer8: TTimer;
Timer9: TTimer;
Timer10: TTimer;
Timer11: TTimer;
Timer12: TTimer;
Timer13: TTimer;
Timer14: TTimer;
Timer15: TTimer;
Timer16: TTimer;
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure COM21Click(Sender: TObject);
procedure COM31Click(Sender: TObject);
procedure COM41Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Comm1ReceiveError(Sender: TObject; EventMask: Cardinal);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Timer1Timer(sender:tobject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
function sw(v:string):integer;
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure Timer7Timer(Sender: TObject);
procedure Timer8Timer(Sender: TObject);
procedure Timer9Timer(Sender: TObject);
procedure Timer10Timer(Sender: TObject);
procedure Timer11Timer(Sender: TObject);
procedure Timer12Timer(Sender: TObject);
procedure Timer13Timer(Sender: TObject);
procedure Timer14Timer(Sender: TObject);
procedure Timer15Timer(Sender: TObject);
procedure Timer16Timer(Sender: TObject);
function datasw(revstr:string):string;
// procedure Table1CalcFields(DataSet: TDataSet);
//procedure DelayMSec(MSec: Word);
private
{ Private declarations }
public
{ Public declarations } end; var
mainForm: TmainForm; implementation uses gongnengshezhi;
{$R *.dfm} procedure TmainForm.N8Click(Sender: TObject);
begin
application.Terminate;
end; procedure TmainForm.N11Click(Sender: TObject);
var
form1:tform1;
begin
form1:=tform1.Create(self);
form1.showmodal;//gongnengshezhi.show;
end; procedure TmainForm.N13Click(Sender: TObject);
begin
n13.Checked:=true;
end; procedure TmainForm.COM21Click(Sender: TObject);
begin
com21.Checked :=true;
end; procedure TmainForm.COM31Click(Sender: TObject);
begin
com31.Checked :=true;
end; procedure TmainForm.COM41Click(Sender: TObject);
begin
com41.Checked :=true;
end; procedure TmainForm.N9Click(Sender: TObject); //dupin
begin
timer1.Enabled:=true;
end; procedure tmainform.Timer1Timer(sender:tobject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$10;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer2Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$18;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer3Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$20;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer4Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$28;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer5Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$30;
p[3]:=$30;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer6Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$38;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer7Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$40;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer8Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$48;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer9Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$50;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer10Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$58;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; procedure TmainForm.Timer11Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$60;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer12Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$68;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer13Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$70;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer14Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$78;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer15Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$80;
p[4]:=$08;
comm1.writecommdata(@p,4);
end;
procedure TmainForm.Timer16Timer(Sender: TObject);
var
p:array[1..4]of byte;
begin
p[1]:=$52;
p[2]:=$00;
p[3]:=$88;
p[4]:=$08;
comm1.writecommdata(@p,4);
end; function tmainform.datasw(revstr:string):string;
var
t1:string;
begin
t1:=copy(revstr,7,2) copy(revstr,5,2) copy(revstr,3,2) copy(revstr,1,2);
datasw:=t1;
end;
procedure TmainForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
ch,rtem,atem,btem:string;
rep:array[1..12]of byte;
begin
rtem:='';
move(buffer^,rep,bufferlength);
for i:=1 to bufferlength do
rtem:=rtem inttohex(rep[i],2) '';
if length(rtem)=24 then
begin
ch:=copy(rtem,5,2);
btem:=copy(rtem,9,8);
atem:=copy(rtem,17,8);
case sw(ch) of
16:begin
timer1.Enabled:=false;
timer2.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post
//Next;
end;
atem:='';
btem:='';
end;
24:begin
timer2.Enabled:=false;
timer3.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
32:begin
timer3.Enabled:=false;
timer4.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 40:begin
timer4.Enabled:=false;
timer5.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
48:begin
timer5.Enabled:=false;
timer6.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 56:begin
timer6.Enabled:=false;
timer7.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
64:begin
timer7.Enabled:=false;
timer8.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 72:begin
timer8.Enabled:=false;
timer9.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
btem:='';
atem:='';
end;
80:begin
timer9.Enabled:=false;
timer10.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 88:begin
timer10.Enabled:=false;
timer11.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
96:begin
timer11.Enabled:=false;
timer12.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 104:begin
timer12.Enabled:=false;
timer13.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
112:begin
timer13.Enabled:=false;
timer14.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 120:begin
timer14.Enabled:=false;
timer15.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
128:begin
timer15.Enabled:=false;
timer16.Enabled:=true;
with table1 do
begin
Edit;
FieldByName('·¢ÉäƵÂÊ').AsString:=datasw(atem);
FieldByName('½ÓÊÕƵÂÊ').AsString:=datasw(btem);
post;
//Next;
end;
atem:='';
btem:='';
end; 136:begin
timer16.Enabled:=false;
with table1 do
begin
Edit;
FieldByName('·¢ËÍCTCSS').AsString:=copy(btem,7,2) copy(btem,5,2);
fieldByName('½ÓÊÕCTCSS').AsString:=copy(btem,3,2) copy(btem,1,2);
if sametext(copy(atem,1,2),'fb')then
FieldByName('½û·¢').AsBoolean:=true
else
FieldByName('½û·¢').AsBoolean:=false;
if sametext(copy(atem,3,2),'01') then
FieldByName('ƵÒÆ').AsBoolean:=true
else
FieldByName('ƵÒÆ').AsBoolean:=false;
Post;
Next;
end;
atem:='';
btem:='';
end;
end;
end;
end; procedure TmainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
procedure TmainForm.FormShow(Sender: TObject);
begin
comm1.StartComm;
end; procedure TmainForm.N5Click(Sender: TObject);
begin
if OpenDialog1.Execute then
//table1.lines.LoadFromFile(OpenDialog1.FileName);
end; procedure TmainForm.N6Click(Sender: TObject);
begin
if savedialog1.Execute then
begin
//memo1.Lines.SaveToFile(savedialog1.FileName );
savedialog1.InitialDir:= extractfilepath(savedialog1.FileName );
end;
end;
procedure TmainForm.ToolButton2Click(Sender: TObject);
begin
if printdialog1.Execute then
print;
end; procedure TmainForm.FormCreate(Sender: TObject);
begin
Application.ShowHint := True;
Application.HintColor := clAqua; //{ÑÕɫΪÇà}
Application.HintPause := 1000;
table1.Open;
//TStringGrid(DbGrid1).FixedCols := 2;
end; procedure TmainForm.Comm1ReceiveError(Sender: TObject;
EventMask: Cardinal);
begin
showmessage('chaoshi');
end; function tmainform.sw(v:string):integer;
var
t1,t2,re:integer;
begin
t1:=0;
t2:=0;
case v[1] of
'0':t1:=0;
'1':t1:=1;
'2':t1:=2;
'3':t1:=3;
'4':t1:=4;
'5':t1:=5;
'6':t1:=6;
'7':t1:=7;
'8':t1:=8;
'9':t1:=9;
'A':t1:=10;
'B':t1:=11;
'C':t1:=12;
'D':t1:=13;
'E':t1:=14;
'F':t1:=15;
end;
case v[2] of
'0':t2:=0;
'1':t2:=1;
'2':t2:=2;
'3':t2:=3;
'4':t2:=4;
'5':t2:=5;
'6':t2:=6;
'7':t2:=7;
'8':t2:=8;
'9':t2:=9;
'A':t2:=10;
'B':t2:=11;
'C':t2:=12;
'D':t2:=13;
'E':t2:=14;
'F':t2:=15;
end;
re:=t1*16 t2;
sw:=re;
end;
procedure TmainForm.N10Click(Sender: TObject);//xiepin
begin
timer5.Enabled:=true;
end;
end. 请各位大大帮我看看?接收数据时,总是接收到一半就结束啊??
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
我前几个月写了一个与二类收款机(单片机)进行MODEM通讯的服务程序,我的一点建议是直接打开串口读写资料,虽然比SPCOMM麻烦,但比较容易把握,避免因对SPCOMM不够熟悉造成各种问题(我就没有用SPCOMM):
我开发的服务程序采取这种方法经联机测试,没有问题.因程序太大无法贴上,且也怕公司找我麻烦,下面是我在开发初期做的一些测试代码,可能参考:
function OpenComm():Boolean;
var
cc:TCOMMCONFIG;
Temp:string;
ret:Boolean;
begin
// Temp:='COM'+inttostr(rdcom.ItemIndex+1); // 选择所要打开的COM
ret:=False;
case piCOM of
1:
Temp:='COM1';
2:
Temp:='COM2';
3:
Temp:='COM3';
end;
hComm:=CreateFile(PChar(Temp), GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, 0, 0); // 打开COM1
if (hComm = INVALID_HANDLE_VALUE) then begin // 如果COM 未打开
MessageBox (0, '打开通信端口错误!!','',MB_OK);
ret:=False;
end
else
begin
GetCommState(hComm,cc.dcb); // 得知目前COM 的状态
cc.dcb.BaudRate:=piBPS; // 设置波特率为9600
cc.dcb.ByteSize:=8; // 字节为 8 bit
cc.dcb.Parity:=NOPARITY; // Parity 为 None
cc.dcb.StopBits:=ONESTOPBIT; // 1 个Stop bit if not SetCommState(hComm, cc.dcb) then begin // 设置COM 的状态
MessageBox (0, '通信端口设置错误!!!','',MB_OK);
CloseHandle(hComm);
ret:=False;
end;
end;
ret:=True;
OpenComm:=ret;
end; //置MODEM为等待呼叫状态
function InitModem():boolean;
var
lrc:longword;
okstring:string;
comd:string;
waitS,comdLen:Integer;
outbyte :array of char;
i,j:integer;
inbuff: array[0..1047] of Char;
nBytesRead, dwEvent, dwError:LongWORD ;
cs:TCOMSTAT;
begin
comd := 'ATE0X4V1&L0&D0S0=1'+chr(13);
okstring:='OK';
comdLen:=19;
PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 数据
timedelay(300);
WriteFile(hComm,pchar(comd)^,comdLen,lrc,nil); // 送出数据
j:=0; while(j<100000)do
begin
j:=j 1;
ClearCommError(hComm,dwError,@CS); //取得状态
// 数据是否大于我们所准备的Buffer
if cs.cbInQue > 1047 then
begin
PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 数据
result := FALSE ;
exit;
end;
if(cs.cbInQue=0) then
continue;
ReadFile(hComm,inbuff,cs.cbInQue,nBytesRead,nil); // 接收COM 的数据 if StrPos(inbuff, PChar(okstring)) = nil then
begin
result:=FALSE;
exit;
end;
result:=TRUE;
exit;
end;
result:=FALSE;
end; function Receive_msg(var buff:array of char):boolean;
var
nBytesRead, dwEvent, dwError:LongWORD ;
cs:TCOMSTAT;
i,len:integer;
lenH,lenL:char;
commBuf:array[0..1024] of Char;
begin
i:=0;
TimeDelay(300);
while(i<100000)do
begin
ClearCommError(hComm,dwError,@CS); //取得状态
//数据是否大于我们所准备的Buffer
//if cs.cbInQue > sizeof(commBuf) then begin
// PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 数据
// RecieveCommand:=False;
// exit;
//end;
i:=i 1;
if cs.cbInQue<16 then
continue;
break;
end;
if(i=100000)then
begin
result := False;
exit;
end;
//转移数据到变量中
i:=0;
while(i
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |