Usuário com melhor resposta
STRING PORTA SERIAL

Pergunta
-
Bom dia.
Estou fazendo uma plicação para envio de informaçãoes ao um display de balança pela porta serial.
Preciso que quando enviar o valor para o painel inclua "ST e SG" no inicio e no fim a instrução de fechamento CR e LF.
Como e inclui este instrução no código abaixo?
namespace SerialCOMThreading
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private static string RxString="";
private void openPort_Click(object sender, EventArgs e)
{
try
{
// make sure port isn't open
if (!serialPort.IsOpen && !serialPortRead.IsOpen)
{
// set status
readTextBox.Text = serialPort.PortName+" Ready!";
readTextBox.AppendText(serialPortRead.PortName + " Ready!");
//open serial port
serialPort.Open();
serialPortRead.Open();
// prevent reinitiation
openPort.Enabled = false;
}
else
readTextBox.Text= "Port isn't openned";
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(ex.Message);
}
}
// close ports
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
serialPort.Close();
serialPortRead.Close();
}
//datareceived handler
private void serialPortRead_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
RxString = serialPortRead.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
catch (System.TimeoutException) { }
}
// Read/Update to textbox
private void DisplayText(object s, EventArgs e)
{
readTextBox.AppendText(RxString);
}
// send message over serial COM
private void sendButton_Click(object sender, EventArgs e)
{
serialPort.Write(writeTextBox.Text);
}
private void writeTextBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
serialPort.Write(writeTextBox.Text);
}
private void writeTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
// If the port is closed, don't try to send a character.
// or not in instance MS mode
if (!serialPort.IsOpen || !instanceMS.Checked) return;
// If the port is Open, declare a char[] array with one element.
char[] buff = new char[1];
// Load element 0 with the key character.
buff[0] = e.KeyChar;
// Send the one character buffer.
serialPort.Write(buff, 0, 1);
// Set the KeyPress event as handled so the character won't
// display locally. If you want it to display, omit the next line.
// e.Handled = true;
}
private void clearButton_Click(object sender, EventArgs e)
{
readTextBox.Text = "";
writeTextBox.Text = "";
}
}
}
Respostas
-
Olá,
Pelo que dá para ver inicialmente, seria nesses dois método aqui:
// send message over serial COM private void sendButton_Click(object sender, EventArgs e) { serialPort.Write("STSG" + writeTextBox.Text + "CRLF"); } private void writeTextBox_MouseDoubleClick(object sender, MouseEventArgs e) { serialPort.Write("STSG" + writeTextBox.Text + "CRLF"); }
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Robson William SilvaModerator segunda-feira, 23 de janeiro de 2017 13:35
-
Pelo que entendi, o formato tem que ser em ASCII para que o display possa compreender.
eu encontrei essa citação na internet mas é para o final e eu não sei onde inserir no código.
string command = "myCommand"; port.write(string.format("{0}\r\n", command));
\r\n
= CR + LF → É usado como caractere de nova linha no Windows- Marcado como Resposta Robson William SilvaModerator segunda-feira, 23 de janeiro de 2017 13:34
Todas as Respostas
-
Olá,
Pelo que dá para ver inicialmente, seria nesses dois método aqui:
// send message over serial COM private void sendButton_Click(object sender, EventArgs e) { serialPort.Write("STSG" + writeTextBox.Text + "CRLF"); } private void writeTextBox_MouseDoubleClick(object sender, MouseEventArgs e) { serialPort.Write("STSG" + writeTextBox.Text + "CRLF"); }
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Robson William SilvaModerator segunda-feira, 23 de janeiro de 2017 13:35
-
Pelo que entendi, o formato tem que ser em ASCII para que o display possa compreender.
eu encontrei essa citação na internet mas é para o final e eu não sei onde inserir no código.
string command = "myCommand"; port.write(string.format("{0}\r\n", command));
\r\n
= CR + LF → É usado como caractere de nova linha no Windows- Marcado como Resposta Robson William SilvaModerator segunda-feira, 23 de janeiro de 2017 13:34
-