Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, estou começando a estudar C#, mais precisamente através do Visual Studio 2010.

Estou precisando de um exemplo simples, meu interesse no momento é integra leituras do PIC e envia-las para o PC, enviadas serialmente.

 

 

Gostaria de um exemplo simples, onde o PIC enviasse um valor de temperatura via serial e o programa colocasse isso num "Progress Bar" (era esse o nome quando eu usava VB...)
 

Como esse:

vb-progress-bar-activex.jpg

 

 

Eu me lembro que quando eu começei a mexer com VB, eu estabelecia um valor mínimo e máximo, por exemplo de 0 a 100. No exemplo que procuro para estudo e fazer a leitura da porta serial e mostrar nessa barrinha. Por exemplo, se a temperatura for 50°C a barrinha vai aparecer no meio exato.

Só para que eu possa começar a entender a lógica da entrada de dados via serial no C#.

Se alguém tem um código parecido, comente ele por favor, para que eu possa entender o uso de cada linha de código.

Falou!

Postado

  Os links abaixo mostram como usar o Progress Bar
- http://forum.clubedohardware.com.br/forums/topic/849157-uso-de-progressbar-em-c/
- http://www.youtube.com/watch?v=Rpyc45Hg5lU
  O vídeo abaixo mostra como comunicar Arduino com C#, tirando a parte da linguagem usada no arduino o resto é o mesmo.
- http://www.youtube.com/watch?v=Vlus1vYj8VU
- http://labdegaragem.com/profiles/blogs/crie-seu-pr-prio-programa-de-comunica-o-serial-em-c-tutorial-1
  Aqui mais profundamente como usar a porta serial em C#.
- http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/
  Abaixo umas vídeo aulas simples e outras completas sobre C#.
- http://www.youtube.com/playlist?list=PL3qjijNsnxwqEVhUSV-wQl2ewIOtEWOYG
- http://www.themediafire.com/torrent-curso-em-video-aulas-basico-e-avancado-de-c/
  Se quer aprender profundamente recomendo o uso de livros.

Postado

@chacalgbi

 

Vou te dizer que serial via C# não é simples.

Tentei pesquisar na net e cada um fazia de modo diferente.

Acabei encontrando um livro, até que barato em relação ao normal, que trata desse assunto.

O autor se propõe a monitorar uma tensão analógica, que entra no CAD de um uC (PIC16F877A).

Essa tensão é enviada ao PC via porta serial e depois via USB.

Os valores monitorados são transferidos para um arquivo, para um gauge e para um gráfico.

Eu comprei o livro e não me arrependi.

O autor possui uma didática excelente, que faz você entender passo-a-passo todo o procedimento.

Procure por "Criação de Sistemas Supervisórios em Visual C# 2010 Express" do autor Carlos Eduardo Sandrini Luz.

Só pelo tempo que fiquei pesquisando na net e pelas dúvidas e incertezas não resolvidas, vale o investimento.

 

http://www.buscape.com.br/prod_unico?idu=1853650408&ordem=prec#precos

MOR_AL

Postado

Obrigado pessoal! Vou da uma olhada em tudo isso!

 

Acabei de comprar o LIvro "Use a Cabeça! C#"  Tem ele por ai em PDF, mas adorei a didática do livro e acabei comprando... Vou dar uma olhada nesse ai que você passou @MOR

MatheusLPS, baixei o exemplo que você colocou no outro post vou fuçar ele..

 

Tô com 5GB de vídeo aula de C#.... Agora falta o mais difícil: TEMPO!!

Mas a questão do progressBar eu quero voltar aqui e tirar algumas dúvidas ainda...

Brigadão!


@chacalgbi

 

Vou te dizer que serial via C# não é simples.

Tentei pesquisar na net e cada um fazia de modo diferente.

Acabei encontrando um livro, até que barato em relação ao normal, que trata desse assunto.

O autor se propõe a monitorar uma tensão analógica, que entra no CAD de um uC (PIC16F877A).

Essa tensão é enviada ao PC via porta serial e depois via USB.

Os valores monitorados são transferidos para um arquivo, para um gauge e para um gráfico.

Eu comprei o livro e não me arrependi.

