我使用spcomm做了一个串口通讯测试,数据发送端发送出去的数据超级终端能够接到,但是,控件的接收数据函数没什么反应?
那位高手碰到类似情况,请指点
那位高手碰到类似情况,请指点
解决方案 »
- 这200分可是超值,1片顶过去5片
- 急急急,在线等待,100分!!
- 问一个版本不兼容的问题。请帮忙进来看看!
- delphi 7中 ADO、BDE、dbExpress有什么区别?
- 关注《软件研发》杂志(DDJ,Software Development,CUJ等名刊中文版),网址:www.ddjchina.com
- 这两种目录共享的方法有什么不同!?
- 控件应该怎样安装??
- 关于妹妹高考报考志愿(想报广州、上海或武汉的高校)的问题,请原谅我贴在技术区!^_^
- 高手们帮我看一下吧!!!!!在grid或者dbgrid中怎么样能够聚焦到两个或者两以上网格上!!!!!
- 很轻松的问题,望指点.照样有分拿
- 如何禁止访问局域网,但SQL能访问?
- 关于modem来电显示的问题
------------------
他的工作原理是!只要缓冲区有数据!他就会去读缓冲区数据。
1 有消息触发
2 缓冲区满触发
3 数据益处触发第一你要合理的设置 自己的缓冲区的大小
第二你要选择适合你的串口触发过程 比如实时的程序和数据大量发送的数据通信类的程序的设置就不一样
然后就是接收缓冲区
你把它设置成非阻塞模式就可以了,自己代码处理接收到的数据即可。
procedure Tfrm_icread.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);var tmpArray:array[0..256] of Byte;
ArraySize: DWORD;
Count:DWORD;
tmpStr:string;
i:integer;
pStr:PChar;
begin //-------------接受返回串口返回数据-----------
pStr:=Buffer;
tmpStr:=string(pStr);
Dec(PStr);
tempb:='';
for i:=0 to bufferlength-1 do
begin
inc(PStr);
tmpArray[i]:=Byte(PSTR^);
tempb:=tempb+IntToHEX(Ord(tmpArray[i]),2); end;