读书人

本人做的第一个程序多亏CSDN上面的帮

发布时间: 2012-02-15 12:09:44 作者: rapoo

本人做的第一个程序,多亏CSDN上面各位高手的帮助,虽然程序内容很简单,但是我很满足
unit COMM;



interface



uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, SPComm, ExtCtrls, Buttons, ComCtrls, Menus;



type

TForm1 = class(TForm)

Com1: TComm;

Button4: TButton;

GroupBox1: TGroupBox;

Button1: TButton;

Button2: TButton;

Button3: TButton;
Button5: TButton;
memo1: TMemo;
edRx: TEdit;
Memo2: TMemo;
Timer1: TTimer;
Label4: TLabel;
Label8: TLabel;
Button11: TButton;
Button10: TButton;
Button12: TButton;
Edit2: TEdit;
Button13: TButton;
Edit3: TEdit;
Button14: TButton;
Button15: TButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
edTx: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Label18: TLabel;
Button16: TButton;
Button7: TButton;
GroupBox3: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label16: TLabel;
Label17: TLabel;
Label19: TLabel;
Label20: TLabel;
Button8: TButton;
Button9: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Com1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
procedure Button3Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure Edit9Change(Sender: TObject);
procedure Edit10Change(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button16Click(Sender: TObject);





private
{ Private declarations }


FShowText:Boolean;
FRXNum:Integer;
FTXNum:Integer;
procedure ShowRX;
procedure ShowTX;


procedure SendString(const str:string);
private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

viewstring:string;

test: string;
i:integer;

rbuf,sbuf:array[0..16] of byte;


implementation
uses StrUtils;
const
minWidth=627;
minHeight=444;
idAbout =$F200;


{$R *.dfm}


//打开串口

procedure TForm1.Button1Click(Sender: TObject);

begin


Com1.StopComm;

Com1.StartComm;

Button1.Enabled :=False;

Button2.Enabled :=True;



end;

//关闭串口

procedure TForm1.Button2Click(Sender: TObject);

begin

Com1.StopComm;

Button2.Enabled := False;

Button1.Enabled := True;


end;


//自定义发送数据过程

procedure senddata;

var

i:integer;

commflg:boolean;

begin

viewstring:='';

commflg:=true;

for i:=1 to 9 do

begin

if not form1.com1.writecommdata(@sbuf[i],1) then

begin

commflg:=false;

break;

end;

//发送时字节间的延时

sleep(2);

viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end;

viewstring:=viewstring;

form1.memo2.lines.add(viewstring);

form1.memo1.lines.add('');

if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0);

end;

procedure senddata4;

var

i:integer;

commflg:boolean;

begin

viewstring:='';

commflg:=true;

for i:=1 to 8 do

begin

if not form1.com1.writecommdata(@sbuf[i],1) then

begin

commflg:=false;

break;

end;

//发送时字节间的延时

sleep(2);

viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end;

viewstring:=viewstring;

form1.memo2.lines.add(viewstring);

form1.memo1.lines.add('');

if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0);

end;


//打开阀门
procedure TForm1.Button4Click(Sender: TObject);
Var
U:integer;
begin
test := '打开阀门';
if label15.caption='' then
begin
showmessage('请先抄表获取表号') ;
exit;
end
else
Form1.Memo1.Clear;
Form1.Memo2.Clear;

U:= strtoint('$'+trim( label15.caption)) + ($A6);
edit2.text:=IntToHex(U,2);

sbuf[1]:=byte($EA ); {帧头}

sbuf[2]:=byte($EA );

sbuf[3]:=byte($07 );

sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption)) ); {命令号}

sbuf[5]:=byte($4F );

sbuf[6]:=byte($50 );

sbuf[7]:=byte($00 );

sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)) ); {校验和} // StrToInt('$'+String(U))



sbuf[9]:=byte($16 );

senddata;{调用发送函数}

form1.Button9.Click;




end;


procedure TForm1.Button10Click(Sender: TObject);

begin
Form1.Memo1.Clear;
Form1.Memo2.Clear;



sbuf[1]:=byte($EA); {帧头}

sbuf[2]:=byte($EA);

sbuf[3]:=byte($07);

