PORTA SERIAL

NALDOXD 31/01/2013 14:21:15
#418496
Boa tarde galera, eu to precisando fazer a comunicação com uma porta serial no C#, mas, estou no notebook e estou usando um programa chamado Virtual Serial Pors Emulator ou VSPE, nele tem uma tela com Title (Nome da porta serial), Device (Serviço do serial) e Status (status serial)... eu creiei 5 COM, e os status ficam READY quando executo o meu sisteminha e escolho a COM o status muda de Ready para OK então creio que a comunicação esteja sendo feita, o problema é que não estou conseguindo ler, não sei se é porque não tem nada ou porque não estou tanto conta.. Tentei dar um WRITE para ver o que retornava mesmo assim o Read continua me retornando vázio, poderiam dar uma olhada? (Código Abaixo) Estou usando um Componente do Windows chamado serialPort1..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
serialPort1.Write([Ô]PON[Ô]);
lblStatus.Text = [Ô]Conectado[Ô];
MessageBox.Show(serialPort1.ReadExisting());
}
else
MessageBox.Show([Ô]Serial já conectado[Ô], [Ô]Conectado[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

private void button2_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Write([Ô]POF[Ô]);
lblStatus.Text = [Ô]Desconectado[Ô];
serialPort1.Close();
}
else
MessageBox.Show([Ô]Serial desconectado[Ô], [Ô]Desconectado[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}


}
}
OCELOT 31/01/2013 16:12:20
#418505
Resposta escolhida
Você está conectando, enviando dados e já tentando ler, só que a comunicação é assíncrona, então quando você tenta ler os dados não tem nada para ser lido e por isso sai vazio. O que você precisa fazer ai é provavelmente tratar o evento DataReceived do SerialPort para saber quando chegaram dados pela porta serial.
NALDOXD 01/02/2013 15:42:02
#418586
Sim eu percebir aqui amigo me tira uma dúvida você sabe me diferenciar o DataReceveid e o PinReceveid ?
OCELOT 01/02/2013 19:33:20
#418612
Se você está falando do evento PinChanged me parece que ele é usado para pegar certas mudanças de estados da porta, porém não é realmente necessário se preocupar com isso para comunicação serial binária pois o cabo para comunicação serial RS-232 precisa apenas de 3 fios para funcionar da forma mais básica para enviar e receber dados, e assim não teria a mudança de estados que vem em outros pinos.
NALDOXD 04/02/2013 10:10:51
#418693
Entendi, é que eu instanciei os dois eventos Data e Pin e quando eu realizo a leitura da porta serial somente o PIN dispara, provavelmente pelo fato de não estar recebendo nenhuma data.. obrigado! Se alguém tive um argumento vou deixar o tópico aberto por mais algum tempo..
Tópico encerrado , respostas não são mais permitidas