如果谁做过这方面的程序,又留有备份,发给我又不会对你造成危害.请email给我.定重分相加.
[email protected]

解决方案 »

  1.   

    当然是开发的例子了.在网上找了好长时间就找了一个简单的例子.关于SPCOMM的编程例子竟这么少??
      

  2.   

    网上有阿
    //串口初始化          procedure TForm1.BitBtn3Click(Sender: TObject);
                begin
                   comm1.startcomm;
                end;
                  //关闭串口
                procedure TForm1.BitBtn4Click(Sender: TObject);
                begin
                   comm1.StopComm;
                end;
                //发送数据
                procedure TForm1.BitBtn1Click(Sender: TObject);{var str:string;
                    ch1:char;
                begin
                comm1.WriteCommData(ch,1);
                end.
                //接收数据
                procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
                  BufferLength: Word);
                type   ss=array[1..500]of char ;
                var    str1:^ss;
                       i:integer;
                       s:array[0..15] of char ;
                       n:integer;
                begin
                       str1:=Buffer;
                     //s[]=('0','1','2','3'...'E')
                       for i:=0 to 9 do
                       s[i]:=chr(48+i);
                       for i:=10 to 15 do
                       s[i]:=chr(55+i);
                       for i:=1 to bufferlength do
                       begin
                       n:=ord(str1^[i]);
                       listbox1.Items.add(
                                 inttostr(listbox1.Items.Count+1)
                                 +' - '+s[n div 16]+s[n mod 16]);
                       end;
                       listbox1.Refresh;
                      if listbox1.Items.count > strtoint(form2.edit1.text)
                      then listbox1.Items.Clear;
                end;
      

  3.   

    我以前写的与上海三思科技情报板通信的代码:(没用控件)
    function CommInitialize(CommName: string): THandle;
    var
      hComm: THandle;
      lpDCB: TDCB;
    begin
      result:=0;
      if Length(CommName)>4 then
        CommName:='\\.\'+CommName;
      hComm:=CreateFile(PChar(CommName),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,0); // or FILE_FLAG_OVERLAPPED 
      if hComm=INVALID_HANDLE_VALUE then
        CloseHandle(hComm)
      else
      begin
        GetCommState(hComm,lpDCB);
        lpDCB.baudrate:=9600;
        lpDCB.StopBits:=ONESTOPBIT;
        lpDCB.ByteSize:=8;
        lpDCB.Parity:=NOPARITY;     //无校验
        SetCommState(hComm,lpDCB);
        SetupComm(hComm,2048,2048); //设置缓冲区
        SetCommMask(hComm,EV_RXCHAR); //设置串口的可监控事件为接收到字符。    PurgeComm(hComm,PURGE_TXABORT+PURGE_RXABORT+PURGE_TXCLEAR+PURGE_RXCLEAR);
        result:=hComm;
      end;
    end;procedure FS;
    begin
      SendStr:='0010Play.lst+'+chr(0)+chr(0)+chr(0)+chr(0)+#13+#10+'[list]'+#13+#10+'Item_No='+IntToStr(Num)+#13+#10+SendStr;
      Crc:=ComputeCRC(SendStr,Length(SendStr));  //'0000'
      sCRC:=Chr(Crc div 256)+Chr(Crc mod 256);
      SendStr:=SendStr+sCRC;  ZY_Str(SendStr); //要发送的字符是否转意。
      SendStr:=Chr(STX)+SendStr+Chr(ETX);  for i:=0 to CommCount-1 do
        if (DkXx[i].LX='XSB')and(DkXx[i].BH=Xsb) then
        begin
          if DkXx[i].DK=0 then
          begin
            MessageBox(Handle,'未能创建此限速标志板的串口,无法发送命令!','错误',MB_OK+MB_ICONERROR);
            Break;
          end
          else
          begin
            PurgeComm(DkXx[i].DK,PURGE_TXABORT+PURGE_RXABORT+PURGE_TXCLEAR+PURGE_RXCLEAR);
            WriteFile(DkXx[i].DK,Pointer(SendStr)^,Length(SendStr),Nbw,nil);        Dm.CommADOQuery.Close;
            DM.CommADOQuery.SQL.Text:=Format('delete FSNR where LX=''XSB'' and BH=''%s''',[Xsb]);
            DM.CommADOQuery.ExecSQL;
            Dm.CommADOQuery.SQL.Text:='select * from FSNR where 1=2';
            DM.CommADOQuery.Open;
            for j:=0 to Num-1 do
            begin
              Dm.CommADOQuery.Append;
              Dm.CommADOQuery.FieldByName('LX').AsString:='XSB';
              Dm.CommADOQuery.FieldByName('BH').AsString:=Xsb;
              Dm.CommADOQuery.FieldByName('XH').AsString:=SendListView.Items[j].Caption;
              Ls1:=SendListView.Items[j].SubItems.Strings[0];
              Ls2:=SendListView.Items[j].SubItems.Strings[0];
              Ls1:=Ls1[2]+Ls1[3];
              if Ls1='文' then
                Delete(Ls2,1,4)
              else
                Ls2:='图片';
              Dm.CommADOQuery.FieldByName('NR').AsString:=Ls2;
              Dm.CommADOQuery.FieldByName('isReturn').AsString:='否';
              Dm.CommADOQuery.Post;
            end;        SendComm:=DkXx[i].DK;
            QbbBh:=Xsb;
            JS:=0;        SetTimer(Handle,1,1000,nil);
            SetTimer(Handle,2,100,nil);
            Image1.Visible:=True;
            Image2.Visible:=True;
            animateJS:=0;
            SendListView.Clear;
            Xsb_XsBhComboBox.ItemIndex:=-1;        EnableWindow(Handle,False);
            Break;
          end;
        end;
    end;
      

  4.   

    baidu搜索下,很多相关资料。参考:http://www.gjwtech.com/scomm/scdelphispcomm.htm