Marcio Paulo .NET
Um espaço onde irei compartilhar minhas experiências do dia-a-dia para auxiliar na divulgação das tecnologias Microsoft .NET
quinta-feira, 9 de maio de 2013
Estarei no TDC 2013 em Florianópolis!
quarta-feira, 24 de abril de 2013
Netduino - Sensor de Estacionamento
Como estou sempre buscando algo novo para fazer, esta semana resolvi usar meu sensor ultrassônico HC-SR04 para uma experiência com o Netduino: um sensor de proximidade que emite um bip repetidamente; quanto mais próximo o objeto estiver do sensor, mais rápido o bip toca.
Isso fez o aparelho ter basicamente a mesma característica de um sensor de estacionamento desses que equipam os carros mais modernos, ou que são vendidos em lojas de acessórios para carros.
O objetivo, porém, não é instalar o dispositivo no meu carro: é simplesmente mostrar a utilização do sensor no Netduino e exemplificar como o mesmo lida com tarefas em MultiThread, já que a leitura do sensor é feita pela thread principal, e o bip é controlado por uma thread paralela.
O código fonte do projeto para o Netduino é o seguinte:
Program.cs
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
// Escrito por Marcio Paulo Mello Martins para testar o sensor HC-SR04
namespace SensorAproximacao
{
public class Program
{
private static int ticks;
private static InterruptPort echoPin = new InterruptPort(Pins.GPIO_PIN_D12, true, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeBoth);
private static OutputPort triggerPin = new OutputPort(Pins.GPIO_PIN_D13, false);
private static Beep beep = new Beep() { BeepInterval = 3000 };
public static void Main()
{
echoPin.OnInterrupt += new NativeEventHandler(Port_OnInterrupt);
echoPin.DisableInterrupt();
Thread t = new Thread(new ThreadStart(BeepThread));
t.Start();
while (true)
{
Distance();
Thread.Sleep(250);
}
}
public static void Distance()
{
echoPin.EnableInterrupt();
triggerPin.Write(false);
Thread.Sleep(2);
triggerPin.Write(true);
Thread.Sleep(10);
triggerPin.Write(false);
Thread.Sleep(2);
}
private static void Port_OnInterrupt(uint port, uint state, DateTime time)
{
if (state == 0) // falling edge, end of pulse
{
int pulseWidth = (int)time.Ticks - ticks;
int distance = (pulseWidth * 10 / (int)578.29);
Debug.Print("Distancia = " + distance.ToString() + " milimetros");
lock (beep)
{
beep.BeepInterval = distance;
}
}
else
{
ticks = (int)time.Ticks;
}
echoPin.ClearInterrupt();
}
private static void BeepThread()
{
bool play = false;
int localInterval;
while (true)
{
lock(beep)
{
play = beep.BeepInterval <= 1000;
localInterval = beep.BeepInterval;
}
if (play)
{
beep.Play();
Thread.Sleep(localInterval);
}
}
}
}
}
Beep.cs
using System;
using Microsoft.SPOT;
using SecretLabs.NETMF.Hardware;
using System.Threading;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
namespace SensorAproximacao
{
internal class Beep
{
internal int BeepInterval { get; set; }
internal PWM speaker = new PWM(Pins.GPIO_PIN_D9);
internal void Play()
{
speaker.SetDutyCycle(100);
Thread.Sleep(100);
speaker.SetDutyCycle(0);
}
}
}
O link para o vídeo no YouTube também está aqui:
Sensor de Estacionamento com Netduino
Espero que gostem! Até a próxima!
quarta-feira, 6 de fevereiro de 2013
Como deletar um Team Project no Team Foundation Service Preview
Boas !!
A turma da Microsoft resolveu inovar e liberou o acesso à sua ferramenta Cloud do Team Foundation Service: o TFS Preview. Nele, podemos utilizar até 5 usuários de forma gratuita, e criar projetos do TFS gratuitamente também. Estou usando este serviço integrado ao Visual Studio 2012... e é demais! Recomendadíssimo!! O link para o TFS Preview é tfspreview.visualstudio.com.
Acontece que o ser humano é uma coisa maravilhosa: não pode ver um negócio grátis que já sai fazendo aquela bagunça! Lá sai o cidadão criando projeto pra cima e pra baixo... e pensa: "Depois eu apago!". Aí ele vai tentar apagar e, depois de muito procurar, descobre que não existe um botão Delete para os Team Projects.
Então, como se apaga um Team Project?
Felizmente, a galera do Visual Studio disponibilizou uma ferramenta chamada TFSDeleteProject para deletar um projeto indesejado no TFS. Esta ferramenta fica disponível através do Prompt de Comando do Visual Studio 2012, e sua sintaxe é a seguinte:
TFSDeleteProject /force /collection:https://[endereço do TFSPreview]/[coleção do projeto] [nome do projeto]
ABRAÇO!!
quinta-feira, 30 de agosto de 2012
terça-feira, 15 de maio de 2012
quarta-feira, 15 de fevereiro de 2012
Meu novo artigo sobre Expressões Regulares
Publiquei mais um artigo no site Linha de Código!
Segue o link:
Resolvendo problemas de identificação de textos com Expressões Regulares em C#
Deixem seus comentários e sugestões!
Abrass!!


