当前位置: 首页 > news >正文

本网站正在建设升级中公司网站开发费用济南兴田德润评价

本网站正在建设升级中,公司网站开发费用济南兴田德润评价,免费网站模版,有后台的网站如何建设spcomm更加简单 转贴 Delphi中串口通信的实现 河南省计算中心 张海航 -------------------------------------------------------------------------------- Delphi是一种具有功能强大、简便易用和代码执行速度快等优点的可视化快速应用开发工具#xff0c;它在…spcomm更加简单     转贴     Delphi中串口通信的实现         河南省计算中心   张海航           --------------------------------------------------------------------------------               Delphi是一种具有功能强大、简便易用和代码执行速度快等优点的可视化快速应用开发工具它在构架企业信息系统方面发挥着越来越重要的作用许多程序员愿意选择   Delphi作为开发工具编制各种应用程序。但是美中不足之处是   Delphi没有自带的串口通信控件在它的帮助文档里也没有提及串口通信这就给编制通信程序的开发人员带来许多不便。               目前利用   Delphi实现串口通信的常用的方法有   3种一是利用控件如   MSCOMM控件和   SPCOMM控件二是使用   API函数三是调用其他串口通信程序。其中利用   API编写串口通信程序较为复杂需要掌握大量的通信知识。相比较而言利用   SPCOMM控件则相对较简单并且该控件具有丰富的与串口通信密切相关的属性及事件提供了对串口的各种操作而且还支持多线程。下面本文结合实例详细介绍   SPCOMM控件的使用。               SPCOMM的安装               1选择下拉菜单   Component中的   Install   Component选项弹出如图   1所示的窗口。                     图   1             在   Unit   file   name处填写   SPCOMM控件所在的路径其他各项可用默认值点击   OK按钮。               2安装后在   System控件面板中将出现一个红色控件   COM。现在就可以像   Delphi自带控件一样使用   COM控件了。               SPCOMM的属性、方法和事件               1.属性               ●CommName表示   COM1、   COM2等串口的名字               ●BaudRate:根据实际需要设定的波特率在串口打开后也可更改此值实际波特率随之更改               ●ParityCheck表示是否需要奇偶校验               ●ByteSize根据实际情况设定的字节长度               ●Parity奇偶校验位               ●StopBits停止位               ●SendDataEmpty这是一个布尔型属性为   true时表示发送缓存为空或者发送队列里没有信息为   false时表示发送缓存不为空或者发送队列里有信息。               2方法               ●Startcomm方法用于打开串口当打开失败时通常会报错。错误主要有   7种⑴串口已经打开⑵打开串口错误⑶文件句柄不是通信句柄⑷不能够安装通信缓存⑸不能产生事件⑹不能产生读进程⑺不能产生写进程               ●StopComm方法用于关闭串口没有返回值               ●WriteCommData(pDataToWrite:   PChar;dwSizeofDataToWrite:Word   )方法是个带有布尔型返回值的函数用于将一个字符串发送到写进程发送成功返回   true发送失败返回   false。执行此函数将立即得到返回值发送操作随后执行。该函数有两个参数其中   pDataToWrite是要发送的字符串   dwSizeofDataToWrite是发送字符串的长度。               3事件               ●OnReceiveData   :procedure   (Sender:   TObject;Buffer:   Pointer;BufferLength:   Word)   of   object               当有数据输入缓存时将触发该事件在这里可以对从串口收到的数据进行处理。   Buffer中是收到的数据   BufferLength是收到的数据长度。               ●OnReceiveError   :   procedure(Sender:   TObject;   EventMask   :   DWORD)               当接收数据出现错误时将触发该事件。               SPCOMM的使用               下面是一个利用   SPCOMM控件的串口通信的例子。               以实现   PC机与单片机   8051之间的通信为例首先要调通它们之间的握手信号。假定它们之间的通信协议是   PC到   8051一帧数据   6个字节   8051到   PC一帧数据也为   6个字节。当   PC发出   F0,01,FF,FF,01,F0后   8051能收到一帧   F0,01,FF,FF,01,F0表示数据通信握手成功两者之间就可以按照协议相互传输数据。               创建一个新的工程   COMM.DPR把窗体的   NAME属性定为   FCOMM把窗体的标题定义为测试通信按照图   2添加控件   (图   2中黑色矩形围住的控件即为   COMM1)。                           图   2             1.设定   COMM1属性               ●波特率   4800               ●奇偶校验位无               ●字节长度   8               ●停止位   1               ●串口   COM1。               Memo1中将显示发送和接收的数据。将新的窗体存储为   Comm.pas。               2.编写源代码               //变量说明               var               fcomm:   TFCOMM;               viewstring:string;               i:integer;               rbuf,sbuf:array[16]   of   byte;               //打开串口               procedure   TFCOMM.FormShow(Sender:   TObject);               begin               comm1.StartComm;               end;               //关闭串口               procedure   TFCOMM.FormClose(Sender:   TObject;   var   Action:   TCloseAction);               begin               comm1.StopComm;               end;               //自定义发送数据过程               procedure   senddata;               var               i:integer;               commflg:boolean;               begin               viewstring:‘’   ;               commflg:true;               for   i:1   to   6   do               begin               if   not   fcomm.comm1.writecommdata(sbuf[i],1)   then               begin               commflg:false;               break;               end;               //发送时字节间的延时               sleep(2);               viewstring:viewstring   inttohex(sbuf[i],2)‘’   ;   end;               viewstring:‘发送’   viewstring;               fcomm.memo1.lines.add(viewstring);               fcomm.memo1.lines.add(‘’   );               if   not   commflg   then   messagedlg(‘发送失败   !’   ,mterror,[mbyes],0);               end;               //发送按钮的点击事件               procedure   TFCOMM.Btn_sendClick(Sender:   TObject);               begin               sbuf[1]:byte(   f0);   //帧头               sbuf[2]:byte(   01);   //命令号               sbuf[3]:byte(   ff);               sbuf[4]:byte(   ff);               sbuf[5]:byte(   01);               sbuf[6]:byte(   f0);   //帧尾               senddata;//调用发送函数               end;               //接收过程               procedure   TFCOMM.Comm1ReceiveData(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[i],2)‘’   ;               viewstring:‘接收’   viewstring;               memo1.lines.add(viewstring);               memo1.lines.add(‘’   );               end;               如果   memo1上显示发送   F0   01   FF   FF   01   F0和接收到   F0   01   FF   FF   01   F0这表示串口已正确地发送出数据并正确地接收到数据则串口通信成功。 转载于:https://www.cnblogs.com/shylock/archive/2008/11/02/1325101.html
http://www.zqtcl.cn/news/77578/