O autor possui uma didática excelente, que faz você entender passo-a-passo todo o procedimento.

Procure por "Criação de Sistemas Supervisórios em Visual C# 2010 Express" do autor Carlos Eduardo Sandrini Luz.

Só pelo tempo que fiquei pesquisando na net e pelas dúvidas e incertezas não resolvidas, vale o investimento.

 

http://www.buscape.com.br/prod_unico?idu=1853650408&ordem=prec#precos

MOR_AL

 

Cara, dei uma lida em algumas coisas sobre esse livro, ele é mesmo demais!

 

Acabei de comprar ele tb.... rsrs

 

Muito obrigado pela dica, vou aproveitar minhas férias de junho e comer esses livros.

 

Falou!

Postado

@chacalgbi

 

Recomendo aprender primeiro a comunicar com o PC, depois o Progress Bar. 

 

Digo que no Visual Studio, via C# você faz isso em 30 segundos. Muito fácil

 

EDIT:

 

Fiz um exemplo bobinho aqui:

 

4YKP2k0.png

 

Código:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms; namespace WindowsFormsApplication3{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }         private void trackBar1_Scroll(object sender, EventArgs e)        {            progressBar1.Value = trackBar1.Value;            label1.Text = trackBar1.Value.ToString();        }    }}
 
Projeto para teste:
 
 
EDIT 2:
 
Caso não abra o arquivo aí, ou abrir com erro é  por que uso o Visual Studio 2013 e o projeto foi feito visando o Net FRamwork 4.5. Caso você não tenha esse Framework instalado, ele dá erro. Aí você tem dus opções:
 
1 - Baixar no site da microsoft o 4.5 e instalar;
2 - Trocar a versao nas opções do projeto para um framework mais antigo. 
 
Falou
Postado

Eu, antes de comprar e usar o tal livro do Supervisório..., comprei estas duas vídeo aulas do Treinamentos TI.

Com elas pude entender o que o livro fazia.

http://www.treinamentosti.com.br/CursoCSWA1.aspx

http://www.treinamentosti.com.br/CursoCSWA2.aspx

Para quem está iniciando e mesmo para quem já conhece alguma coisa.

MOR_AL

Acabei de olhar aqui, tenho esse curso aqui no HD externo, 4,48GB o curso básico e o avançado.

MatheusLPS, obrigado pelo exemplo, deu pra entender, vou estudar o outro tópico que vcd passou e tentar comunicar Via serial ou USB, eu tenho vários adaptadores USB-TLL Prolific USB-to-Serial Comm Port e tenho tb o Silicon Labs CP210x USB Uart Bridge. Sempre uso eles pra comunicar meus PICs com o PC. Funcionar normal. Posso usar eles?

Postado

@chacalgbi

 

Nunca usei esses adaptadores.

 

Sempre conecto via USB direto usando algum PIC que tenha USB nativa. Aí vai e você querer usar a USB emulando uma porta COM ou usar a USB direto. Seja BULK ou HID.

 

Falou

Postado

Matheus, fiz s teste que você passou no 2010 e deu certo. Me diz uma coisa, eu preciso usar o Cristal do PIC de 48MHz mesmo? Eu li no livro "Compilador CCS Y Simulador PROTEUS para Microcontroladores PIC" lá dizia que se usar o bit PLL5 na configuração poderia usar um cristal de 20MHz. Essa informação procede? É que o livro é em espanhol... rsrs

 

 

você sabe se o Proteus 8 já faz a simulação da conexão USB no Win7?

Postado

Tava tentando conectar aqui ao PC e deu erro, acho que deve ser por duas causas prováveis:

 

1 - O cristal, coloquei um de 40MHz e mudei lá no clock o valor de 48000000Hz para 40000000Hz, mas não mudei os Fuses, tem algo a ver? So tenho cristais de 40, 20, 16, 10 e 4 MHz. Algum desses serve?

 

 

2 - Outra coisa, uso o WIN7 64bits. Preciso de algum driver específico para instalar o PIC quando conecta-lo na USB?

Postado

@chacalgbi

 

Mals a demora na resposta. Seu tópico passou batido ontem.

 

Seguinte, para cristal de 20Mhz, fica:

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN

