Il y a plusieurs années j'ai utilisé OpenNETCF.IO.Serial avant que le support série ait été ajouté à .net. C'est pour le cadre compact mais je l'ai utilisé à la fois pour les appareils compacts et les applications Windows régulières. Vous obtenez le code source afin que vous puissiez le modifier vous-même, ce que j'ai fait.
Il crée fondamentalement un wrapper C# autour de la fonction série importée de kernel32.dll.
Vous pouvez également jeter un oeil à How to capture a serial port that disappears because the usb cable gets unplugged
Voici le code que je l'appelais
using OpenNETCF.IO.Serial;
public static Port port;
private DetailedPortSettings portSettings;
private Mutex UpdateBusy = new Mutex();
// create the port
try
{
// create the port settings
portSettings = new HandshakeNone();
portSettings.BasicSettings.BaudRate=BaudRates.CBR_9600;
// create a default port on COM3 with no handshaking
port = new Port("COM3:", portSettings);
// define an event handler
port.DataReceived +=new Port.CommEvent(port_DataReceived);
port.RThreshold = 1;
port.InputLen = 0;
port.SThreshold = 1;
try
{
port.Open();
}
catch
{
port.Close();
}
}
catch
{
port.Close();
}
private void port_DataReceived()
{
// since RThreshold = 1, we get an event for every character
byte[] inputData = port.Input;
// do something with the data
// note that this is called from a read thread so you should
// protect any data pass from here to the main thread using mutex
// don't forget the use the mutex in the main thread as well
UpdateBusy.WaitOne();
// copy data to another data structure
UpdateBusy.ReleaseMutex();
}
private void port_SendBuff()
{
byte[] outputData = new byte[esize];
crc=0xffff;
j=0;
outputData[j++]=FS;
// .. more code to fill up buff
outputData[j++]=FS;
// number of chars sent is determined by size of outputData
port.Output = outputData;
}
// code to close port
if (port.IsOpen)
{
port.Close();
}
port.Dispose();
Merci. J'ai vérifié celui-ci. Je n'étais pas un grand fan de l'utilisation d'un paquet alternatif, parce que je ne veux pas le maintenir, mais on dirait que j'ai été forcé de le faire. Ce paquet est plutôt bon même si j'ai apporté quelques modifications mineures pour améliorer le rapport d'erreurs. Merci. – Jeremy