Wie Schreibe Zeichen-string auf die serielle Schnittstelle mit SerialPort.Write(String)

Ich versuche zu schreiben, die einen string an den seriellen port mit SerialPort.Write(String).
Bisher versuche ich es wie gefolgt

Instanziiere ich die serial-port-Objekt in meinem Konstruktor.
EDIT: Einstellen der port-Parameter das problem gelöst.

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

Ich den port öffnen:

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);
    }
}

Und ich versuche zu senden, den Inhalt einer Zeichenkette über die serielle Schnittstelle:

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

Wo der Inhalt des Strings ist:

this._serialPort.WriteToSerialPort("ABC");

Mein problem ist, dass auf der empfangenden Seite (einem anderen PC mit einem seriellen port monitoring-software), die ich nicht erhalten "ABC".
Was ich erhalte ist "þ", die ASCII-Zeichen-code 254.

Ich habe versucht, ändern Sie die Encoding-Eigenschaft, um alle verfügbaren Codierungen, aber das hat nicht geholfen.

Kann mir jemand sagen, was ich tun kann für das senden einer Zeichenkette auf die serielle Schnittstelle über die serielle Schnittstelle mit der Klasse?
Habe ich da was übersehen oder missverstehen etwas?

Sie müssen definieren, welche Art von Zeichenfolge erwartet wird auf der anderen Seite - ASCII-Zeichenfolge oder etwas anderes, mit null am Ende oder nicht. Ihr code nicht enthalten-port-Einstellungen wie Baudrate. Wenn eine andere Seite arbeitet mit verschiedenen port-Parametern, das Ergebnis ist undefiniert.
Alex, auf der anderen Seite erfordert/erwartet einen ASCII-string. Ich werde die Parameter einstellen und versuchen. THX
Es ist besser, mit zu arbeiten SerialPort.Write(Byte[], Ini32, Int32) überlastung, die nicht abhängig, string encoding-Einstellungen. Bereiten byte-array nach einer anderen Seite die Anforderungen.
Einfach, aber Sie meinen Tag gerettet. Ich die Parameter einstellen und es funktioniert. Ich habe vergessen, dass ich die baud-rate auf der anderen Seite, um 1200. So hat es nicht funktioniert mit den Standard-baud-rate. Ich werde auch versuchen zu implementieren, die Ihren Tipp für den SerialPort.Write(Byte[], Ini32, Int32). THX a lot!

InformationsquelleAutor ck84vi | 2014-09-03

Schreibe einen Kommentar