Envio de Dados pela porta Serial/USB com Web

20/12/2013

0

Olá pessoal, estou com uma dificuldade, temos uma placa com 4 reles onde posso abrir portões, trancas, cancelas, essa placa recebe comandos ASCII, e preciso fazer isso via Web/C#, pois teremos que acionar isso por celular ou tablet, consegui comunicar, pois essa placa tem uns leds de RX/TX, No manual dessa placa, a única coisa que tem sobre comunicação é:

Sinais de controle
Somente quando cada módulo recebe seu ID de requisição vindo do computador a placa aciona os relês e
retorna seu ID seguido do mesmo comando enviado.
O Id deve ser enviado pelo computador em formato de string
No protocolo UBS4PRM tem 3 caracteres de identificação do tipo de dispositivo + uma letra em ordem
alfabética que identifica entre outros dispositivos iguais a este na rede . No caso da placa de 4 relês também
espera-se os caracteres de controle dos relês. Os strings devem sempre ser enviados em caracteres
maiúsculos .
Placa de 4 relês String de ID "8OUAT1" liga/desliga 110 a 220 volts

e "C" 01 liga/desliga 1.5 a 100 volts

Meu código

SerialPort SP = new SerialPort();

protected void Page_Load(object sender, EventArgs e)
{


}

protected void btnPortaoCentral_Click(object sender, EventArgs e)
{
try
{
SP.PortName = "COM4";
SP.Open();
//SP.Write( Char.ConvertFromUtf32(8) + "OUAT" + Char.ConvertFromUtf32(1));
//SP.Write( Char.ConvertFromUtf32(8) + (char)56 + (char)79 + (char)85 + (char)65 + (char)84 + Char.ConvertFromUtf32(1));
SP.Write("8OUAT1");
SP.Close();
}
catch (Exception ex)
{
lblMensagem.Text = ex.ToString();
}
}


Ja tentei das 3 formas formas contidas, na primeira eu consegui, porem não consigo acionar novamente, somente parando a aplicação e dando F5 novamente. agradeço qualquer ajuda.
Paulo Freire

Paulo Freire

Responder

Posts

23/12/2013

Henrique Gasparotto

Cara, eu fiz um projeto semelhante uma vez. Se não me engano, eu mandava abrir a porta no load da página, e fechar quando fechava a aplicação, e nunca deu problema.
Responder

26/12/2013

Paulo Freire

Vou tentar Henrique, obrigado.
Responder

26/12/2013

Henrique Gasparotto

Beleza Paulo, qualquer coisa avisa.
Responder

27/12/2013

Fabiano Carvalho

Não sei sobre C#, mas supondo que quando voce encerra a aplicação e inicia novamente funciona, deve ter algum objeto que não está sendo finalizado, ou algo que está em memoria não finalizado. Tente encerrar (Pode demorar mais a aplicação), não sei se é a melhor prática.
Responder

07/01/2014

Paulo Freire

Olá Henrique e Fabiano, na verdade ainda não deu certo, vejam meu código



public partial class Default : System.Web.UI.Page
{
//Declara a porta

SerialPort SP = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);


protected void Page_Load(object sender, EventArgs e)
{

}




protected void btn01_Click(object sender, EventArgs e)
{
try
{
SP.Open();
SP.Write("C" + Char.ConvertFromUtf32(01)); //Aciona o rele 1 para false
SP.Close();
}
catch (Exception ex)
{
lblMensagem.Text = ex.ToString();
}
}

protected void btn02_Click(object sender, EventArgs e)
{
try
{
SP.Open();
SP.Write("A" + Char.ConvertFromUtf32(01)); //Aciona o rele 1 para true
SP.Close();
}
catch (Exception ex)
{
lblMensagem.Text = ex.ToString();
}
}

Na aplicação Cliente/ Server funciona, e outra coisa interessante, se eu usar a aplicação cliente/server e deixar o relé como true, ao abrir a aplicação via web, e clicar no botão para deixar false, funciona. Será que alguem pode me ajudar nisso??
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar