用mscomm控件做的串口通讯,现在收不到任何数据,急,在线(50分)

  • 主题发起人 hutaraki
  • 开始时间
H

hutaraki

Unregistered / Unconfirmed
GUEST, unregistred user!
没有任何数据可以接收到,发送可以,源代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, MSCommLib_TLB, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
MSComm1: TMSComm;
Edit1: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject
var Action: TCloseAction);
procedure MSComm1Comm(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
if MSComm1.PortOpen=true then MSComm1.PortOpen:=false;
MSComm1.CommPort:=1;
MSComm1.PortOpen:=true;
MSComm1.InBufferCount:=0;
MSComm1.InputLen:=0;
MSComm1.RThreshold:=1;
MSComm1.DTREnable:=true;
MSComm1.RTSEnable:=true;

Memo1.Lines.Clear;

end;

procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
begin
MSComm1.PortOpen:=false;
MSComm1.DTREnable:=false;
MSComm1.RTSEnable:=false;
end;

procedure TForm1.MSComm1Comm(Sender: TObject);
var
s:Olevariant;
begin
showmessage('1');
if MSComm1.CommEvent=comEvSend then
begin
showmessage('已经成功发送');
end;
if MSComm1.CommEvent=comEvReceive then
begin
s:=MSComm1.Input;
Memo1.Lines.Text:=Memo1.Lines.Text+s;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
MSComm1.PortOpen:=true;
MSComm1.DTREnable:=false;
MSComm1.RTSEnable:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MSComm1.Output:='nnnn'+chr(13);
end;

end.
 
R

real_clq

Unregistered / Unconfirmed
GUEST, unregistred user!
你把两个com口连起来了没有?[没细看你的程序,不好意思,只是自作主张提醒一下]
 
H

hutaraki

Unregistered / Unconfirmed
GUEST, unregistred user!
什么叫两个com口连起来?不懂
 
R

real_clq

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的,你在本机上做com通讯,要用一个连线把两个com口连在一起的。然后要用两个
MSComm1控件,一个在com1发送,一个在com2接收,这样才能通讯的。dfw上有很多例子,
你有空的话找来看看也行。
 
S

shxcn

Unregistered / Unconfirmed
GUEST, unregistred user!
MSComm1.InputLen:=0;
MSComm1.RThreshold:=1;
这两句因放在open这前
 
H

hutaraki

Unregistered / Unconfirmed
GUEST, unregistred user!
MSComm1.InputLen:=0;
MSComm1.RThreshold:=1;
这两句放不放在前面都无所谓,我在属性里都设置了。
real-clq,我并不是凭空做,而且有一套可视对讲设备,从中读取数据,我做过测试,在两
台机器之间通讯,一台发,一台收,能正常使用,所以我初步怀疑是这套设备的RS232总线
没做通。(因为这是可视对讲设备的工程师临时加上去的模块,原本并不能和电脑进行通讯)
 
L

lance0909

Unregistered / Unconfirmed
GUEST, unregistred user!
最简单,把串口3-4线短接试试,就知道了
 

Similar threads

I
回复
0
查看
503
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
660
import
I
顶部