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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar