SPCOMM 接收数据不完整!该如何解决

 
SPCOMM 接收数据不完整!
我作了一个 读取地磅数据的程序,是用spcomm接收的!

总共有五台地磅,其他4台地磅数据读取都正常。
但是有一台接收数据的时候,总是接收不到完整的数据,基本上小于100的数据都读不到,
比如:地磅上显示1234,但是接收到的数据是12。
  地磅上显示60,接收不到数据。
 有时地磅上什么东西都没有,但是显示接收到 5 。

这个地磅用原来硬件供应商提供的程序可以正常工作。
用我写的程序,偶尔也能正常读到数据(用程序测试了半天,有几次是正常的,但就是不知道什么原因)。

------解决方案--------------------
OutX_XonXOffFlow/InX_XonXoffFlow:这个属性是指进行发送/接收时的软件握手标志,两个握手信号之间的数据被认为是通讯数据,收到握手信号后,通讯就中止了。
在一般通讯中,硬件已经具备了握手功能,所以无须软件握手,请设置为:FALSE;
与之相关的属性为:  
XOffChar,XOnChar;这是指握手的字节,一般使用默认字节就可以了。 
------解决方案--------------------
不是spcomm数据没接到,而是数据迟到了而以,你接串口接收数据要注意一点是,先将接进来的数据存入一个Buf里,然后根据协议判断数据是否完整,如果完整进行数据处理,否则串口一直处于数据接收状态直到数据接收整,但然你可以在这里加个超时设定,如果在60秒内还没有接到完整的数据,你可以重发送命令向下位机要数据

------解决方案--------------------
我用spcomm控件对托利多T800表作过开发,用move函数试试看。请注意,spcomm有一个很特别的属性,如果你的
通讯协议的停止位为1,则在spcomm的stopbit属性中要设为0。
自己再试试看,不行给我发电邮:zghnayagwangzy@163.com,我把源程序拷给你

------解决方案--------------------
你用下面的方法试试看
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
S1:string;
begin
SetLength(S1, BufferLength); 
Move(Buffer^,PChar(S1)^,BufferLength);
Memo1.Lines.Add(S1); //接收RS232的数据并显示Memo1上
end;

SPCOMM 接收数据不完整!该如何解决的更多相关文章

  1. delphi SPCOMM 接收数据不完整!该如何解决

    SPCOMM 接收数据不完整!该如何解决   SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时 ...

  2. 【转】QT 串口QSerialPort + 解决接收数据不完整问题

    类:QSerialPort 例程:Examples\Qt-5.9.1\serialport\terminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件.核心方法 // ...

  3. C# 解决串口接收数据不完整

    方法1: 使 用缓存机制完成.首先通过定义一个成员变量List<byte> buffer = new List<byte> (4096);用来存放所有的数据,在接收函数里,通过 ...

  4. Qt串口通信接收数据不完整的解决方法

    在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况.因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不 ...

  5. Qt串口通信接收数据不完整的解决方法(传输图片)

    在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况.因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不 ...

  6. <QT障碍之路>qt中使用串口类接收数据不完整

    问题:当用QT中的serial->readAll()的时候,不会把全部的数据一次性都读取出来,而是阶段性的.原因是因为当串口有信号时候,readyRead()信号就会被抛出,那么一帧完整的数据帧 ...

  7. STM32 ucosii 串口接收数据 遇到的问题及解决思路

    写一个程序,用到了ucos ii ,串口在中断中接收数据(一包数据 8个字节 包含: 1byte包头 5byte数据 1byte校验和 1byte 包尾 ) ,数据由上位机每隔500ms发送一次,在串 ...

  8. 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...

  9. python网络编程调用recv函数完整接收数据的三种方法

    最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

随机推荐

  1. linux知识点

    通过gui来使用通过api来使用通过cli来使用通过tui来使用 进程不在,但tcp连接还一直存在的解决办法--tcpkill命令 http://www.centoscn.com/CentOS/Int ...

  2. Java C# 加密解密类库

    Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.因为 Bouncy Castle 被设计成轻量级的,所以从 ...

  3. 2 TKinter绑定事件

    通过command属性给button绑定事件 目的:点击一下按扭,在窗口中出现一行字 第一种方法(command): #!/usr/bin/env python # _*_ coding:utf-8 ...

  4. The launch will only sync the application package on the device!

    在开始学习Android的开发时,有时候可能刚写完一个布局文件,就急忙忙的运行程序,此时会毫不留情的在控制台报错:No Launcher activity found! The launch will ...

  5. linux下安装svn

    linux下SVN服务器如何搭建和使用 | 浏览:12117 | 更新:2013-09-18 14:28 | 标签:linux linux下SVN服务器如何搭建和使用?说到SVN服务器,想必大家都知道 ...

  6. String 深浅拷贝的测试---有待继续测试

    public class TestString { void test1() { // TODO Auto-generated method stub String str = new String( ...

  7. R(一): R基础知识

    R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...

  8. javascript 对象中的 handleEvent

    在高级浏览器中,我们在绑定事件的时候 可以知道绑定一个对象,然后在这个对象中的 handleEvent 方法会自动进入指定的方法,不多说了举个例子吧!! var events = { handleEv ...

  9. javascript取得机器名,用户名,读写注册表,启动应用程序

    javascript取得机器名,用户名,读写注册表,启动应用程序//javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地文件系统和应用程序,比如:有的时候我 ...

  10. [原]Linux系统管理使用技巧总结

    一.磁盘管理 1.查看磁盘空间大小 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小.如果不带其他参数(-h表示human-readabl ...