国
国色天香
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.MSComm1Comm(Sender: TObject);
var
strTemp,strData:String;
begin
if MSComm1.CommEvent<>comEvReceive then
Exit;
strTemp:=MSComm1.Input;
if strTemp=chr(2) then
strData:=''
else
if strTemp=chr(3) then
begin
MSComm1.Output:=chr(6);
RichEdit1.Lines.Add(strData);
end else
strData:=strData+strTemp;
end
以上是我写的一段代码,仪器不在我这里,我不能调试,所以请大家帮我检查检查,有问题就指出来,我只需要将 27 ASCII字符 取出来就行了。以下是串口说明的原文,<CHECKSUM> 我不懂意思,能解释一下吗?
-------------------------------------------------------------------------
信号电平 : EIA RS232C
波特率:4800
字符形式:1起始位 8 数据位 2 停止位 无奇偶校验
接受讯号:YES
每次串行输出,以<STX>信息开始,并以<ETX>和<CHECKSUM>出现为结束,
在信息<EOT>出现时,传输过程结束。
总和检查是 27 字符ASCII码<DATA>的<MODULUS 256>的简单总和。
句法:
<STX> <27 ASCII字符> <ETX> <CHECKSUM>
.. .. .. ..
.. .. .. ..
<EOT>结束
注意:在每次<CHECKSUM>信息结束时,计算机必须传送 ACK 信息。
var
strTemp,strData:String;
begin
if MSComm1.CommEvent<>comEvReceive then
Exit;
strTemp:=MSComm1.Input;
if strTemp=chr(2) then
strData:=''
else
if strTemp=chr(3) then
begin
MSComm1.Output:=chr(6);
RichEdit1.Lines.Add(strData);
end else
strData:=strData+strTemp;
end
以上是我写的一段代码,仪器不在我这里,我不能调试,所以请大家帮我检查检查,有问题就指出来,我只需要将 27 ASCII字符 取出来就行了。以下是串口说明的原文,<CHECKSUM> 我不懂意思,能解释一下吗?
-------------------------------------------------------------------------
信号电平 : EIA RS232C
波特率:4800
字符形式:1起始位 8 数据位 2 停止位 无奇偶校验
接受讯号:YES
每次串行输出,以<STX>信息开始,并以<ETX>和<CHECKSUM>出现为结束,
在信息<EOT>出现时,传输过程结束。
总和检查是 27 字符ASCII码<DATA>的<MODULUS 256>的简单总和。
句法:
<STX> <27 ASCII字符> <ETX> <CHECKSUM>
.. .. .. ..
.. .. .. ..
<EOT>结束
注意:在每次<CHECKSUM>信息结束时,计算机必须传送 ACK 信息。