PORT COM ENUM

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 nov. 2005 à 15:15
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 juil. 2006 à 10:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34616-port-com-enum

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2006 à 10:45
Je n'ai pas ce matériel, je ne m'y suis donc pas intéressé.
Famidoo Messages postés 13 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 juillet 2006
17 juil. 2006 à 09:48
Comment fait on pour le faire marcher sous pocket pc ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 21:28
Ajout de la func qui liste depuis la BDR avec les USB (et autres ?) qui sont mappés en COM comme sur les portables.
Traitement par client identique.
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 17:04
oui c'est pas grave pour l'instant je ne me remets que doucement au C++ j'ai encore le temps de trouver une solution pour ce genre de probleme pour l'instant les prog tournent pas mal en DELPHI c'est juste pour avoir une homogeneite entre les progs des cartes micro controleur et les prog windows.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:58
Je sais mon portable n'en a plus lui aussi mais c'est 'by design' le prog fait ainsi, la demande forum était sur les "COMxxx" donc...
Faut modifier sous le label "foundPRTHS:" pour prendre les autres en compte, pas grand chose.
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:57
ok pour le setup mais toutes les liaisons series ne sont pas declarées en COMxxx. Cela depend du hard surtout dans le cas d'un plug and play
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:53
c'est vrai que mon programme (qui est une extension de comport) je lis la clef de registre qui regroupe tous les liaisons serie y compris le modem interne.
le probleme c'est que ton code ne reconnait pas l'adaptateur USB/serie et la c'est un peu plus genant (surtout que pas mal de portable n'ont plus de véritable liaison serie)
@+
jlen
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:51
vi vi j'avais regardé sur delphi, c'est juste l'enum sur BDR mais si MS range ailleurs sur prochain Windows code devient obsolète. Pour cela que je préfère fonctions Setupxxx.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:49
chaque "\device\xxx" vaut "COMxxx" ?
parce que cet exe n'énumère que ce qui est déclaré en COMxxx, le fin de chaine qu'il faudrait pour createFile par exemple.
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:46
voilà le bout de code que comport utilise (en DELPHI) pour enumerer les ports:
ErrCode := RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
'HARDWARE\DEVICEMAP\SERIALCOMM',
0,
KEY_READ,
KeyHandle);

if ErrCode <> ERROR_SUCCESS then
raise EComPort.Create(CError_RegError, ErrCode);

TmpPorts := TStringList.Create;
try
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);
TmpPorts.Add(Data);
Inc(Index);
end
else
if ErrCode <> ERROR_NO_MORE_ITEMS then
raise EComPort.Create(CError_RegError, ErrCode);

until (ErrCode <> ERROR_SUCCESS) ;

TmpPorts.Sort;
si ça peut-t-être utile.
@+
jlen
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:41
\device\serial0
\device\serial1
\device\U2SPORT1 (c'est l'adaptateur)
Mtlmnt51 (modem)
c'est plus long a recopier qu'à voir!!
@+
jlen
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:35
j'y vai
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:35
pour le noeud COM et LPT -->3 port com enonces: com1 com2 et com4 (le port com3 correspond au modem)
@+
jlen
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:33
vi et si tu pouvais dire ce que tu as sous:
HKLM\HARDWARE\DEVICEMAP\SERIALCOMM
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:31
pour info c'est un adapteur USB -->serie et pour l sieste on verra ça sur le coup des 3 heures du mat.
@+
jlen
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 nov. 2005 à 16:29
jlen100> Qu'est ce que tu as dans le gestionnaire de périphérique, pour le noeud Ports (COM et LPT)?
Parce que avec ton programme (que j'ai pas pu tester) je crois que j'aurai des trucs qui sont pas des ports COM pour le gestionnaire des périphériques (modem interne)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:26
ah alors faut que je voie cela, plus tard la sieste.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:25
Ben oui c'est vrai que je n'ai rien sur COM1, il est seulement déclaré.
Vais faire une sieste, m'évitera de répondre nimporte quoi.
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 16:24
non ça expliquerait le port 3 mais pour le port 4 j'ai actuellement une carte microcontroleur branchee dessus et il ne le reconnait pas alors que Tcomport sous DELPHI le voit de meme que le petit bout de code:RECHERCHE AUTOMATIQUE D'UN PORT SERIE... . il y a donc un p'tit quelque chose qui coince.
@+
jlen
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 nov. 2005 à 16:21
Pas du tout, pas besoin de matériel dessus chez moi.
J'ai essayé avec des port virtuels, il les reconnait aussi
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 16:09
Il doit énumérer ceux qui sont en service et qui ont donc un matériel branché dessus.
Teste en déplaçant un matériel et tu me diras.
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
13 nov. 2005 à 15:55
apparement l'exe ne reconnait pas tous les ports com --> sur mon PC équipé des ports 1 à 4 il ne reconnait que les 2 premiers (com1 et com2)
@+
jlen
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 nov. 2005 à 15:15
Renommer PortCom.ex_ en exe pour tester.
Fait sur VS 2005, suffit d'importer les fichiers en 1 seule passe dans un autre VS pour recompiler.
Rejoignez-nous