搜索
bottom↓
回复: 16

请教DELPHI中SPCOMM控件串口问题

[复制链接]

出0入0汤圆

发表于 2005-3-31 16:17:43 | 显示全部楼层 |阅读模式
我现在在用UART作串口通讯的时候发现个问题

我在程序中用单片机向PC机发一串数据,共31字节。

0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x03,0x02,0x08,0x04

我是用字节发送函数发送的,

上位机用DELPHI编了个软件收不到全部数据,只有02 01 01 我想问是不是连续的0导致这样的

我把所以0改为1就收得到全部数据。不知道什么原因?

如何才能收到0?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2005-3-31 17:33:47 | 显示全部楼层
估计是你的Delphi程序的问题

出0入0汤圆

 楼主| 发表于 2005-3-31 18:23:26 | 显示全部楼层
我用的是SPCOMM串口控件,连接收一个0都不可以。

我设置断点,当收完数据后数组变量就是02 01 01 ..然后就乱掉了。

程序应该没问题啊,那0除外的怎么能完整的接收呢?

出0入0汤圆

发表于 2005-3-31 18:42:31 | 显示全部楼层
停止位, 波特率是否一樣??

你的單位機用什麼的晶振?  串口通信最標準是7.3728M 的晶振!

出0入0汤圆

发表于 2005-3-31 18:50:53 | 显示全部楼层
putchar?

printf?



概念----------C语言的字符串与字符



确保上位机的软件正确? 最好先用SSCOM等串口工具来测试。

出0入0汤圆

发表于 2005-3-31 19:56:19 | 显示全部楼层
你先用常用的串口调试工具测试一下,才好确认原因所在。

出0入0汤圆

发表于 2005-3-31 21:03:02 | 显示全部楼层
兄弟,我和你用的一样,程序也是一会好一会坏。我的上位机程序在51芯片上的程序运行就没问题,可一到MEGA16上就乱。这辆天头都晕啦。

出0入0汤圆

 楼主| 发表于 2005-3-31 21:14:03 | 显示全部楼层
单片机什么的都是好的,我在其它的串口调试软件中试过。收到了数据。

在DELPHI中我用的是SPCOMM控件,我想问它是否把字节0给过滤掉了?

有人遇到过吗?

出0入0汤圆

发表于 2005-4-1 13:17:55 | 显示全部楼层
你需要检查以下单片机的伯特律是否正确,特别是误差不可超过3%,如果其误差大,就可能出现开始通信正常,以后又出现错误的现象。

出0入0汤圆

发表于 2005-4-1 21:18:58 | 显示全部楼层
从现象看可以肯定是当成0结束字符串使用了,碰到0就结束了。

出0入0汤圆

发表于 2005-4-1 21:43:43 | 显示全部楼层
楼主大哥:

         您好,你可以把你这个程序做一个例子么?我都学delphi许多时候了,还是没有办法做上位机软件, 我现在连spcomm 都安装不了~!不知道怎么回事!

出0入0汤圆

发表于 2005-4-1 22:04:38 | 显示全部楼层
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

  BufferLength: Word);

var

  i: integer;

  str: array[0..127] of char;

begin

  move(Buffer^, str, BufferLength);

  if (BufferLength < 100) and (str[0] = '$') and (str[BufferLength - 2] = #13) and(str[BufferLength - 1] = #10) then

  begin

    GPSBuffers := '';

    for i := 0 to BufferLength - 1 do

    begin

      if str >= ' ' then

        GPSBuffers := GPSBuffers + str;

    end;

  end;

end;

出0入0汤圆

发表于 2005-4-2 22:00:26 | 显示全部楼层
推荐个网站http://www.delphibbs.com/

或许可以解决问题。

出0入0汤圆

发表于 2005-5-9 11:08:14 | 显示全部楼层
如果不是程序问题,那你的SPCOMM的设置要处理,回屏闭某些数值等(0也是其中一种)。

出0入0汤圆

发表于 2008-3-31 14:17:29 | 显示全部楼层
在 spcomm设置里面加上以下设置
          myComm.Inx_XonXoffFlow:=false;
          myComm.Outx_XonXoffFlow:=false;
          myComm.XonChar:=#0;
          myComm.XoffChar:=#0;

出0入0汤圆

发表于 2008-7-26 10:06:07 | 显示全部楼层
【14楼】 knight_avr
谢谢!你的提示

出0入0汤圆

发表于 2013-4-11 17:59:11 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 09:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表