Veja o PLL5 logo acima. Se você for no datasheet do PIC, na parte da USB, irá encontrar algo do tipo:

 

O cristal é dividido pelo PLL e multiplicado por 24 para chegar em 96Mhz e aí dividido por 2 para alcançar 48Mhz que é usado para a USB full speed.

 

Veja a figura abaixo para saber qual PLL usar em cada cristal.

 

pllm.png

 

Traduzido e adaptado do forum do CCS:

 

Voltando à primeira pergunta, um cristal de 40MHz como você usou não é válido. Você pode usar um _oscillator_ externo 40Mhz, mas não um cristal. O oscilador interno não está especificado para executar acima 25MHz (ver datasheet).
 
Agora, o cristal de 4 MHz, também pode dar problemas usando a USB. Apesar de "legítimo", já foi observado problemas com eles. Por alguma razão, o PLL USB interno, pode se comportar "estranhamente", com muito poucos cristais. O chip funciona, mas o USB se torna pouco confiável. 
 
Então, eu diria que, use um múltiplo de 4MHz. O cristal de 20MHz (ou um de 8MHz, 12MHz, etc), seria a minha escolha. 
 
Para o cristal de 20MHz, você tem a opção de executar o processador, em 48MHz, 24MHz, 20MHz, 16MHz, 12MHz, 10MHz, 6.66MHz ou 5MHz. As configurações normais de fusíveis são:
 
HSPLL  PLL5 CPUDIV1 USBDIV                - 48MHz CPUHSPLL  PLL5 CPUDIV2 USBDIV                - 24MHz CPUHS PLL5 CPUDIV1 USBDIV                    - 20MHz CPUHSPLL PLL5 CPUDIV3 USBDIV                 - 16MHz CPUHSPLL PLL5 CPUDIV4 USBDIV                 - 12MHz CPUHS PLL5 CPUDIV2 USBDIV                    - 10MHz CPUHS PLL5 CPUDIV3 USBDIV                    - 6.66MHz CPUHS PLL5 CPUDIV4 USBDIV                    - 5MHz CPU

Se o fuse HS é selecionado, o clock da CPU vem do cristal, enquanto que, se o fuse HSPLL  é selecionado, o clock da CPU vem do PLL USB.

 

PLL5 quer dizer que vamos dividir o clistal por 5 para obter o 4MHz necessário para alimentar o PLL USB. 

 

Fonte: http://www.ccsinfo.com/forum/viewtopic.php?p=91663

 

Diagrama de blocos da parte USB:

 

18f4550_osc.jpg

 

Mais info:

 

https://www.ccsinfo.com/forum/viewtopic.php?p=174892

http://www.rosseeld.be/DRO/PIC/18F2455_2550_4455_4550_Usb_Clock.htm (bem completo)

 

Depois que você colocar os fuses corretos, o winodws vai mostrar que reconheceu o dispositivo s vai pedir um driver.

 

Por padrão o CCS traz esse driver no caminho: C:\Program Files (x86)\PICC\Drivers

 

No entanto esse driver é para windows 32 bits.

 

Para windows 7 64bits, faça uma cópia do arquivo cdc_NTXPVista.inf naquela pasta que citei acima e modifique por:

