SPComm的一点小诀窍 spcomm的问题导致数据丢失 0x11与0x13错误
来源:互联网 发布:命中注定我爱你 知乎 编辑:程序博客网 时间:2024/05/22 12:45
最近几天完成了BiasDAC的程序编写。调试的过程还算比较顺利,除了几个有点bt的小问题。其中一个困扰了我两三天的时间,今天上午终于将其解决。
由于BiasDAC是用RS232 Serial Port通信的,延用之前的程序,使用了Delphi的SPComm控件。在之前的使用中,SPComm控件一直工作正常,使用的是一般的string进行消息的传递。
首先是0x11发送之后,返回的0x11消息会被忽略;其次0x13发送之后,只能返回很有限的消息,而且似乎Serial Port就此关闭,如果再发送消息,就会造成Serial Port失去响应,只能通过重新启动计算机才能恢复。
后来上网上查询,原来不能正常处理0x11和0x13的问题早就存在,原因是SPComm空间中两个属性的存在。
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;
关闭软件握手功能即可。在一般通讯中,硬件已经具备了握手功能,所以也不会影响到正常的Comm通讯。
1 0
- SPComm的一点小诀窍 spcomm的问题导致数据丢失 0x11与0x13错误
- SPComm的一点小诀窍 spcomm的问题导致数据丢失
- SPComm的一点小诀窍 spcomm的问题导致数据丢失
- SPCOMM接收遇到0x13串口死掉的解决方法
- spcomm数据丢失解决方法
- SPComm的一个小注意
- SPComm接收数据的两种方法
- SPCOMM的属性
- SPCOMM的方法
- spcomm控件的使用
- 关于SPCOMM使用中碰到的问题
- spcomm
- spcomm
- Spcomm串口控件的例程
- SPCOMM的一些用法注意
- Delphi控件SPComm改造为Lazarus版本的问题
- SPComm丢数据
- 在Delphi环境下基于SPCOMM控件开发串口通讯报文字节丢失的问题解决
- 【最大流】【HDU3338】【Kakuro Extension】
- 【最大团】【HDU1530】【Maximum Clique】
- 使用Socket发送GET/POST请求
- 什么是椭圆几何与双曲几何?
- 用SPCOMM 在 Delphi中实现串口通讯
- SPComm的一点小诀窍 spcomm的问题导致数据丢失 0x11与0x13错误
- ubuntu klyin初体验
- GPIO cramfs jffs2
- EC logical & technical sum
- Apache与ngnix的对比
- Webrtc服务器搭建
- WebRTC流媒体服务器 Kurento
- openCv对形态学的运算处理
- Wireshark过滤抓包与过滤查看