当前位置: 首页 > 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://wiki.neutronadmin.com/news/433226/

相关文章:

  • 公司设计网站有什么好处网站建设流程体会
  • 杭州做网站外包公司网站如何做注册类 cpa
  • 网站开发毕业设计参考文献filetype doc 网站建设
  • 电商网站与企业网站区别龙岩seo外包公司
  • 营销型网站做网站费
  • 网站建设与网页设计课哈尔滨站建筑
  • 怎么根据已有网站做新网站科技厅
  • 网站域名交易网站建设教程在线观看
  • 旅游网站源码下载朝阳专业网站建设
  • 鞋行业的网站建设网站建设空间使用标准
  • 软考中级哪个最容易过如何做网站seo排名优化
  • 网站标签管理做网站找哪家又便宜又好
  • 深圳网站建设手机网站建设互联网接入服务商是
  • 做博客网站最好用什么系统建设手机银行官网
  • 后台更改公司网站背景图片wordpress虚拟主机如何安装
  • seo网络推广是什么意思seo网站关键词优化方式
  • 重庆旅游网站建设规划做网站有自己的服务器
  • 做网站需要跟客户了解什么软件网站开发公司
  • dw如何做商业网站wordpress 企业站点
  • 哪些外贸网站比较好陕西高端品牌网站建设
  • 电子产品网站建设模板校园电商平台网站建设
  • 网站建设釒首先金手指十五贵州手机网站建设
  • 免费申请手机网站建设工程信息公开平台
  • 网站选项卡图标代码怎样访问简版网站
  • 公司网站建设基本流程图投放广告找什么平台
  • 网站怎么免费建站常用的网络营销方法
  • 做论坛app网站如何网上销售自己的产品
  • wordpress视频发布站主题友情链接交换要注意哪些问题
  • h5个人网站代码汝阳网站建设
  • 网页工具栏怎么还原象山网站优化公司