Ir ao conteúdo
  • Cadastre-se

RS232 com Visual C# comunic. CDC com PIC18f4550


Posts recomendados

     Bom dia a todos do fórum, por favor me ajudem, a algum tempo venho tentando fazer uma comunicação entre o Pic 18f4550, Visual Basic 2010 e o circuito e quando achei que tinha conseguido, mais uma vez o objetivo não foi alcançado 100%.

     Montei o circuito com o intuito de fazer se comunicar através da comunicação cdc, Tentei fazer a interface no Visual Basic c# e express. Segui umas vídeo aulas, ensinando a fazer um supervisório utilizando o visual express, peguei também o exemplo de código em c para ccs, Compilei fiz tudo com muita dedicação, na hora de testar, para minha felicidade o circuito foi reconhecido pela interface feita no VB, os círculos que representam os leds mudavam de estado conforme clicava na tecla criada no VB, para minha tristeza, quando fui medir com o multímetro as saídas do Pic elas não mudavam de estado, abaixo estarei postando o código em c, e a imagem do circuito e da interface em vb, conto com a colaboração dos interessados em ajudar.

 Código:

//****************************************************************************//**************** ASCENDER LEDS PC( PC A PIC.....)*********************//****************************************************************************#include <18f4550.h>#fuses hspll,nowdt,nomclr,noprotect,nolvp,nodebug,usbdiv,pll5,cpudiv1,vregen#use delay(clock=48M)                                // clock  a 48Mhz#define USB_CON_SENSE_PIN PIN_B2#include <usb_cdc.h>                                 // declaro librerias USB#include <usb_desc_cdc.h>                             // Descriptores del dispositivo USB.//*********************** configuracion y declaraciones ****************#define ledv  PIN_B6                                 // asignando etiquetas a el pinb6#define ledr  PIN_B7#define ledon output_high                            // asignando etiquetas a la funcion output  #define ledoff output_lowint8 data;void main(){                                         // inicio del codigo   set_tris_d(0);   set_tris_b(0);    output_d(0);//********* CONFIGURAR EL HOST Y VISUALIZAR MEDIANTE LEDS************//      ledoff(ledv);                                      // enciendo el led rojo yq aun no detecta el host   ledon(ledr);      usb_cdc_init();   usb_init();                                        // inicializamos el USB   usb_task();                                        //habilita periferico usb e interrupciones   usb_wait_for_enumeration();                        //esperamos hasta que el PicUSB sea configurado por el host   ledoff(ledr);                                       // encendemos el led verde   ledon(ledv);//************ TERMINA DE VISUALIZAR LOS LEDS ****************************/////////////////////////////////////////////////////////////////////////////// ************** INICIO DEL PROGRAMA ************************************* while(!usb_cdc_connected()){}                      // espera a detectar una transmisión de la PC (Set_Line_Coding).{}                         while(true){      usb_task();   if(usb_enumerated()){                               //retorna verdadero si el dispositivo esta enumerado                                                          if(usb_cdc_kbhit()){                               // en espera de un nuevo caracter en el buffer de recepcion                                                 data=usb_cdc_getc();                if(data=='1')           {               output_toggle(PIN_D0);           }                                                          if(data=='2')           {               output_toggle(PIN_D1);           }                                             if(data=='3')           {               output_toggle(PIN_D2);            }                                                   if(data=='4')          {               output_d(0);           }                              if(data=='5')          {              output_d(255);           }                                                     usb_cdc_putc(data);                                                                            }                             }   }}
 

Bom o circuito feito no proteus:

 

Foto da interface feita no vb:

 

Bom fico no aguardo de ajuda para fazer isso funcionar, desde já agradeço.

Link para o comentário
Compartilhar em outros sites

Bom dia, MatheusLPS! Eu ate já peguei o exemplo para simular e tentar fazer, o exemplo conecta direitinho, a informação "Pic conectedo!" aparece direitinho, porém os leds não ligam de jeito nenhum! tentei varias vezes mas no circuito os leds sempre apagados. O que eu poderia fazer? E em relação a esse código em c que postei ele esta correto!

Link para o comentário
Compartilhar em outros sites

Comprei o livro "Criação de Sistemas Supervisórios em Visual C# 2010 Express" do autor Carlos Eduardo Sandrini Luz, da editora Érica.

O livro vai mostrando a criação passo-a-passo desde o início.

Mostra e explica como fazer a comunicação via serial, depois via USB, depois como mostrar os dados recebidos na tela do PC (valores numéricos, gráficos e do tipo ponteiros), além de como salvá-los.

Foi um bom investimento.

MOR_AL

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Comprei o livro "Criação de Sistemas Supervisórios em Visual C# 2010 Express" do autor Carlos Eduardo Sandrini Luz, da editora Érica.

O livro vai mostrando a criação passo-a-passo desde o início.

Mostra e explica como fazer a comunicação via serial, depois via USB, depois como mostrar os dados recebidos na tela do PC (valores numéricos, gráficos e do tipo ponteiros), além de como salvá-los.

