bonjours tous le monde.
je tiens a remercier les membre programmeurs du site pour leurs efforts.
cette solution est une transformation d'une sources écrite en VB en C#.
puisque j'en avais besoin pour mon projet alors je 'ai récrie la sources en C#.net.
dans le zip il y a:
- la solution en c#.
- le dll (port.dll)
-le shéma de montage.
merci .
n'hésitez pas a donner des commentaire ,est pourquoi pas des suggestions.
Source / Exemple :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace telcencCsharp
{
public partial class Form1 : Form
{
public int Controle;
public int ADDR;
public int DAAT;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
int i=pt.OPENCOM("COM1,1200,N,8,1"); // ouvrir le com1
if(i != 0 ) // si ouverture avec sucée
{
pt.TXD (1) ;
pt.RTS (1) ;
pt.DTR (1) ;
}
else
{ //sinon ouverture du com2
i = pt.OPENCOM("COM2,1200,N,8,1");
Option2.Checked = true;
if(i != 0)
{
pt.TXD (1);
pt.RTS (1);
pt.DTR (1);
}
else
MessageBox.Show ("COM1&2 Interface Erreur");
}
timer1.Enabled = true; // activer le timer
}
private void Option1_Click(object sender, EventArgs e)
{
pt.CLOSECOM() ; // fermer le port ccom 1 ouvert
int i = pt.OPENCOM("COM1,1200,N,8,1") ; //ouvrir com1
if( i!=0)
{
pt.TXD (1) ;
pt.RTS (1) ;
pt.DTR (1) ;
}
else
MessageBox.Show ("COM1 Déja utilisé !!");
}
private void timer1_Tick(object sender, EventArgs e)
{
RecvRC5( ); //Attendre code RC5 ou dérivé
// afficher les données lui depuis le port
Console.WriteLine("Code = " + Controle.ToString());
if (Controle != 99)
{
//Si pas d'erreurs Afficher et traiter
Text1.Text = "Ctr = " + Controle.ToString() + " " + "Adr = " + ADDR.ToString() + " " + "DAT = " + DAAT.ToString();
MessageBox.Show(DAAT.ToString());
if (DAAT == 3) //si touche 3
MessageBox.Show("hello 3");
if (DAAT == 5)//si touche 5
MessageBox.Show("hello 5");
//Fermer l'application depuis la touche (Marche/arret) de votre télécommande
if (DAAT == 12)
Close();
// vous pouvez ajouter des évènements si possible
}
}
private void Option2_Click(object sender, EventArgs e)
{
pt.CLOSECOM (); //fermer le com 2
// ouvrir le com 2
int i = pt.OPENCOM("COM2,1200,N,8,1");
if (i != 0)
{
//si pas d'erreur
pt.TXD(1);
pt.RTS (1);
pt.DTR (1);
}
else
MessageBox.Show("COM2 Déja utilisé !!");
}
public void RecvRC5()
{
pt.TIMEINIT(); //Init Timer interne
//Attendre un niveau bas,pendant 400ms
while(pt.TIMEREAD() < 400 && pt.RI() == 1) ;
//'Traitement des bits de startRC5
pt.DELAYUS(296); //capture bit a bit
pt.DELAYUS(888); //bit de start
pt.DELAYUS(888); //bit de start
pt.DELAYUS(888);//bit de start
Controle = RecvBit();//Recept du bit de "CONTROLE RC5"
ADDR = 0;
//Recept du bloc de 6 bit de "ADRESSE RC5"
for (int b = 1; b <= 5; b++)
{
pt.DELAYUS(888);//traitement de chaque bit
ADDR = ADDR * 2;//retrouver valeur "ADDR"
ADDR = ADDR + RecvBit();
}
DAAT = 0;
//Recept du bloc de 6 bit de "DONNEES RC5"
for ( int c = 1; c<=6 ;c++)
{
pt.DELAYUS(888); //traitement de chaque bit
DAAT = DAAT * 2; // retrouver valeur "ADDR"
DAAT = DAAT + RecvBit();
}
}
public int RecvBit()
{
int ret = 0;
pt.TIMEINITUS(); //Init Timer interne
if (pt.RI() ==0)
{ // Lecture d'un bit sur RI avec controle erreur
pt.DELAYUS (888);
if (pt.RI() == 0)//Si Erreur Marquer Control
Controle = 99;
ret= 0;
}
else
{
pt.DELAYUS (888);
if (pt.RI() == 1) //Si RI =1
Controle = 99;
ret= 1;
}
return ret;
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;//activer le timer
timer1.Start();
}
}
}
Conclusion :
merci. j'attends vos commentaires .
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.