J'essaie de mettre en place une application multiplateforme qui s'interface avec le matériel d'automatisation Insteon. Dans les exemples basés sur .Net que j'ai trouvés, la classe System.IO.Ports.SerialPort est utilisée pour lire les données d'un périphérique basé sur un port série RS-232 et d'un modem série USB. Sur une plate-forme Windows, les modems série sont généralement mappés sur un port COM virtuel et il n'est pas difficile d'exécuter une liste, de transmettre de nouvelles adresses COM et de déterminer à quel périphérique USB ou série est attaché. Malheureusement sur le Mac, je suis totalement hors de mon élément. MonoMac me permet de programmer dans un langage plus confortable, mais quelque chose d'aussi bas que de parler au matériel est un peu hors de ma portée. Mon code d'initialisation est comme suit:Corriger les valeurs PortName pour System.IO.Ports.SerialPort pour MonoMac?
private void OpenSerialConnection(string comPort)
{
_serialPort = new System.IO.Ports.SerialPort("/dev/ttys1", 19200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
_serialPort.Encoding = System.Text.Encoding.Default;
_serialPort.WriteTimeout = 1000;
_serialPort.DataReceived += OnDataReceived;
_serialPort.Open();
}
La valeur «/dev/ttsy1 » qui est en place où la variable « comportons » irait fait partie de quelques exemples que je trouvais que suggèrent l'adresse peut-être dans la sous la forme/dev/ttys *. Après quelques recherches, j'ai découvert qu'un périphérique usb s'inscrirait probablement sous le nom "/dev/tty.usbserial*", mais je me demande s'il y a une manière plus élégante de détecter cette valeur que je peux exploiter dans Mono plutôt que d'instruire un utilisateur à entrer dans Terminal et tapez "ls/dev/tty.*" et le taper eux-mêmes?