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?
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
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser:
vous pouvez également vouloir vérifier votre débit en BAUDS sur les deux côtés de la connexion (ces le besoin d'être le même).
OriginalL'auteur jbutler483