Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHE AUTOMATIQUE D'UN PORT SERIE


Information sur la source

Catégorie :Périphériques Classé sous : port, extrapolation, enumports, tcomport, serie Niveau : Débutant Date de création : 03/10/2005 Date de mise à jour : 04/10/2005 09:33:44 Vu : 6 596

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

cette petite fonction retourne le numero du port serie  en connaisant le nom. C'est l'extrapolation de la fonction EnumPorts du composant Tcomport.
 

Source

  • function NumeroPort(nomport:string):string;
  • var
  • KeyHandle: HKEY;
  • ErrCode, Index: Integer;
  • ValueName, Data: string;
  • ValueLen, DataLen, ValueType: DWORD;
  • begin
  • ErrCode := RegOpenKeyEx(
  • HKEY_LOCAL_MACHINE,
  • 'HARDWARE\DEVICEMAP\SERIALCOMM',
  • 0,
  • KEY_READ,
  • KeyHandle);
  • if ErrCode <> ERROR_SUCCESS then
  • raise Exception.Create('erreur d''ouverture');
  • Index := 0;
  • repeat
  • ValueLen := 256;
  • DataLen := 256;
  • SetLength(ValueName, ValueLen);
  • SetLength(Data, DataLen);
  • ErrCode := RegEnumValue(
  • KeyHandle,
  • Index,
  • PChar(ValueName),
  • {$IFDEF DELPHI_4_OR_HIGHER}
  • Cardinal(ValueLen),
  • {$ELSE}
  • ValueLen,
  • {$ENDIF}
  • nil,
  • @ValueType,
  • PByte(PChar(Data)),
  • @DataLen);
  • if ErrCode = ERROR_SUCCESS then
  • begin
  • SetLength(Data, DataLen);
  • if pos(nomport,valuename)<>0 then result:=data;
  • Inc(Index);
  • end
  • else
  • until (ErrCode <> ERROR_SUCCESS) ;
  • RegCloseKey(KeyHandle);
  • end;
function NumeroPort(nomport:string):string;
var
  KeyHandle: HKEY;
  ErrCode, Index: Integer;
  ValueName, Data: string;
  ValueLen, DataLen, ValueType: DWORD;
begin
  ErrCode := RegOpenKeyEx(
    HKEY_LOCAL_MACHINE,
    'HARDWARE\DEVICEMAP\SERIALCOMM',
    0,
    KEY_READ,
    KeyHandle);

  if ErrCode <> ERROR_SUCCESS then
    raise Exception.Create('erreur d''ouverture');

    Index := 0;
    repeat
      ValueLen := 256;
      DataLen := 256;
      SetLength(ValueName, ValueLen);
      SetLength(Data, DataLen);
      ErrCode := RegEnumValue(
        KeyHandle,
        Index,
        PChar(ValueName),
{$IFDEF DELPHI_4_OR_HIGHER}
        Cardinal(ValueLen),
{$ELSE}
        ValueLen,
{$ENDIF}
        nil,
        @ValueType,
        PByte(PChar(Data)),
        @DataLen);

      if ErrCode = ERROR_SUCCESS then
      begin
        SetLength(Data, DataLen);
      if pos(nomport,valuename)<>0 then result:=data;
        Inc(Index);
      end
      else
    until (ErrCode <> ERROR_SUCCESS) ;
    RegCloseKey(KeyHandle);
end;

Conclusion

cette source fait suite à une question posée sur le forum
pour obetnir la liste des descriptions des ports:
sur une forme mettre une listbox
en ligne 40 rajouter:
form1.ListBox1.Items.Add(valuename);// donne la liste des descriptions
et
procedure TForm1.FormCreate(Sender: TObject);
begin
NumeroPort('');
end;
lancer le programme et la listbox vous donne la totalité des ports serie installés

 

Historique

04 octobre 2005 09:33:44 :
modification de la gestion des exceptions (ligne 16)

