解决方案 »
- ODAC在多线程方式下的问题!!
- Parent这个是哪个控件的属性?
- 高分求助TWEBBROWSER问题 帮顶有分
- 肯请高手们帮帮忙,远程访问服务器问题!(急急急)
- 急急:TQuickRep自定义打印页面大小代码,
- 如何令TQuery组件调用SQL存储过程返回的结果集可写?
- 请猛禽接分 原贴http://expert.csdn.net/Expert/topic/2368/2368797.xml?temp=.1806757
- 怎样用install shield给要安装程序的机器上装上BDE引擎?
- 一个简单的问题
- 十万火急!!!哪儿我可以得到Des加密算法的Pascal源码?立即给分!
- 获取某一个文件的上一级目录
- delphi xe2 的程序如何在win7下提权 为 管理员权限
var S:string;
bufferlength:integer;
begin
if not MSComm1.CommEvent = comEvReceive then
exit;
if mscomm1.InBufferCount>0 then S:=mscomm1.Input;
bufferlength:=length(S);
memo1.Lines.Add(S);
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, OleCtrls, MSCommLib_TLB, ExtCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
btnStart: TButton;
btnStop: TButton;
btnSend: TButton;
BitBtn1: TBitBtn;
Timer1: TTimer;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
MSComm1: TMSComm;
procedure btnStartClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure btnSendClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure sendcomm(port:byte);
procedure Timer1Timer(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
gate:byte;implementation{$R *.DFM}
procedure tform1.sendcomm(port:byte);
var
s:string;
i:integer;
begin
SetLength(s,18);
s[1]:=chr($7E);
s[2]:='1';
s[14]:='0';
s[15]:='2';
s[16]:='4';
case port of
1:begin
s[3]:='1'; //校验和0242h~0245h
s[17]:='2';
memo1.Lines.Add('发送时间:'+timetostr(now));
end;
2:begin
s[3]:='2';
s[17]:='3';
memo2.Lines.Add('发送时间:'+timetostr(now));
end;
3:begin
s[3]:='3';
s[17]:='4';
memo3.Lines.Add('发送时间:'+timetostr(now));
end;
4:begin
s[3]:='4';
s[17]:='5';
memo4.Lines.Add('发送时间:'+timetostr(now));
end;
end;
for i:=4 to 13 do
begin
s[i]:='0';
end;
s[18]:=chr($0d);
if not mscomm1.PortOpen then mscomm1.PortOpen:=true;
for i:=1 to 18 do
begin
mscomm1.Output:=s[i];
sleep(3);
end;
end;procedure TForm1.btnStartClick(Sender: TObject);
begin
if not mscomm1.PortOpen then mscomm1.PortOpen:=true;
timer1.Enabled:=true;
btnstart.Enabled:=false;
end;procedure TForm1.btnStopClick(Sender: TObject);
begin
timer1.Enabled:=false;
btnstart.Enabled:=true;
if mscomm1.PortOpen then mscomm1.PortOpen:=false;
end;procedure TForm1.btnSendClick(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
memo3.Clear;
memo4.Clear;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if mscomm1.PortOpen then mscomm1.PortOpen:=false;
Close;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
sendcomm(gate);
gate:=gate+1;
if gate>4 then gate:=1;
end;procedure TForm1.MSComm1Comm(Sender: TObject);
var
S:string;
Ss:array of byte;
bufferlength:integer;
i:integer;
y:single;
begin
if not MSComm1.CommEvent = comEvReceive then
Exit;
S:=mscomm1.input;
bufferlength:=length(S);
if not bufferlength=18 then exit;
for i:=1 to BufferLength do
begin
Ss[i-1]:=ord(S[i]);
end;
if (Ss[0]<>$7E) or (Ss[17]<>$0d)then exit;
if (Ss[1]<>$31) then exit;
if (Ss[9]>$39)or(Ss[9]<$30)then S[10]:='0';
if (Ss[10]>$39)or(Ss[10]<$30)then S[11]:='0';
if (Ss[11]>$39)or(Ss[11]<$30)then S[12]:='0';
if (Ss[12]>$39)or(Ss[12]<$30)then S[13]:='0';
y:=0.001*strtoint(S[13])+0.01*strtoint(S[12])+0.1*strtoint(S[11])+strtoint(S[10]);
// y:= 100.88;
case Ss[2] of
$31:begin
Memo1.Lines.Add(formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now));
edit1.Text:=formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now);
end;
$32:begin
Memo2.Lines.Add(formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now));
edit2.Text:=formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now);
end;
$33:begin
Memo3.Lines.Add(formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now));
edit3.Text:=formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now);
end;
$34:begin
Memo4.Lines.Add(formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now));
edit4.Text:=formatfloat('0.000',y)+'毫米 时间为: '+timetostr(now);
end;
end;
end;end.