procedure TCzForm.CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
p: PChar;
str,ss:string;
i:integer;
begin p := Buffer;
str := p;
str:=trim(str); with Dmcz.TBcssj do
begin
first;
if FieldByName('ybrx').AsString='JLCW' then
begin
i:=length(str);
ss:=copy(str,0,i-2);
memo1.Lines.Text:=ss;
end;
end;end;
主要用来接收称重数据,仪表发送方式为连续发送,接收有时会错乱,希有好心人帮助解决,给一个源码参考,急 发送格式为1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg ...........
BufferLength: Word);
var
p: PChar;
str,ss:string;
i:integer;
begin p := Buffer;
str := p;
str:=trim(str); with Dmcz.TBcssj do
begin
first;
if FieldByName('ybrx').AsString='JLCW' then
begin
i:=length(str);
ss:=copy(str,0,i-2);
memo1.Lines.Text:=ss;
end;
end;end;
主要用来接收称重数据,仪表发送方式为连续发送,接收有时会错乱,希有好心人帮助解决,给一个源码参考,急 发送格式为1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg 1000.2kg ...........
解决方案 »
- [Fatal Error] File not found:
- 弱弱的问:bytez怎么转换为string?
- 请教:图片背景上写字,怎么整比较美观一些?(不是用PS画图)
- delphi漏洞 pos()函数的奇怪现象
- 谁有DELPHI精要罗小平电子版的书籍
- 有关 中文 发音
- 请问各位大侠,数据库活动连接串TADOConnection如何传入COM服务器中。
- 如何在TDBChart中显示负数?(在线等待!)
- 我现在很困惑, 不知学dephi还是c++? 请各位大侠们指点小生! 先谢!
- .h
- delphi中如何将网上图片做到程序中(需实时更新)
- 在线等待 - 100分。问个关于corba性能疑问。欢迎有过corba经历的朋友来谈谈。
var
b:string;
procedure TCzForm.CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
p: PChar;
s:string;
i,j:integer;
begin
p := Buffer;
for i:=0 to BufferLength-1 do
b:=b+p[i];
j:=pos(#32,b);
if j<=0 then exit;
s:=copy(b,1,j-1);
b:=copy(b,j+1,1000);
with Dmcz.TBcssj do
begin
first;
if FieldByName('ybrx').AsString='JLCW' then //这个判断干什么的?
begin
memo1.Lines.Lines.Add(s);
end;
end;
end;
并不是你发一个包 接收方就能受到一个完整包
比如
我发 10.000kg
你有可能触发 receive事件8次 ,每次只收到一个字符
也有可能一次收到几个包
outx_xonxoffFlow设false
TxContinueOnXoff设false
procedure TCzForm.CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word); var
p: PChar;
str:string;
begin
p := Buffer;
str := p;
str:=copy(str,0,BufferLength-2);
with Dmcz.TBcssj do
begin
first;
if FieldByName('ybrx').AsString='JLCW' then //预留
begin
str:=copy(str,0,length(str)-2);
memo1.Lines.Text:=str;
end;
end;end;
以上源码已在两台机子上连续测试两小时通过,接收正常,单片机为Atmel 89s52 格式为1位起始位,1停止位,8位数据位,1标志位,谢谢各位,供大家参考