收录日期:2018/08/16 06:37:23 时间:2016/05/20 18:27:53 标签:VCL组件开发及应用
请问:怎样读取mscomm的input值?读取的时候应该注意哪些问题?
QQ:87873303
根据inputmode来确定读取的格式,是字节,还是字符。
然后直接赋值就可以了!
比如读取字符格式的
var
  buf:string;
begin
  do
    buf:=mscomm1.input;
    if 退出的条件 then
    begin
      break;
    end;
    application.processmessages//加上这个可以让程序响应外来的消息。
  until true
end;
设置inputmode模式
var
   buf:variant
begin
   buf:=mscomm1.input//你必须知道读到的数据类型
end
如果是二进制模式:
procedure TForm1.MSComm1Comm(Sender: TObject);
var vtmp,ovTmp:variant;
    i,iReceived:Integer;
    bTmp:Byte;
    s:String;
    t:Dword;
begin
  if mscomm1.CommEvent=2 then
    mscomm1.InputMode:=comInputModeBinary;
        t:=gettickcount();
while GetTickCount-t<200  do
  application.ProcessMessages;
    iReceived:=mscomm1.InBufferCount;
    ovtmp:=mscomm1.Input;
    vtmp:=VarArrayCreate([0,127],varbyte);
    vtmp:=ovtmp ;
    s:='';
    for i:=0 to iReceived-1 do
      begin
        bTmp:=vtmp[i];
        s:=s+chr(bTmp);
      end;
end;

在OnComm事件中写代码,正如suuare(督察)所写。