Commentaires et avis

signaler à un administrateur
Commentaire de yvessimon le 04/10/2005 08:58:42

Bonjour,
A la compilation mon DELPHI 7 ne reconnait pas
le composant :  EComPort
et le paramètre : CError_RegError


ou les triuver ?

Salutations
YvesSimon

signaler à un administrateur
Commentaire de jlen100 le 04/10/2005 09:16:22

oui  excuse-moi Ecomport et  CError_RegError font partie du composant Tcomport. J'ai oublié de modifier cette ligne du code il faut la remplacer par:
raise Exception.Create('Erreur d''ouverture');

signaler à un administrateur
Commentaire de tobi le ouf le 30/11/2005 15:35:39

Bonjour je suis nouveau sur le site, et je trouve pas un programme qui me permet d'analyser les bits entrant dans le com1. Si quelqu'un peut m'aider!
Merci

signaler à un administrateur
Commentaire de jlen100 le 30/11/2005 15:53:03

salut,
tu aurais du poser ta question sur le forum
mais enfin je te répondre:
soit tu installes TCOMPORT et tu lis le trafic entrant soit va voir dans les sources je crois qu'il existe une source "ANALYSEUR DE LIAISON RS232" à l'adresse: http://www.delphifr.com/code.aspx?id=31037
@+
jlen

signaler à un administrateur
Commentaire de paradoxham le 20/12/2005 09:45:02

slt
mais est ce qu on peux  ajouter la composnate Tcomport a delphi7 pour que ce programme fonctionne si oui comment

signaler à un administrateur
Commentaire de jlen100 le 20/12/2005 09:55:06

ce programme n'a pas besoin de Tcomport

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

port serie sous XP [ par mcanneson ] Je souhaite faire commniquer 2 PC via les ports serie.le probleme est que XP ne m'autorise pas a acceder aux registres de mon port COM.Est-ce que quel Port serie [ par michelroc ] Je cherche du code DELPHI pour utiliser le port serie afin echanger des données entre 2 PC. Un avec Windows XP et un autre PC avec windows 3.11 Par ex programmation port serie help ! [ par james ] Bonjours a tous !Je cherche une procedure en assembleur(j'y connait rien) et a incorporer dans un prog delphi , pour pour intercepter les signaux envo acces au port serie ? [ par james ] Bonjours a tous !Je cherche une procedure en assembleur(j'y connait rien) et a incorporer dans un prog delphi , pour pour intercepter les signaux envo port serie [ par the ripper ] Bonjourvoila mon probleme, j'utilise le port serie pour un programme de commande (utilisation d'un robot relier au port serie) et pour cela j'utilise port serie sur delphi 6 [ par silla ] bonjour apres avoir telecharger la librerie RSCOMdec dans ce site , j'ai suivi les instructions&nbsp;donn&#233;es en copiant cette librerie dans le re Ouverture Port Serie Blutooth sous Delphi [ par fredz0 ] Bonjour a tous,je vous ouvrir un port serie COM14, mais il est creer par une cl&#233; USB Bluetoothla procedure Fhandle=CreateFile(PCHAR("COM14"),.... [TcomPort] Identifier les materiels connectés (infos) [ par nitrique ] Bonjour, J'aimerais avoir des informations sur le materiel connect&#233; au port COM n de mani&#232;re &#224; l'identifier. Pour &#234;tre clair: Mon Port serie N°6 dans Delphi 4 [ par froggy666 ] Bonjour, voila j'ai un gros probl&#232;me, j'ai achet&#233; un convertisseur rs232/USB pour pouvoir utiliser un lecteur de carte a puce, jusque la auc Port // Serie USB [ par michelroc ] BonjourAujourd'hui il y a de plus en plus d' imprimantes avec un port USB. cela pose un probleme avec les&nbsp;PC dit 'ancien' avec des applis qui fon


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.