相关文章:

  • 信阳网站开发建设公司网站建设与安全
  • 衡阳网站排名网站建设相关专业
  • 在线绘画网站邯郸手机网站建设服务
  • 沧州高端网站建设公司建设部网站房地产资质
  • 密山网站建设深圳做关键词优化平台
  • 网站续费服务商电影网站建设视频教程
  • 广东省app开发公司青岛建站seo公司
  • 做网站公司排名电话西安公司网站如何建设
  • 南昌做网站开发的公司有哪些百度飙风算法 小网站
  • 网站分哪几种韩国手表网站
  • 网站设计 卡片式设计做网站用啥软件
  • 网站后台管理系统进不去怎么办广西建设科技协会网站
  • 新注册公司网站怎么做太原跨境电商
  • 公司手机app开发报价seo入门
  • 高端网站建设公司增长域名解析查询网
  • 传媒的域名做个什么网站东莞网站优化公司
  • 企业不做网站dart 网站开发
  • wordpress全站迁移抖音seo排名优化公司
  • 自己制作一个网站怎么制作工业设计是什么专业
  • 网站开发判断是否为手机备案掉了网站会怎样
  • 西安的网站建设网站淘宝开店流程步骤图片
  • 网站关键词快速排名旅游最新资讯
  • 做3d动画的斑马网站最新国际新闻稿
  • 微商城网站建设平台合同范本网站后台策划
  • 网站建设 站内页面连接wordpress禁止更新代码
  • 哪个做网站公司好合肥网约车从业资格证
  • 网站一个页面多少钱seo优化排名
  • 成都网站定制建设wordpress数据库密码加密多少位
  • 网站关键词分隔图片网站 建站
  • 学网站建设的学校瓷砖网络推广培训