Comment écrire la chaîne de caractères de port série à l'aide SerialPort.Write(String)

Im essayant d'écrire une chaîne de caractères sur le port série à l'aide de SerialPort.Write(String).
Jusqu'à présent j'ai essayer comme suivi

J'instancie le port série de l'objet dans mon constructeur.
EDIT: Réglage des paramètres de port résolu le problème.

public CSerialPort()
{
    this._serialPort = new SerialPort("COM6",1200,Parity.None,8,StopBits.One);
    this._serialPort.DataReceived += OnSerialPortDataReceived;
}

J'ai ouvert les port:

public void OpenSerialPort()
{
    try
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", this._serialPort.PortName);
        this._serialPort.Open();
        this.PortIsOpen = true;
    }
    catch (UnauthorizedAccessException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (ArgumentOutOfRangeException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (ArgumentException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (InvalidOperationException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
}

Et j'essaie d'envoyer le contenu d'une chaîne via le port série:

public void WriteToSerialPort(string writeBuffer)
{
    this._serialPort.Write(writeBuffer);
}

Où le contenu de la Chaîne est:

this._serialPort.WriteToSerialPort("ABC");

Mon problème est que sur le côté de réception (un autre PC avec un port série logiciel de surveillance) je n'ai pas reçu le "ABC".
Ce que je reçois est "þ" qui est le caractère ASCII code 254.

J'ai essayé de changer l'Encodage de la propriété à tous les encodages, mais cela n'a pas aidé.

Quelqu'un peut-il me dire ce que je peux faire pour envoyer toute chaîne de caractères sur le port série en utilisant le port série de la classe?
J'ai oublié ou mal compris quelque chose?

Vous avez besoin de définir quel type de chaîne est prévu sur l'autre côté - chaîne ASCII ou quelque chose d'autre, avec des valeurs null à la fin ou pas. Votre code ne contient pas de paramètres de port, à l'instar de la vitesse en bauds. Si d'un autre côté fonctionne avec différents paramètres de port, le résultat est indéfini.
Alex, l'autre côté exige/attend une chaîne de caractères ASCII. Je vais régler les paramètres et essayez. THX
Il est préférable de travailler avec SerialPort.Write(Byte[], Ini32, Int32) surcharge qui ne dépend pas de toute la chaîne de paramètres de codage. Préparer le tableau d'octets selon un autre côté exigences.
Simple, mais vous avez sauvé ma journée. J'ai réglé les paramètres, et cela fonctionne. J'ai oublié que j'réglez le débit en bauds de l'autre côté de 1200. Donc, il ne fonctionne pas avec le débit en bauds par défaut. Je vais aussi essayer de mettre en œuvre votre astuce pour SerialPort.Write(Byte[], Ini32, Int32). MERCI beaucoup!

OriginalL'auteur ck84vi | 2014-09-03