串口开发群:2000202!!!怎样用Delphi进行开发与单片机通信的软件,请各位高手帮忙!!!!!!!! ( 积分: 100 )

  • 主题发起人 fsh8205-1
  • 开始时间
串口通讯的实现,可以作到很简单。
如楼上的各位所说,最简单的方法是使用VB6附带的MSCOMM控件。
只须在程序里设置
端口(COM1)、通讯协议(9600,N,8,1)、接收事件(相应代码)
打开端口,就OK
 
To fsh8205-1,
我机加入到群,可在群内进行讨论
 
加我
qq:105204912
 
To fsh8205-1,
是串口通讯控件源码,是我原公司同事开发的;
只要在Insatll component安装中加入SCOMMER.pas/或.dcu就可以使用了
 
楼上的兄弟可不可以把这个控件发过来给我啊?
我的邮箱是:Gfansenhua@yahoo.com.cn
 
晕死,这个问题还在进行.....
 
楼主,上面好几个同志哥都给出了完整的例子,你有没仔细看过?
那些都是宝贝,你研究透一个就行了,还用得着东问西问吗,
 
就是串口操作
 
楼主晕了.
 
用SPCOMM比较好,我曾经用过。
 
//----------------------系统初始化---------------------------
procedure system_init;
var
temp: string;
begin
with mainform do
begin

helpmemo.lines.loadfromfile('help.txt'); // 调入帮助文件

datainit; // 初始化变量
comm_status := false; // 通讯状态初始为停止
smindex := 0;
poll_count := 0;
read_index := 0;
sendflag1 := false;
econfile := Teconfile.init; // 构造ECONFILE对象
getdatafromfile(datamemo, getfilename, econfile);// 调入数据定义中的系统设置


// 根据数据定义文件初始化界面
if econfile.coilstatetotal>0 then displaycoilstate(econfile,coilstategrid);
coilstate.TabVisible := econfile.coilstatetotal>0;

if econfile.inputstatetotal>0 then displayinputstate(econfile,inputstategrid);
inputstate.TabVisible := econfile.inputstatetotal>0;

if econfile.holdregistertotal>0 then displayholdregister(econfile,holdregistergrid);
holdregister.TabVisible := econfile.holdregistertotal>0;

if econfile.inputregistertotal>0 then displayinputregister(econfile,inputregistergrid);
inputregister.TabVisible := econfile.inputregistertotal>0;

if econfile.setprotecttotal>0 then displayprotect(econfile,protectgrid);
protect.TabVisible := econfile.setprotecttotal>0;

if econfile.setpowertotal>0 then displaypower(econfile,powergrid);
power.TabVisible := econfile.setpowertotal>0;

if econfile.setxiangliangtotal>0 then displayxiangliang(econfile,xianglianggrid);
xiangliang.TabVisible := econfile.setxiangliangtotal>0;

if econfile.setxiebototal>0 then displayxiebo(econfile,xiebogrid);
xiebo.TabVisible := econfile.setxiebototal>0;

mainform.pagecon.Visible := true;


statusbar1.Panels[0].Text := '通讯未开始';
temp := econfile.comm.mode;
if (uppercase(temp)='RTU') then modbusrtu1.Checked:=true;
if (uppercase(temp)='ASCII') then modbusascii1.Checked:=true;

case econfile.comm.portnum of
1: com11.Checked := true;
2: com21.Checked := true;
3: com31.checked := true;
4: com41.checked := true;
else com11.checked := true;
end;

case econfile.comm.parity of
0: paritynone.Checked := true;
1: parityodd.Checked := true;
2: parityeven.checked := true;
end;

case econfile.comm.baudrate of
110: b110.Checked := true;
300: b300.Checked := true;
600: b600.Checked := true;
1200: b1200.Checked := true;
2400: b2400.Checked := true;
4800: b4800.Checked := true;
9600: b9600.Checked := true;
14400: b14400.Checked := true;
19200: b19200.Checked := true;
38400: b38400.Checked := true;
56000: b56000.Checked := true;
57600: b57600.Checked := true;
115200: b115200.Checked := true;
128000: b128000.Checked := true;
256000: b256000.Checked := true;
else
begin
buser.Checked := true;
end;
end; // end case econfile.comm.baudrate

m_address.Items[econfile.comm.rtuaddress-1].Checked := true;

// 初始化通讯相关参数
vacomm1.Close;
vacomm1.Baudrate := changbaudrate(econfile.comm.baudrate);
vacomm1.UserBaudrate := econfile.comm.userbaud;
vacomm1.Databits := changdatabits(econfile.comm.databits);
vacomm1.Stopbits := changstopbits(econfile.comm.stopbits);
vacomm1.Parity := changparity(econfile.comm.parity);
vacomm1.PortNum := econfile.comm.portnum;
sendtimer.Enabled := false;
revtimer.Enabled := false;
sendtimer.Interval := 1;
timerout1.Interval := econfile.comm.timeout;
m_comset.Enabled := true;
// readholdregister(econfile);
// readfifo(econfile);
end;//end with mainform do
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
884
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部