Ir ao conteúdo
  • Cadastre-se

RS232 com c# "sharp" duvida com PIC18f4550


SOMA190

Posts recomendados

estou iniciando meus estudos em C# e agora gostaria de começar a orientar meus programas para meus controladores PIC. porém estou meio perdido de como eu faço esse link gostaria de saber se isso é uma DLL. que ja vem pronta para usar ou terei que fazer um programa tipo um terminal do windows para inicializar receber e enviar dados. :confused:

Link para o comentário
Compartilhar em outros sites

Valeu pessoal, achei aqui o nome dela é System.IO.Ports.

achei que ia estar assim System.Serial.Ports. kkkkkkkkkk mais valeu pessoal.

Qual o compilador que você utilza para realizar seus projetos em PIC?

Eu uso o MikroC para compilar o do pic e VisualStudio 2010 para fazer os projetinhos em C#.

Ainda Não me aventurei pela porta USB, porém ja estou estudando sobre o assunto.

Vou tentar fazer algo bem básico "não sei c é básico ou não, teoricamente para mim é" que é escrever uma letra pelo C# e apresentar em um display no meu kit didatico.

Caso resultado seja positivo postarei para iluminar pessoas que estejam com a mesma dificuldade fuiz.. e tks pelos helps.

Link para o comentário
Compartilhar em outros sites

Bom, o VTRX tem razão. Eu prefiro trabalhar com a USB.

Fiz um exemplo aqui básico. Ele acende dois leds no circuito atraves do C#.

O PIC irá emular uma COM.

Fiz no CCS, mas você pode pegar a ideia do código e migrar para o MikroC.

O exemplo que fiz é bem simples.

Circuito:

circuito.jpg

Código PIC:


#device adc = 8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#include <usb_cdc.h>

#define LED_RED PIN_B6
#define LED_GREEN PIN_B7

int8 n;

char buffer [9];

void main()
{
output_b(0x00);
usb_cdc_init(); // Inicia protocolo cdc
usb_init(); // Inicia USB

for(;;)
{
usb_task(); // Testa comunicaçao usb
if (usb_enumerated())
{

if (usb_cdc_kbhit())
{
buffer[0] = usb_cdc_getc();
}

if (usb_cdc_kbhit())
{
buffer[1] = usb_cdc_getc();
}

if (usb_cdc_kbhit())
{
buffer[2] = usb_cdc_getc();
}

if (buffer [0] == 1)
{
if (buffer [1] == 2)
{
output_toggle (LED_RED);
}

if (buffer [2] == 3)
{
output_toggle (LED_GREEN);
}
}

for (n=0;n<9;n++)
{
buffer[n]=0;
}

if (usb_enumerated())
{
printf(usb_cdc_putc,"PIC Conectado!");
delay_ms (500);
}
}
}
}
#include <18F2550.h>

Código C#:


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);
}
}
}
using System;

Arquivos para download:

Conexao_CDC_exemplo_c

Falou

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!