实在没分了,那位大侠写过串口通信程序了,帮我看看我的程序行吗?(0分)

  • 主题发起人 主题发起人 逆水
  • 开始时间 开始时间

逆水

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Form1: TForm1;
VIEWSTRING:STRING;
I,k:INTEGER;
RBUF,SBUF:ARRAY[1..255] OF BYTE;

implementation

{$R *.DFM}

procedure TForm1.onshow(Sender: TObject);
begin
COMM1.STARTCOMM;
end;

procedure TForm1.onclose(Sender: TObject; var Action: TCloseAction);
begin
COMM1.STOPCOMM;
end;
PROCEDURE SENDDATA;
VAR
I:INTEGER;
COMMFLG:BOOLEAN;
BEGIN
VIEWSTRING:='';
COMMFLG:=TRUE;
FOR I:=1 TO k div 2 DO
BEGIN
IF NOT FORM1.COMM1.WRITECOMMDATA(@SBUF,1) THEN
BEGIN
COMMFLG:=FALSE;
BREAK;
END;
SLEEP(120);
VIEWSTRING:=VIEWSTRING+INTTOHEX(SBUF,2)+''; END;
VIEWSTRING:='发送'+VIEWSTRING;
FORM1.MEMO1.LINES.ADD(VIEWSTRING);
FORM1.MEMO1.LINES.ADD('');
IF NOT COMMFLG THEN MESSAGEDLG('发送失败',mterror,[mbyes],0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s1:string;
p:pchar;
n:integer;
a,b:dword;
begin_time:dword;

begin

if checkbox1.checked= true then
edit1.text:='1111';
k:=length(edit1.text);
FillMemory(@sbuf,255,0);
for i:=0 to (k div 2)-1 do
s1:=s1+chr(strtoint('$'+copy(edit1.text,2*i+1,2)));
p:=Pchar(s1);
CopyMemory(@sbuf,p,Strlen(p));
senddata;


while (gettickcount-begin_time<20) do
application.ProcessMessages ;


begin
if checkbox2.checked= true then
edit1.text:='2222';

k:=length(edit1.text);
FillMemory(@sbuf,255,0);
for i:=0 to (k div 2)-1 do
s1:=s1+chr(strtoint('$'+copy(edit1.text,2*i+1,2)));
p:=Pchar(s1);
CopyMemory(@sbuf,p,Strlen(p));
senddata;

end;
end;



procedure TForm1.onreceivedata(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,2)+'';
viewstring:='接收'+viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
var
n:integer;

begin
for n:=1 to 2 do
begin
with tcheckbox(form1.findcomponent('checkbox'+inttostr(n))) do
checked:=not checked;
end;

end;

end.

上面是我的通讯程序中的一部分,我本想实现当只有CHECKBOX1被选中时,发送出去‘11111’,
当只有CHECKBOX2被选中时,发送出去‘22222’当CHECKBOX3选中时,因为它是个全选键,CHECKBOX1
和CHECKBOX2都被选中,这时先发送‘111111’再发送‘222222’,可我的程序好象没法实现。
那位老兄帮我看看,如何改改可以实现我的目地。多谢了。我有急用呀。
 
后退
顶部