J'ai essayé d'arrêter la communication série avec port.Stop et port.Dispose() mais la communication ne s'arrête pas une fois établie.Communication série ne pas être arrêté avec la commande port.Stop
Voici mon code
Méthode de démarrage pour envoyer des données en continu jusqu'à ce que le port est ouvert
public void Start(List<byte> RGBdata)
{
if (!m_port.IsOpen)
{
m_port.Open(); -- it fails over here when reloaded
}
do
{
Break();
Thread.Sleep(5);
m_port.Write(new byte[] { 0 }, 0, 1);
SendData(RGBdata);
Thread.Sleep(1);
}
while (m_port.IsOpen());
}
Méthode Pause
private void Break()
{
m_port.BreakState = true;
Thread.Sleep(1);
m_port.BreakState = false;
}
SendData Méthode
private void SendData(List<byte> data)
{
m_port.Write(data.ToArray(), 0, data.Count);
}
Méthode d'arrêt
public void Stop()
{
m_port.Close();
if (m_port.IsOpen)
{
m_port.Close();
m_port.Dispose();
}
}
Il y a quelques problèmes avec votre code. Pouvez-vous poster le code pour 'SendData' et' Break' aussi? – Stefan
Votre mécanisme de synchronisation, 'Thread.Sleep 1 et 5', a des valeurs vraiment faibles. Normalement 'Thread.Sleep' a une résolution de ~ 30ms. – Stefan
Il n'y a pas de multi-threading dans ce code. Etes-vous sûr d'utiliser plusieurs threads? Si pas 'while (m_port.IsOpen());' sera toujours vrai. Comme remarque, il vaut mieux lever un drapeau pour indiquer un arrêt. – Stefan