OVH Cloud OVH Cloud

[Débutant] Communication série et/ou parallèle en C#

7 réponses
Avatar
noone
Bonjour,

je voudrais savoir comment communiquer en C#
avec le port parallèle et/ou le port série

je voudrais de plus que mon appli soit portable sur Linux/Unix (via Mono)
je dois donc éviter les appels à Win32 et fonctionner uniquement en code
managé.

Est-ce possible ?

Coment faire ? (ou du moins envoyez moi vers des liens...)

Cordialement


PS : même question avec le port USB...

7 réponses

Avatar
Patrick Philippot
wrote:
je voudrais savoir comment communiquer en C#
avec le port parallèle et/ou le port série



Bonjour,

Ce type d'accès n'est pas prévu dans la version actuelle du framework.
Cela sera possible avec la version 2.0. Dans l'attente, seules des
solutions basées sur P/Invoke ou Interop sont possibles (utilisation
d'un contrôle ActiveX comme MSCOM). Voir par exemple:

http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&Product=vb6
http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id20

Voir http://franson.biz/serialtools/index.asp?platform=net pour une
solution commerciale.

Quant au port USB, il est plutôt conseillé de communiquer avec le driver
du périphérique USB plutôt qu'avec le port directement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
noone
> Ce type d'accès n'est pas prévu dans la version actuelle du framework.
Cela sera possible avec la version 2.0. Dans l'attente, seules des
solutions basées sur P/Invoke ou Interop sont possibles (utilisation
d'un contrôle ActiveX comme MSCOM). Voir par exemple:

http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&Product=vb6
http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id20

Voir http://franson.biz/serialtools/index.asp?platform=net pour une
solution commerciale.



Une telle solution fonctionnera-t-elle également sous d'autres OS avec
Mono ?

Quant au port USB, il est plutôt conseillé de communiquer avec le driver
du périphérique USB plutôt qu'avec le port directement.



L'idée est au contraire plutôt pédagogique...
Comprendre comment fonctionne une communication USB avec un
périphérique.
Etre capable de réaliser des petits périphériques simples fonctionnant
sur port USB (et non série/parallèle comme c'est souvent le cas)
Avatar
Patrick Philippot
wrote:
Une telle solution fonctionnera-t-elle également sous d'autres OS avec
Mono ?



L'accès aux ports série sous le framework 2.0 est/sera possible via le
namespace System.IO.Ports et la classe SerialPort. Je ne vois pas
l'équivalent dans la version actuelle de Mono mais j'ai peut-être mal
vu. Ce qui ne veut pas dire que ça ne viendra pas.

Quant au port USB, il est plutôt conseillé de communiquer avec le
driver du périphérique USB plutôt qu'avec le port directement.



L'idée est au contraire plutôt pédagogique...
Comprendre comment fonctionne une communication USB avec un
périphérique.
Etre capable de réaliser des petits périphériques simples fonctionnant
sur port USB (et non série/parallèle comme c'est souvent le cas)



Je comprends. Mais il ne faut pas mélanger les genres. Si vous voulez
accéder à un périphérique depuis du code managé, il faudra utiliser les
classes qui permettent l'accès à un device driver particulier comme la
future classe SerialPort ou celles qui donneront (dans l'avenir,
peut-être) les mêmes possibilités que l'API DeviceIOControl aujourd'hui.
Si vous voulez écrire un pilote, .Net n'est pas l'outil adapté à ce
jour.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
noone
Merci de vos conseils, j'avais pensé à .Net/C# comme une manière
d'éviter le C++ mais il reste encore du travail côté liaison avec
le hardware... Dommage car je trouve ce langage très "élégant".
Avatar
Christophe Lauer [MS]
Bonjour,

wrote:
je voudrais savoir comment communiquer en C#
avec le port parallèle et/ou le port série



A mon avis, en attendant que le support des ports série ne soit inclus en
standard dans le .NET Framework 2.0, le plus simple pour exploiter un port
RS323 depuis le .NET Framework 1.1 est d'utiliser un exemple
d'implémentation d'un telle classe fournie dans les samples de code de VC++.

Merci au support muti-langages de .NET, vous pourrez utiliser cette classe
rs232 depuis tout autre langage, C# y compris.

Pour télécharger ces samples de code :
http://www.microsoft.com/downloads/details.aspx?FamilyIdn6FAC4B-5B51-41FE-9604-1D9752E8A71A&displaylang=en

La classe en question se trouve ensuite dans : (INSTALLBASE)VC.NET
SamplesVC.NET - Framework - Using the COM PortRs232.h

je voudrais de plus que mon appli soit portable sur Linux/Unix (via
Mono) je dois donc éviter les appels à Win32 et fonctionner
uniquement en code managé.



Hmmm... Là, il faudrait vérifier dans la licence transmise avec ces exemples
de code quelles en sont les conditions d'utilisation précises autorisées.

HTH,

--
Christophe Lauer - Relations Techniques Editeurs de Logiciels
Division Développeurs et Plateforme d'Entreprise - Microsoft France
http://www.microsoft.com/france/msdn/

This posting is provided "AS IS" with no warranties, and confers no
rights.
Avatar
noone
> Pour télécharger ces samples de code :
http://www.microsoft.com/downloads/details.aspx?FamilyIdn6FAC4B-5B51-41FE-9604-1D9752E8A71A&displaylang=en




merci pour le lien
Avatar
Paul Bacelar
Un driver en C++ ? C'est pas interdit, mais utilisez le C, c'est beaucoup
plus simple.
--
Paul Bacelar


wrote in message
news:
Merci de vos conseils, j'avais pensé à .Net/C# comme une manière
d'éviter le C++ mais il reste encore du travail côté liaison avec
le hardware... Dommage car je trouve ce langage très "élégant".