有关串口通讯的问题,请求高人指点! ( 积分: 200 )

  • 主题发起人 主题发起人 0452
  • 开始时间 开始时间
0

0452

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用SPCOMM控件打算从一台检验设备接收检验结果的数据,但是始终没能成功,以下是我接收数据的代码和有关检验设备的串口资料,请高人指点是我程序写的是否正确,是否要在程序里写响应设备发出传送数据的请求的相关代码,如需要代码该怎么写以及RS-232C串口线的接法,谢谢!
procedure TForm1.Comm1ReceiveData(Sender: TObject;
Buffer: Pointer;
BufferLength: Word);
var
CurCommData,S: string;
i: integer;
begin
SetLength(CurCommData,BufferLength);
Move(Buffer^, PChar(CurCommData)^, BufferLength);
Edt1.Text := CurCommData;
S := '';
for i := 1 to Length(CurCommData)do
S := S + CurCommData+ ' ';
Memo1.Lines.Add(S);
end;

通信规格:
通信方式:半双工通信
通信速率:9600
同步方式:起止同步
代码方式:ASCII
错误控制:无
起 始 位:1
数 据 位:8
停 止 位:1
接 口:RS-232C
响应方式:ACK/NAK
控制信号:RTS/CTS流程控制
开始传送时,7号(RS)、4号(ER)针置于ON、确认8号(CS)、6号(DR)针处于ON状态后,传送文件。
传送步骤:根据上位计算机响应代码处理。
NAK或者没有响应时、试过两次仍不成功时,作为传送错误。
输出ENQ等待三秒无响应时,进行再送处理。
输出传文、等待五秒也无响应时、进行再送处理。
在响应代码ACK以外的情况、进行再送处理。
传送时序:
每完成一个样品分析、自动地传送数据。
在静态重复分析的情况下,只传送平均值。
如果在传送中或等待响应时,即时完成了下一个样品的分析,在前一个样品传送没完成前,下个样品的传送不开始。
 
你可以测试一下用两台电脑Com连接Com口2,3反联就可以了,你在一台发,看看另一台能不能收到.
 
首先得确保你的程序能收发,可采用hzjzxp的测试方式。
是否要在程序里写响应设备发出传送数据的请求的相关代码?这得看你的检验设备是否是主动发送。如果是主动发送方式就不需要了。否则,你得根据通讯协议做相应的处理了
 
换一种方式,你先使用通讯工具软件测试,看看是不是可以得到设备的通讯数据。再保证这样的状况下可以通讯的时候,再测试你自己的代码。
 
问题没有解决,欢迎高手指点!
 
你用串口精灵测一下,如果还是不能的话,有可能是线接错了。
 
后退
顶部