Ana içeriğe git

Haberler

Konu: PC ile PIC Kontrolü (C# ve CCS C) (2913 Kez okunmuş) önceki konu - sonraki konu

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.
  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #20
ccs c de motorların yönlerini belirledim butonlara basark onları çagırmayı denemiştim
  peki ccs c den kod çağorirken ne yapmalıyım

Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #21
ccs c de motorların yönlerini belirledim butonlara basark onları çagırmayı denemiştim
  peki ccs c den kod çağorirken ne yapmalıyım
Neyi demek istediğinizi anlamadım.
Lütfen sorununu düzgün ve anlaşılır bir biçimde anlatın.
Böylece daha hızlı yanıt alırsınız.

  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #22
Arayüz uzerinden Motor kontrolü yapmak için  etkisiz hale getirdiğiniz kod yerine ne Yazmalıym diye soruyorum

Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #23
Öncelikle kendinize bir kontrol paket oluşturun.
Eğer motoru sadece sağa, sola ve durma şeklinde kontrol edecekseniz işiniz kolay. Yani işin içinde hız yoksa.
Mesela durdurmak için '0' sağ için '+' ve sol için ise '-' karakterlerini yollayıp bunu mcu ile alın ve motoru kontrol edin.
Bunun için yapmanız gereken şey sadece 3 adet buton ekleyip bu karakterleri yollamak.

  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #24
 hız kontrollü yok  paketti ccs c olusturup çağıracam doğru mu anladım ama mcu ne olduğumu bilmiyorum

Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #25
Hız kontrolü yoksa 3 farklı karakter göndermen yeterli o halde.
MCU ile bunu algılayıp motoru kontrol edersin.

  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #26

Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #27
Hatanız fonksiyon eksik parametre vermenizden kaynaklanıyor.
Ben sadece yön parametresi vereceğiniz şekilde düzenledim.
Sağa dönmek için A karakteri, sola dönmek içinse B karakteri yollanıyor.
PIC ile bunları algılayıp gerekli işlemleri yapabilirsiniz.
Kod: [Seç]
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.Globalization;
using System.Windows.Forms;
using USBManagement;

namespace sondurum_4
{
    public partial class Form1 : Form
    {
        UsbHidDevice my_hid = new UsbHidDevice();
        short VendorID = short.Parse("1111", NumberStyles.HexNumber);
        short ProductID = short.Parse("1111", NumberStyles.HexNumber);

        byte[] my_buffer = new byte[64];
        byte[] gelen_buffer = new byte[64];

        public Form1()
        {
            InitializeComponent();
            my_hid.DeviceStateChanged += new DeviceStateChangeEventHandler(OnChangeDeviceState);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!my_hid.IsOpen)
            {

                if (my_hid.OpenPipe(VendorID, ProductID))
                {
                    txt_pre_durum.Text = "Bağlantı Kuruldu";

                    //my_hid.DeviceArrived += new HidDeviceArrivedEventHandler(OnDeviceAttached);
                    //my_hid.DeviceRemoved += new HidDeviceRemovedEventHandler(OnDeviceDetached);
                }
                else
                {
                   Label1.Text = "Cihaz bulunamadi...!";
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (my_hid.IsOpen)
            {
                my_hid.ClosePipe();
                txt_pre_durum.Text = "Bağlantı Kesildi";
            }
        }
        //Cihazin Durumunda Degisiklikler oldugunda Devreye giren Method
        private void OnChangeDeviceState(object sender, DeviceStateChangeEventArgs e)
        {
            if (e.CurrentState == DeviceState.Opened)
            {
                Label1.Text = "Cihaz Durumu : Baglanti kuruldu !";
                //Debug.WriteLine("Device State Changed!! Curren State : Opened");
            }
            else if (e.CurrentState == DeviceState.Closed)
            {
                Label1.Text = "Cihaz Durumu : Baglanti kesildi !";
                //Debug.WriteLine("Device State Changed!! Curren State : Closed");
            }
            else if (e.CurrentState == DeviceState.Waiting)
            {
                Label1.Text = "Cihaz Durumu : Baglanti saglaniyor...";
                //Debug.WriteLine("Device State Changed!! Curren State : Waiting");
            }
            else if (e.CurrentState == DeviceState.Ready)
            {
                Label1.Text = "Cihaz Durumu : Okuma yapiliyor !";
                //Debug.WriteLine("Device State Changed!! Curren State : Ready");
            }
            else
            {
                Label1.Text = "Device State Changed!! Curren State : None";
                //Debug.WriteLine("Device State Changed!! Curren State : None");
            }
        }


        private void OnDeviceAttached(object sender, EventArgs e)
        {
            bool Success;

            Label1.Text = "Atached Device";
            Success = my_hid.OpenPipe(VendorID, ProductID);

            if (Success)
            {
                Label1.Text = "Bağlantı kuruldu";
            }
        }

        private void OnDeviceDetached(object sender, EventArgs e)
        {
            Label1.Text = "Detached Device";
            if (my_hid.IsOpen) my_hid.ClosePipe();

            Label1.Text = "Cihaz ile bağlantı kesildi";
            this.Text = "Cihaz bekleniyor..";
        }

        public void motorControl(char motorno)
        {
            if (my_hid.IsOpen)
            {
                my_buffer[0] = (byte)motorno;

                if (my_hid.IsWindowsXpOrLater)
                    my_hid.WritePipe(my_buffer, TransactionType.Interrupt);
            }
            else
            {
               Label1.Text = "Cihaz ile bağlantı yok!";
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            motorControl('A'); // sağa dön
        }

        private void button4_Click(object sender, EventArgs e)
        {
            motorControl('B'); // sola dön
        }
    }
}



  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #28
 çok teşekkür ederim çok sağolun

  • Şeriban
  • [*]
Ynt: PC ile PIC Kontrolü (C# ve CCS C)
Yanıt #29
 dediğiniz gibi derleyiciyi yeniden yükledim ama bu seferde undefined identifer usb_cdc_init hatası alıyorum sanırım bazı foksiyonlar tanımlı degil ama hangileri oldugunu bulamıyorum