Foi um bom investimento.

MOR_AL

Boa noite MOR! Obrigado pela informação com certeza irei comprar o livro, valeu, obrigado!

Você está usando o Visual Basic ou o Visual C#? São duas coisas diferentes.

Se você estiver utilizando o Visual C#, tem um exemplo que postei funcional aqui: http://forum.clubedohardware.com.br/forums/topic/983159-cabo-usb-rs232/#entry5459764

Falou

Boa noite MahteusLPS, analisei o arquivo do tópico http://forum.clubedohardware.com.br/forums/topic/983159-cabo-usb-rs232/#entry5459764

Entendi o funcionamento, resolvi montar um código desde o inicio compilei, conectou com a porta “com4”, porém a informação “Pic Conectado” não apareceu, se você puder pelo menos da uma olhada e me informar o que tenho que mudar para que a informação “Pic Conectado”, seja exibida, segue o link:

http://www.4shared.com/rar/m-wxHPhyba/Serial_USB_CDC_Tecla_Led.html

Comparei o que você fez e o que eu fiz e notei diferenças:

No seu aparece a pasta _UpgradeReport_Files e o arquivo app, no meu não gerou esses arquivos, algumas partes do programa não abilíta como fazer para abilítar.

Link para o comentário
Compartilhar em outros sites

@ejss, Não se preocupe com o _UpgradeReport_Files e o config..... Eu utilizava a versão 2008 do Visual Studio. Quando passei a utilizar a 2010, ele converteu os arquivos e criou essa pasta. Nada demais.

Te falar que deu trabalho de encontrar o problema. Nãos sei o motivo pelo qual isso ocorreu. Mas siga os passos abaixo:

th_passo_1.png

th_passo_2.png

Código para o passo abaixo:

 

// serialPort1// this.serialPort1.ReadBufferSize = 2;this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);//
th_passo_3.png

Resultado final:

th_Final_OK.png

Falou

Link para o comentário
Compartilhar em outros sites

@MatheusLPS, valeu pela ajuda agora esta funcionando, foi um passo bom para o entendimento, beleza! Agora outra pergunta você simulou a interface feita no c#, no proteus ou no hardware, cara é impressionante pelo código gravado no 18f4550, ao apertar a tecla referente ao led vermelho era para acender o led vermelho, ao apertar a tecla referente ao led verde era para acender o led verde e ao apertar tecla button1 seria para ascende os dois leds é isso mesmo não é, foi o que eu entendi porém no hardware os leds não mudam de estado, será problema no meu 18f4550 ou o que pode ser, porque olhando pelo código feito no ccs não a dúvida que era para funcionar, você tem alguma ideia em relação a esse fato? E valeu mesmo pelas informações! 

Link para o comentário
Compartilhar em outros sites

Estou com o mesmo problema... Fiz um curso de RS232 na microgenios e tento executar os exemplos na propria placa deles e nada... Achei também que o problema era o PIC... Então fiz um programa teste para piscar um led e não piscava... Quando resolvi tirar o cabo serial da placa, pra minha surpresa, funcionou perfeitamente... Percebi que ao conectar o cabo... O circuito para de funcionar... Tiro o cabo, volta ao normal...

Não sei o que fazer e eles não me retornaram ainda.

Link para o comentário
Compartilhar em outros sites

@ejss, olá amigo... Por incrível que pareça acabei de descobrir o problema....

Eu tenho aqui, um cabo Serial conversor Usb/RS232 da TRENDnet que uso para comunicação com o Pic... Mas como eu cito acima, toda vez que conectava o cabo no circuito, dava pau e não rodava nada...

O problema está justamente aí... Não pode conectar o cabo conversor diretamente no circuito... É preciso usar um cabo serial para fazer a conexão do circuito e do cabo... Não me pergunte o porque... Mas aqui funcionou... Foi só eu fazer a ponte entre o circuito e o cabo conversor com um cabo serial comum (macho - femea) que funcionou perfeitamente.

Espero que com você também de certo... Assim que você conseguir dar um jeito aí... Da um retorno aqui pra gente ficar a par da situação...

Boa sorte... Abrass

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@ejss, Não se preocupe com o _UpgradeReport_Files e o config..... Eu utilizava a versão 2008 do Visual Studio. Quando passei a utilizar a 2010, ele converteu os arquivos e criou essa pasta. Nada demais.

Te falar que deu trabalho de encontrar o problema. Nãos sei o motivo pelo qual isso ocorreu. Mas siga os passos abaixo:

th_passo_1.png

th_passo_2.png

Código para o passo abaixo:

 

// serialPort1// this.serialPort1.ReadBufferSize = 2;this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);//
th_passo_3.png

Resultado final:

th_Final_OK.png

Falou

 

Bom dia meu caro! Depois de um tempinho consegui fazer funcionar essa comunicação :aplausos: ! Será que daria para ajudar a implementar uma entrada analógica o objetivo é, quando variar um potenciômetro mostrar essa variação através de um Progress_bar por exemplo    :confused:

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!