最简单的问题:简单串口实验没有达到目的(在线等待)(50分)

  • 主题发起人 xiaoyaozh
  • 开始时间
X

xiaoyaozh

Unregistered / Unconfirmed
GUEST, unregistred user!
本人第一次用DELPHI编程,在一个程序里用串口发送和接收显示数据
但程序并不能正确显示,问题出在哪儿?
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;
Button1: TButton;
procedure MSComm1Comm(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MSComm1.CommPort:=2;
if MSComm1.PortOpen=False then
MSComm1.PortOpen:=True;
MSComm1.Output:='This is a text';
end;

procedure TForm1.MSComm1Comm(Sender: TObject);
var recstr:Olevariant;
begin
if MSComm1.commEvent=2 then
begin
recstr:=MSComm1.input;
Memo1.text:=Memo1.Text + recstr;
end;
end;
end.
 
我在一年前用过mscomm控件,有些忘记了。
你的波特率,数据位,什么的设置对了吗?
好像是setting属性,你查一查?
还有,在发送之前要把缓冲区清零,好像用buffersize
bu不然可能收到的是以前的内容,
另外缓冲区的大小也要注意一下,不要超过了,
还有发送数据的格式,也要设置,有二进制和字符两种。
你注意一下这些问题,再试一试??
 
你看看inputMode属性是否为0?
 
to book523:这些我都用的缺省值
to moodboy:是
 
你把这段加上去,绝对没问题!已测试
procedure TForm1.FormCreate(Sender: TObject);
begin
mscomm1.inbuffercount:=0;
mscomm1.InputLen :=0;
mscomm1.RThreshold :=1;
mscomm1.settings:='9600,n,8,1';
mscomm1.CommPort :=1;
memo1.Text :='';
end;
 
不好意思,我用的是2口,你把上面的mscomm1.commport:=1改为:=2吧:)
 
沃又源代码,你要不要??
 
你也可以搜索一下论坛以前的贴子,这种问题很多的.
 
to moodboy:加上之后的确有反应了,以前我是想用其缺省值不知道为什么不行
      不过还有一点问题,我再看看
to danliyou:要,给我发过来吧:zxyeml@sina.com
谢谢各位!
 
我想提一下,看你的代码好像没错,但是别忘了,你做的是串口编程,要是在单机里用的话
你应该把串口中的针来对接一下,这样才能收得到:),用平常的导线就行了但是到底是谁跟谁接我忘了,
你自己查一查吧。还有一个方法是接上个什么东东,如Moden 啊什么的。祝好运。
 
不能正确显示是什么意思
 
谢谢,实现了,
可是不知为何我编的程序有时不能运行,
按F9后闪一下又回到原状态而没有弹出程序运行的窗口界面 
这是为什么呢?编程的问题还是某个地方设置的问题?还是BUG?
 
你打开的是哪个文件?.pas?保存时是否save all?打开.dpr应该没这回事。
 
接受答案了.
 
顶部