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

做网站现成的测试账号东莞网站制作的公司

做网站现成的测试账号,东莞网站制作的公司,清远市网站建设,网站开发系统规划2019独角兽企业重金招聘Python工程师标准>>> 使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示。网上查错误得: ---------------------------------------------------------------------…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示。网上查错误得:

------------------------------------------------------------------------

OutX_XonXOffFlow/InX_XonXoffFlow:这个属性是指进行发送/接收时的软件握手标志,两个握手信号之间的数据被认为是通讯数据,收到握手信号后,通讯就中止了。

FOutx_XonXoffFlow := True;
FInx_XonXoffFlow := True;

XOffChar/XOnChar:这是指握手的字节,默认的初始中,有

FXonChar := chr($11);
FXoffChar := chr($13);

至此,真相大白。0x11,0x13被占用为通讯握手信号,自然不会得到正确的处理。

问题找到了,解决也很容易。只需要在Comm的初始化中,自己定义

Comm.Inx_XonXoffFlow := False;
Comm.Outx_XonXoffFlow := False;

用Delphi 实现串口通信,常用的方法有:使用控件,如Mscomm和Spcomm控件等;使用API函数;在Delphi 中调用其它串口通信程序。

使用API方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。

Spcomm是Small-Pig Team开发的一个第三方Delphi串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在Delphi软件开发中已经成为一个被广泛应用的串口通信开发控件。


 

Spcomm 共实现了三个类:串口类Tcomm、读线程类TreadThread以及写线程类TwziteThread[1]。Tcomm的某个实例在方法 StartComm中打开串口,并实例化了一个读线程ReadThread和一个写线程WriteThread,它们和主线程之间进行消息的传递,实现串 口通信。

在 Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into existing package属性页中Unit file name输人框中选择SPCOMM.pas文件,单击两次 “OK”按钮后,就可以将Spcomm控件安装到Delphi7.0的System组件页上。


 

Spcomm串口通信控件的基本属性、方法和事件说明如下:

CommName属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。
Parity属性:校验位 None、Odd、Even、Mark、Space等。
BaudRate:设定支持串口通信用的波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。
ByteSize属性:表示一个字节中,使用多少个数据位收发数据,根据具体情况设定5、6、7、8等。
StopBits属性:表示一个字节中,使用停止位的位数,根据具体情况设定1、1.5、2等。
SendDataEmpty属性:布尔属性,为True时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。
StartComm方法:用来打开通信串口,开始通信。如果失败,则会导致串行口错误。错误类型大致分为串行口己处于打开状态,所以不能打开串行口,不能创建读写进程,不能建立串行口缓冲区等。
StopComm方法:用来停止通信串行口的所有进程,关闭串口。
WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word) 方法是带有布尔型返回值的函数,其中参量pszStr-ingToWrite是要写入串行口的字符串,DwSizeaf- DataToWrite是要写入的字符串的长度。该函数通过一个写线程向串行口输出缓冲区发送数据。发送操作将在后台默认执行。如果写线程 PostMessage成功,则返回值是True,若写线程失败,返回值是False。
OnReceiveData(Buffer:Pointer;BufferLength:Word), 其中Buffer是指向输入缓冲区的指针。BufferLength是从缓冲区收到的数据长度。当输入缓冲区收到数据时,该事件被触发。当输入缓存有数据 时将触发该事件,对从串口收到的数据进行处理。

Spcomm 串行通信控件具有多线程的特性,接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发OnReceiveData事件;用 WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后台完成数据发送工作。在接收和发送数据前需要初始化串口,用 StartComm方法打开串口,退出程序时用StopComm方法关闭串口。


 

Spcomm应用的核心在于主线程、读线程和写线程之间的消息传递机制,而通信数据相关信息的传递也是以消息传递的方式进行的。在使用Spcomm进行串口通信编程,除按照说明使用外,还需要特别注意以下两个问题。

首 先,Spcomm是通过ReadIntervalTimeout属性的设置,来确定所接收到的数据是否属子同一帧数据,其默认值是100ms,也就是说, 只要任何两个字节到达的时间间隔小于1OOms,都被认为是属于同一帧数据,在与单片机协同工作时,要特别注意这个问题[2]。
另 外,Spcomm的默认属性设置是支持软件流控制的,用于流控制的字符是13H(XoffChar)和11H(XonChar),当单片机以二进制方式发 送数据时,必须要禁用Spcomm对于软件流控制的支持,否则,在数据帧中出现的13H,11H会被Spcomm作为控制字符而加以忽略。

转载于:https://my.oschina.net/jingshishengxu/blog/111628

http://www.lbrq.cn/news/2493541.html

相关文章:

  • 网站栏目建设方案实时热搜
  • 慈溪做无痛同济&网站百度广告电话号码是多少
  • 专业优化网站建设百度竞价什么意思
  • 南昌政府网站建设seo自己怎么做
  • 网站的涂鸦效果图怎么做的百度刷自己网站的关键词
  • 怎么在qq上自己做网站做百度推广销售怎么找客户
  • 做网站是什么时候分页长春seo网站管理
  • 如何制作微信网站武汉武汉最新
  • 西昌市做网站的品牌广告策划方案
  • 网站诊断分析今日热搜榜
  • 查询网站备案进度精准客源app
  • 二手图书交易网站建设自媒体推广
  • 质量好网站建设公司服装品牌营销策划方案
  • 网站建设财务计划与预测产品宣传方案
  • 神华两学一做网站事件营销成功案例
  • 有关网站建设的书籍举例说明什么是seo
  • 做网站思路长沙市云网站建设
  • 做婚纱摄影网站多少钱百度官网客服
  • 做招聘网站怎么赚钱制作一个网站步骤
  • 网站会员系统怎么做模版企业查询
  • 网站公司怎么找客户百度经验官网首页
  • 有什么公司是建设网站的吗搜索引擎优化的常用方法
  • 免费网站制作推广plc培训机构哪家最好
  • 做音乐网站曲库在哪找百度在线使用网页版
  • 精神文明建设网站关键词优化资讯
  • 网站制作软件价格百度网址大全官方下载
  • wordpress自适应 分页宁波seo推广费用
  • 代做课程设计的网站挖掘关键词工具
  • 常德做网站的公司东莞网络推广平台
  • 南宁好的网站建设公司武汉本地seo
  • 疯狂星期四文案网第21天运营日记
  • 不坑盒子突然不见了怎么办?
  • Python|OpenCV-实现快速处理图像的方法(23)
  • 根本是什么
  • 雨雪雾冰全预警:交通气象站为出行安全筑起“隐形防护网”
  • MyBatis-Plus 通用 Service