急!!!!!!!!!!!!!MSCOMM串口通信问题。。。。 ( 积分: 100 )

  • 主题发起人 主题发起人 enigma_UnDead_2
  • 开始时间 开始时间
E

enigma_UnDead_2

Unregistered / Unconfirmed
GUEST, unregistred user!
我用串口对LCM-2000系列明渠流量计(这是一个水位,流量监测的设备)采集的数据进行接收和处理,采集,发送和接收数据是一套完整的硬件设备,接收端已连到我的串口上,但当我执行下列代码后MSComm1.CommEvent不等于comEvReceive,反而等于comEvCTS: // CTS 线状态变化。
我也就接收不到数据,不知道为什么,,求求哪位大富翁帮忙解答一下。十分感谢
mscomm1.CommPort := 1 ;
//Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=′9600,n,8,1′
try
mscomm1.Settings := '4800,n,8,1';//'qry1.Fieldbyname('btl').AsString + ',' + qry1.Fieldbyname('jyw').AsString + ',' + qry1.Fieldbyname('sjw').AsString + ',' + qry1.Fieldbyname('tzw').AsString;
except
application.MessageBox('请正确设置通信参数', '提示信息', mb_ok);
end;


//InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
mscomm1.InBufferCount := 0;
//DTREnable:数据终端准备好
mscomm1.DTREnable := true;
//RTSEnable:请求发送
Mscomm1.RTSEnable := true;
//PortOpen:打开或关闭串行端口
if mscomm1.PortOpen = false then

mscomm1.PortOpen := true
else

application.MessageBox('串口已经打开', '提示信息', mb_ok);
 
mscomm没用过,感觉SPCOMM比较好用,串口收发数据很简单,不要想复杂了
 
我没用过SPCOMM,以前同事用过MSCOMM做过一个程序,我也看过代码,是比较简单,就像上面有几行设置的代码,然后用MSCOMM.input读取就行了,但读取之前先判断MSComm1.CommEvent=comEvReceive,但我这个就是不等于,,帮我想想办法吧!!!应该怎么办???
 
ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
就是你收到的缓冲区字符还没有达到ComEvReceive的条件
 
可我的RThreshold属性值设为1啊,是不是ComEvReceive:值不等于2说明串口没有数据还是怎么回事???帮我分析分析。。。谢了
 
你弄个Free Serial Port串口监视工具,看看有没有数据
 
好的,,我先看看。。
 
谢谢:abigfish
是我的硬件还没调通,原来是我那个GPRS数据传输模块里面还需要插入数据卡,第一次弄这个设备不知道是这样,还以为可以直接编程呢,这个问题就先结束吧.
 
后退
顶部