; Windows 2000, XP and Vista setup File for CCS CDC demo ; see examples ex_usb_serial.c and ex_usb_serial2.c  [Version] Signature="$Windows NT$" Class=Ports ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} Provider=%CCS% LayoutFile=layout.inf  [Manufacturer] %ProviderName%=DeviceList, NTx86, NTamd64  [CCS] %CCS_CDC%=Reader, USB\VID_0461&PID_0033  [Reader_Install.NTx86] ;Windows2000  [DeviceList.NTamd64] %CCS_CDC%=Reader, USB\VID_0461&PID_0033  [DestinationDirs] DefaultDestDir=12 Reader.NT.Copy=12  [Reader.NT] Include=mdmcpq.inf CopyFiles=Reader.NT.Copy AddReg=Reader.NT.AddReg  [Reader.NT.Copy] usbser.sys  [Reader.NT.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbser.sys HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"  [Reader.NT.Services] AddService = usbser, 0x00000002, Service_Inst  [Service_Inst] DisplayName = %Serial.SvcDesc% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %12%\usbser.sys LoadOrderGroup = Base  [Strings] CCS = "Custom Computer Services, Inc." CCS_CDC = "USB to UART" Serial.SvcDesc = "USB Serial emulation driver"
 
Salve e use esse driver.
 
Falou
Postado

Matheus, obrigado pela resposta!

Bem, eu mudei o cristal para 20MHz: deu certo!

E troquei o driver: tb deu certo!

Agora vou fazer os testes de comunicação e posto aqui.

Falou

Consegui fazer a conexão com o código que você fez. Olha ai

140517041157829505.jpg

Agora vamos ao C#.

Como colocar um dado que recebo da serial num textbox?

Esse dado é string? Tem como converte-lo pra int para que eu possa compara-lo com o value de um progressbar?

Eu olhei o código que você fez do C#, não entendi porque tantos Buffer[1], Buffer[2], Buffer[3], Buffer[4]...... etc.

Bem, voltando com meus Testes.

MatheusLPS, eu baixei e instalei o Frameworks 4.5.1 ai seu código "SimpleSerial" abriu.

Fiz os testes e funcionou como esperado, ai eu mudei a palavra que tava sendo recebida no programinha para o valor de uma variável int e fui incrementando. Até ai tudo bem a caixa de texto recebe os valores atualizados a cada 500ms.

         if (usb_enumerated())          {                 x++;            printf(usb_cdc_putc,"%u",x);            //printf(usb_cdc_putc,"PIC Conectado!");            delay_ms (500);            output_toggle(PIN_B7);         }

Ai eu coloquei a barrinha do progress bare coloquei a seguinte linha de código:

        private void textBox1_TextChanged(object sender, EventArgs e)        {            barra.Value = Convert.ToUInt16(RxString);            label1.Text = RxString;        }

A barra começa a atualizar, só que só vai de 0 a 9. De vez em quando pega um número como 22 ou 48, 98, etc....

Coloquei o label1 pra confirmar minhas suspeitas, e ele só aparece esse valor mesmo, por exemplo, se na caixa de texto aparece 45, no label e na barra só vai aparecer o valor correspondente 5, ou seja, a última casa decimal. Como é que faz para a barra.value receber o valor completo da variável RxString?

Tem como colocar o progressBar na vertical?

Falou

Postado

Para facilitar a discussão, transcreverei o código C# do outro tópico logo abaixo, dentro de um spoiler, para ficar mais fácil o acompanhamento:

 

Código C#:

 

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace SimpleSerial{    public partial class Form1 : Form    {        // Variáveis        string RxString;        byte[] buff = new byte[3];          public Form1()        {            InitializeComponent();        }         private void buttonStart_Click(object sender, EventArgs e)        {            // Altere para sua COM. Veja no gerenciador de sipositivos qual a disponível            bool error = false;            serialPort1.PortName = "COM4";            serialPort1.BaudRate = 9600;             if (!serialPort1.IsOpen)            {                try                {                    // Abrir a porta                    serialPort1.Open();                }                catch (UnauthorizedAccessException) { error = true; }                //catch (IOException) { error = true; }                catch (ArgumentException) { error = true; }                                if (error) MessageBox.Show(this, "Não foi possível abrir a porta COM.  Está em uso, foi removida ou não está disponível.", "COM Port não disponível", MessageBoxButtons.OK, MessageBoxIcon.Stop);                 //serialPort1.Open();                if (serialPort1.IsOpen)                {                    buttonStart.Enabled = false;                    buttonStop.Enabled = true;                    button_red.Enabled = true;                    button_green.Enabled = true;                                        textBox1.ReadOnly = false;                }            }        }         private void buttonStop_Click(object sender, EventArgs e)        {            if (serialPort1.IsOpen)            {                serialPort1.Close();                buttonStart.Enabled = true;                buttonStop.Enabled = false;                button_red.Enabled = false;                button_green.Enabled = false;                                textBox1.ReadOnly = true;            }         }         private void Form1_FormClosing(object sender, FormClosingEventArgs e)        {            if (serialPort1.IsOpen) serialPort1.Close();        }         private void DisplayText(object sender, EventArgs e)        {            textBox1.AppendText(RxString);        }         private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)        {            RxString = serialPort1.ReadExisting();                        this.Invoke(new EventHandler(DisplayText));        }         private void button1_Click(object sender, EventArgs e)        {            buff[0] = 1;            buff[1] = 0;             buff[2] = 3;             serialPort1.Write(buff, 0, 3);        }         private void button2_Click(object sender, EventArgs e)        {            buff[0] = 1;            buff[1] = 2;            buff[2] = 0;             serialPort1.Write(buff, 0, 3);        }         private void button1_Click_1(object sender, EventArgs e)        {            buff[0] = 1;            buff[1] = 2;            buff[2] = 3;            serialPort1.Write(buff, 0, 3);                   }            }}

 

Eu olhei o código que você fez do C#, não entendi porque tantos Buffer[1], Buffer[2], Buffer[3], Buffer[4]...... etc.

 

Veja no início do código:

byte[] buff = new byte[3];

Na vedade, buff é 01 (uma variável) do tipo vetor. Quando eu digo buff[1] ou buff[2], estou me referindo à posição interna desse vetor.

 

Mais info: 

http://en.wikipedia.org/wiki/Array_programming

http://www.dicasdeprogramacao.com.br/o-que-sao-vetores-e-matrizes-arrays/

 

 

 

A barra começa a atualizar, só que só vai de 0 a 9.

 

Quando se coloca a Progress Bar na tela, ela vem configurada para exibir no máximo até 10. Apenas mude sua configuração no barra de Properties. Ela fica do lado direito da tela e a opção se chama Maximum Value. Deve estar com um 10, mude para qual você deseja.

 

Isso deve resolver esses problemas malucos de mostrar somente valores baixos.

 

Falou 

Postado

Né isso não, coloquei o progress Bar para ir de 0 a 100 e a contagem do pic tb tá indo de 0 a 100.

 

É isso mesmo que eu disse no outro tópico. Só tá aparecendo a segunda parte de um número que é dezena, Ou seja, de 0 a 10 ele progride beleza, mas passou disso, ele começa a pegar novamente o último número de uma dezena! Ex: se aparece o 11, ele interpreta como 1, se aparece o 29, ele interpreta como 9. A barra tá bem configurada, porque para tirar a dúvida eu fiz uma caixa  de texto e fui adicionando valores de 0 a 100 e o progressBar respondeu certinho.

É por isso que eu tô achando que a caixa de texto tá recebendo os valores separados, no caso de um número 35, ela recebe o 3 depois o 5 ai o progressBar recebe o 5.

 

entendeu?

 

Coisa estranha! rsrs

Postado

Hum.... entendi agora.

 

Imagino que seja por 01 motivo simples.

 

usei essa linha para ler o que tem na serial:

 

RxString = serialPort1.ReadExisting();

 

Com a função ReadExisting(), o programa lê o que tem na serial. Se você envia 45, provavelmente ele lê primeiro o 4 e depois o 5. Mas acontece tão rápido que você só vê o 5, que é o último algarismo.

 

Tenho uma dica, veja a função SerialPort.ReadLine().

 

http://msdn.microsoft.com/pt-br/library/system.io.ports.serialport.readline(v=vs.110).aspx

 

Com ela, acredito que dê certo.

 

Tem um pulo do gato aí para o uso entre uma e outra...

 

Deixarei você quebrar a cabeça um pouquinho..... :devil:

 

Falou

Postado

Buguei aqui... rsrs

 

Estou começando na programação do C#. Tem apenas 1 semana que começei a mexer e assistir a umas vídeo aulas. Não entendi direito o código, mas pelo que  você disse provavelmente deve ser duas coisas:

 

1 - Ou é necessário um tempo maior entre o recebimento do 1° dado e do 2° dado pelo programa.

2 - Ou é necessário concatenar os dois valores recebidos antes em uma variável e só depois por no progressBar.

 

É algo parecido? Ou passei longe?

Postado

@chacalgbi

 

Tem como colocar o progressBar na vertical?

 

É possível, amigo:

 

pbar.png

 

 

Basta adicionar esta classe e criar um ProgressBar customizado:

public class VerticalProgressBar : ProgressBar{    protected override CreateParams CreateParams    {        get        {            CreateParams cp = base.CreateParams;            cp.Style |= 0x04;            return cp;        }    }}

Peguei essa dica no fórum da MSDN: http://social.msdn.microsoft.com/Forums/windows/en-US/60b2493d-c8ff-495d-b845-d114fe456f54/how-to-create-a-vertical-progressbar-in-visual-cnet-2005?forum=winforms

 

 

Sobre o problema da string, creio que a questão chave seja o caractere terminador de linha que teria de ser adicionado para o uso do método ReadLine. Programação de microcontroladores não é a minha praia, mas creio que tenha de fazer isto:

printf(usb_cdc_putc,"%u\r\n",x);

Se não for nada disso, o @MatheusLPS explica melhor.. ;)

 

 

 

Abs.

LNW

Postado

@chacalgbi

 

Eu iria na opção 2. É um modo de fazer.

 

Mas, o colega @LNW matou a charada. O uso do terminador de linha \n faz com o que a função ReadLine() funcione que é uma beleza.

 

Só não tenho certeza se precisa do \r.

 

Teste sem e com ele.

 

Boa dica essa do Progress bar na vertical. Não conhecia a mesma.

 

Falou

Postado

Bem, eu tentei dos três modos:  (\r), (\n) e (\r\n).  A variável vai incrementando uma em baixo da outra no texbox. Mas não consigo converte-la de string para int, ela funciona por duas contagens do PIC ex: 51, 52... quando vai pro 53

 dá o seguinte erro: " A cadeia de caracteres de entrada não estava em um formato incorreto "

 

 

Rsrs.... tá difícil!

 

Porque tem momentos que consigo converter uma string em int e em outros momentos não? Sendo que o valor que eu mando é sempre numérico?

 ReadLine() interpreta o número junto com o \n enviado do pic? 

Depois que eu inseri o  \n foi que começou a dar esse erro e não consigo converter a variável RxString em um int.

 

Tô fazendo assim:

int x;x = Convert.ToInt16(Rxstring);barra.value = x;

Sendo que o pic só tá contando de 0 a 99 e o valor mínimo e máximo do progressBar tá 0 e 100. :confused:  :confused:  :mad:  :mad:

 

Fiz testes usando trackBar para variar o progressBar e dá certo, fiz testes atribuindo o valor do trackBar para uma variável int e só depois o valor dessa variável ir para o progressBar e tb deu certo.

Ex:

        private void trackBar1_Scroll(object sender, EventArgs e)        {            int x;            x = trackBar1.Value;            progressBar1.Value = x;        }

O bixo tá pegando mesmo é na hora de receber a danada da variável RXString....



LNW, muito obrigado por ensinar a colocar a barra na vertical, mas nem testei ainda, tô tentando primeiro resolver esse pipino aqui.

 

Alguém mais tem alguma ideia?

 

Falou

Postado

@chacalgbi

 

Terei que tentar reproduzir seu erro aqui. Mas tenho certeza que será fácil de resolver.

 

O problema que minha atual instalação do windows 7 não está aceitando a simulação no Proteus da USB.

 

Acho que é por que eu usei o Proteus 8 durante um tempo e pode ter dado algum conflito. Ou então a atualização para SP1 do windows 7 está dando conflito.

 

Estou com preguiça de formatar agora.

 

Já estou instalando um windows 8 em uma máquina virtual e reproduzirei o erro e volto mais tarde com a solução.

 

Para ilustrar esse post:

 

l82Qfmh.png

 

Falou

Postado

Beleza Matheus.

 

Quero muito aprender essa negoço.

 

Vou tá sempre olhando por aqui

 

Mais uma vez muito obrigado!

 

Segue abaixo o trecho de como tô mandando o código do PIC, para você fazer exatamente a mesma simulação:

int x=0;         if (usb_enumerated())          {                 x++;            if (x > 100) x=0;            printf(usb_cdc_putc,"%u\n",x);            delay_ms (1000);            output_toggle(PIN_B7);         }
Postado

o conteúdo da variável RXstring será o valor de X incrementado. Começará de 0 e irá até 100 e retornará a 0 (zero) novamente.

 

O código é o mesmo sim, é o código do MatheusLPS.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!