当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 做新闻系统,新闻显示,用datagrid还是repeat比较好. 首页只要几条的是否用repeat 更多,需要分页的用datagrid. repeat能分页吗?哪个速度快些? ......
    摘要: 使用inet控件,向在execute中执行get命令,如下: inet1.execute "192.168.1.19","get 01.txt c:\program file\001.txt" 由于program files中间有一个空格,所以这行代码执行后并不进行ftp下载 若是inet1.execute "192.168.1.19&qu......


关于SPCOMM直接读取串口的问题

我想实现SPCOMM控件能直接读到串口的功能编写一个函数,实现原理是:先停止线程,执行下面函数  
  函  
  function   TDriverComm.ReadData(lpNewString:   Pchar;   dwSizeofNewString:   DWORD):DWord;  
  var  
      //   szInputBuffer:   array[0..INPUTBUFFERSIZE-1]   of   Char;  
        nNumberOfBytesRead:         DWORD;  
        bResult:                               boolean;  
   
        dwHandleSignaled:             DWORD;  
        dwError:                               DWORD;  
   
        cs:                                         TComStat;  
        bRead:                                   boolean;  
        //   Needed   for   overlapped   I/O   (ReadFile)  
        overlappedRead:                                 TOverlapped;  
   
        //m_csCommunicationSync:_RTL_CRITICAL_SECTION;  
        //   Needed   for   overlapped   Comm   Event   handling.  
    //     overlappedCommEvent:       TOverlapped;  
   
  begin  
            FillChar(   overlappedRead,   Sizeof(overlappedRead),   0   );  
            //FillChar(   overlappedCommEvent,   Sizeof(overlappedCommEvent),   0   );  
              bRead:=true;  
            //   Lets   put   an   event   in   the   Read   overlapped   structure.  
        //   if   not     clearCommError(hcommfile,dwerror,@cs)   then  
            //   showmessage(我出错了);  
            //showmessage(inttostr(cs.cbInQue));  
   
          if     not   ClearCommerror(hcommfile,   dwerror,@cs)   then  
          begin  
            showmessage(clearcommerror);  
            exit;  
          end;  
              overlappedRead.hEvent   :=   CreateEvent(   nil,   True,   true,   nil);  
              if   overlappedRead.hEvent   =   0   then  
            begin  
                    //   PostHangupCall;  
                    closehandle(overlappedread.hEvent   );  
                          exit;  
              end;  
       
            {   if   cs.cbInQue=0   then  
                  begin  
                      result:=0;  
                      exit;  
                  end  
                else  
                      if   dwSizeofNewString>cs.cbInQue   then  
                          nNumberOfBytesRead:=cs.cbInQue  
                      else  
                          nNumberOfBytesRead:=   dwSizeofNewString+2     ;     }  
                      lpNewString:=allocmem(dwSizeofNewString)     ;  
   
          //   if   WAIT_TIMEOUT=WaitForSingleObject(hCloseEvent,0)   then   exit;  
          if   bRead   then  
            begin  
                  bResult:=ReadFile(hCommFile,lpNewString^,INPUTBUFFERSIZE,dwsizeofNewString,@overlappedRead);  
                  if   not   bResult   then  
                    begin  
                      dwError:=GetLastError;  
                        Case   dwError   of  
                        ERROR_IO_PENDING   :     bRead:=false  
                        else  
                            Raise   exception.Create(ReadFile);  
   
                        end;  
                    end  
                  else  
                    bread:=true;  
              if   not   bread   then  
                begin  
                  bread:=true;  
                  bResult:=GetOverlappedResult(hcommFile,overlappedread,dwsizeofnewstring,false);  
                    if   not   bresult   then  
                      raise   exception.Create(GetOverlappedresult()   in   Readfile());  
                end;  
            end;  
          result:=dwsizeofNewString;  
  end;  
  执行完后再恢复线程  
  但不能正常执行,不能读取串口数据  
 

NO.1   作者: hhzqf1980

SetLength(s,   BufferLength);  
      Move(Buffer^,   pchar(s)^,   BufferLength);

NO.2   作者: heluqing

我记得spcomm的接收不是这样的,难道楼主要该的是原码?

NO.3   作者: heluqing

没记错的话应该是一个pchar和一个bufferlength才对


    摘要: 我在sql server中写了个作业来定时备份数据库,必须要启动sql server agent服务吗?启动了这个服务后跟平常的sql serber 服务有什么区别吗? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE