怎样用mscomm32控件从硬件中接收数据!!!!
写出代码
!!!!
谢谢!!!
写出代码
!!!!
谢谢!!!
解决方案 »
- 多线程服务程序如何刷新内存
- 100分求一段delphi程序
- 一个文件夹有10个文件,如何把这些文件的文件名取来,存到一个数组中?
- 关于如何在treeview中打出结点下的所有子结点。
- 用快搜,一样的能找到你想要的 www.kuaisou.com 等您的检验:
- 软件注册问题!
- 在DBGRID控件中直接在表尾增加数据,如何实现新增记录自动复制上行记录
- 为什么Form们看不见了
- 用DELPHI如何从服务器下载文件?
- 有礼了。需不需要释放句炳?
- 请指导,关于调用DLL中包含非摸态窗体的DLL时,在释放这个DLL时出错!
- 在Service Application里加入ADOConnect,为什么在TService的OnStart事件里做ADOConnect.Connect:=true 启动时会出错?(编译无错)
第二句:comm1.portclose;用来关闭端口.
第三句:comm1.output:=edit1.text;用来向端口写数据.
第四句:edit2.text:=comm1.input;用来从端口读数据.可以写在oncomm事件里面.当事件类型是2的时候可以用来接收数据.不过我发现mscomm控件在WinXP下面怎么不能用?说没有LicenseKey,不知道什么意思?
WriteFile等几个函数
第二句:comm1.portclose;用来关闭端口.
第三句:comm1.output:=edit1.text;用来向端口写数据.
第四句:edit2.text:=comm1.input;用来从端口读数据.可以写在oncomm事件里面.当事件类型是2的时候可以用来接收数据.
spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
写了个例子,基本的串口通讯都可以实现,可提供参考。
下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
多多指正:[email protected]
Setting属性值),Combobox2选择串口(CommPort属性值),按Button1开始接收
数据,按Button2停止接收。
procedure TForm1.FormCreate(Sender: TObject);
begin
Mscomm1.InBufferCount :=0; // 清空接收缓冲区
Mscomm1.InputLen :=0; // Input读取整个缓冲区内容
Mscomm1.RThreshold :=1; // 每次接收到字符即产生OnComm事件
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Mscomm1.Settings :=ComboBox1.Text;
if ComboBox2.Text ='com1' then // 假设只考虑com1和com2两种情况
Mscomm1.CommPort :=1
else
Mscomm1.CommPort :=2;
Mscomm1.PortOpen :=true; // 打开串口
Mscomm1.DTREnable :=true; // 数据终端准备好
Mscomm1.RTSEnable :=true; // 请求发送
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Mscomm1.PortOpen :=false; // 关闭串口
Mscomm1.DTREnable :=false;
Mscomm1.RTSEnable :=false;
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;
2comm1.portclose;用来关闭端口.
3comm1.output:=edit1.text;用来向端口写数据.
4edit2.text:=comm1.input;用来从端口读数据.可以写在oncomm事件里面.当事件类型是2的时候可以用来接收数据.
begin
Comm.CommPort:=1;//串口初始化
Comm.Settings :='9600,n,8,2';
Comm.RThreshold:=1;
Comm.InputMode:=1;
Comm.PortOpen:= True ; //comm口设置
Comm.InBufferCount:=0;
Comm.InputLen:=0;
Comm.OutBufferCount:=0;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Comm.Output:=x//需要发送的数据
end;
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
case Comm.CommEvent of
ComEvReceive:
begin
length:=MSComm1.InBufferCount ;
ReceiveDataVar:= Comm.input;
MSComm1.InBufferCount:=0;
for j:=0 to length do
ReceiveData[j]:=ReceiveDataVar[j];
end;// end if 是读数据
end;
end;
end;