RT,可以通过注册表获取所有的串口,有什么办法可以知道哪些串口已经连接到设备上了?比如短信猫之类的设备

解决方案 »

  1.   

    用 CreateFile('COMx', ...) ,能返回正常句柄的,就是有设备。 至于具体的设备类型,就不太好判断了。
      

  2.   

    如果只是将设备接到COM口上,用CREATEFILE的方式返回是正常的句柄....
      

  3.   

    遍历存在的各串口,发送测试数据;或者用CreateFile打开各串口,返回异常时用GetLastError捕获判读,不过我查了下MSDN,似乎没有单独的串口打开值,只有1119接近,楼主再仔细看看。
      

  4.   

    我用spcomm控件,历遍每个串口,然后发送AT指令,看其返回值,进行判断接的是否为短信猫,可指令发送出去后,收到的数据是乱码,贴上代码,各位帮忙看下procedure TForm1.SendData;
    var
      i:integer;
      commflg:boolean;
      SendStr :  string;
    begin
      viewstring:='' ;
      commflg:=true;
      SendStr:=PChar('ATZ' + chr($0d)+chr($0a) );
      with cm1 do
      begin
        CommName := lst1.Items[lst1.ItemIndex];//COM3
        BaudRate := 9600;
        ByteSize := _8;
        Parity := None;
        StartComm;
        SendData;
      end;
      if not cm1.WriteCommData(PChar(SendStr),Length(SendStr))  then Exit;
      viewstring:='发送:'+ SendStr;
      mmo1.lines.add(viewstring);
      mmo1.lines.add('' );
    end;procedure TForm1.cm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    var
      i:integer;
      s : string;
    begin
      viewstring:='' ;
      SetLength(S, BufferLength);
      move(buffer,pchar(s)^,bufferlength)  ;
      mmo1.lines.add('接收:' +s);
    end;
      

  5.   

    MSCOMM和SPCOMM 这两个控件都可以很好的解决串口通讯问题。网上的相关帮助资料也不少,楼主的问题应该自己可以搞定,浪费了100分。
      

  6.   

    就用SPCOMM控件,打开,写AT指令,再读取,判断返回的是否为Ok....关键是这里
    procedure TForm1.cm1ReceiveData(Sender: TObject; Buffer: Pointer; 
      BufferLength: Word); 
    var 
      i:integer; 
      s : pchar;  
    begin 
     getmem(s,bufferlength);
     fillchar(s,bufferlength,0); 
      move(buffer,s,bufferlength)  ; 
     

      mmo1.lines.add('接收:' +s);
      不知道为什么加上这句会报错,无效指针错误
      freemem(s,bufferlength); 
    end;
      

  7.   

    你的问题虽然解决,但不是最佳解决方法。
    你可以直接将S定义为:s:array[0..100] of char
    然后把
    getmem(s,bufferlength); 
    fillchar(s,bufferlength,0); 
    这两句删掉就可以了。不过你发送过程里面的代码定义S的时候也要一致。
      

  8.   

    晕,原来你是“稻草人”老兄,你研究的东西确实很多,佩服,现在怎么想起来研究串口通讯了?我还记得你下面的贴子:http://topic.csdn.net/u/20090303/10/b4af3589-90a3-447f-8bad-439ebdb20282.html我知道你在GDI+方法也十分了得,前段时间我花了半个月时间研究GDI+如今也算小有心得!
      

  9.   

    to : mwy654321
    呵呵,项目要求,没办法老是有些硬件方面的东西要做,不过还好要求都比较简单,谈不上研究了
    我平时主要是搞图形图像处理,但是水平太差了,
    希望有机会能跟你交流交流
      

  10.   

    我也是用spcomm控件进行串口通讯,小有心得,我QQ:5555044