sbuf[4]:=byte($ff);

sbuf[5]:=byte($50);

sbuf[6]:=byte($46);

sbuf[7]:=byte($ff);

sbuf[8]:=byte($9d);

sbuf[9]:=byte($16);

senddata;{调用发送函数}

form1.Button9.Click;
end;

procedure TForm1.Button12Click(Sender: TObject);
Var
U:integer;
begin
if label15.caption= '' then
begin
showmessage('请先抄收水表表号') ;
exit;
end
else
test := '查询余额与阀门状态';
Form1.Memo1.Clear;
Form1.Memo2.Clear;

U:= strtoint('$'+trim( label15.caption)) + ($a2);
edit2.text:=IntToHex(U,2);

sbuf[1]:=byte($EA); {帧头}

sbuf[2]:=byte($EA);

sbuf[3]:=byte($07);

sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}

sbuf[5]:=byte($43);

sbuf[6]:=byte($58);

sbuf[7]:=byte($00);

sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)));

sbuf[9]:=byte($16);

senddata;{调用发送函数}

form1.Button9.Click;
end;


procedure TForm1.ShowRX;
begin
edRX.Text:='Rx:'+IntTostr(FRXNum);
end;

procedure TForm1.ShowTX;
begin
edTx.Text:='Tx:'+IntTostr(FTXNum);
end;



//定义 senddata3
procedure senddata3;

var

i:integer;

commflg:boolean;

begin

viewstring:='';

commflg:=true;

for i:=1 to 15 do

begin

if not form1.com1.writecommdata(@sbuf[i],1) then

begin

commflg:=false;

break;

end;

//发送时字节间的延时

sleep(2);

viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end;

viewstring:=viewstring;

form1.memo2.lines.add(viewstring);

form1.memo1.lines.add('');

if not commflg then messagedlg('发送失败!' ,mterror,[mbyes],0);

end;

//设置时间命令
procedure TForm1.Button3Click(Sender: TObject);
var
U:integer;
begin
test := '设置时间命令';
Form1.Memo1.Clear;
Form1.Memo2.Clear;

U:= strtoint('$'+trim( Edit5.text))+strtoint('$'+trim( Edit6.text))+strtoint('$'+trim( Edit7.text)) + strtoint('$'+trim( Edit8.text))+strtoint('$'+trim( Edit9.text))+strtoint('$'+trim( label15.caption)) + strtoint('$'+trim( Edit10.text))+strtoint('$'+trim( Edit11.text))+($b8);
edit2.text:=IntToHex(U,2);

sbuf[1]:=byte($EA); {帧头}

sbuf[2]:=byte($EA);

sbuf[3]:=byte($0d);

sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}

sbuf[5]:=byte($58);

sbuf[6]:=byte($53);

sbuf[7]:=byte(StrToInt('$'+trim( Edit5.text)));//年

sbuf[8]:=byte(StrToInt('$'+trim( Edit6.text)));//月

sbuf[9]:=byte(StrToInt('$'+trim( Edit7.text))); //星期

sbuf[10]:=byte(StrToInt('$'+trim( Edit8.text))); //日期

sbuf[11]:=byte(StrToInt('$'+trim( Edit9.text))); //时

sbuf[12]:=byte(StrToInt('$'+trim( Edit10.text))); //分

sbuf[13]:=byte(StrToInt('$'+trim( Edit11.text))); //秒

sbuf[14]:=byte(StrToInt('$'+trim( Edit2.text))); //校验和

sbuf[15]:=byte($16);

senddata3;{调用发送函数}

Form1.Button9.Click;

end;





procedure TForm1.ListBox1Click(Sender: TObject);
begin




Com1.StopComm;
Com1.CommName:=ComboBox1.Text;
Com1.StartComm;

end;






[解决办法]
恭喜,接分~

ps:代码太乱了,好好规整下~
[解决办法]
年青人有前途!!!
[解决办法]
加油加油..
[解决办法]
多去找些感兴趣程序的源码来看看,长进更快.


[解决办法]
最好重新排版一下
[解决办法]
要不要把所有的代码都贴上来啊。
好长哦。。
[解决办法]
看着好累...

读书人网 >.NET

热点推荐