roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 15:47

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 15:53 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
какой драйвер?
никакой это не драйвер, а программа для работы с компортом.

зайди на любой сайт или форум по программированию pda и скачай там что тебе надо
исходников кругом море
потом под себя подправь как надо или сам напиши по образцу

компорт для винмобайла программируется элементарно
есть даже пошаговые мануалы как програмить прогу передающую данные в компорт

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 18:17 
Не в сети

Зарегистрирован: 09 янв 2009, 13:02
Сообщения: 41
прог. языки: C/C++/Assembler/С#
Цитата:
какой драйвер?

я еще в терминологии не совсем не разбираюсь, так что прошу не пинать....Спасибо за ответ!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 19:05 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
кстатит драйвер тебе всётаки понадобится
для шнурка которым ты будешь соединять КПК и плату управления приводами
ну типа как драйвера для шнурка мобильника на комп ставишь такой же принцип и тут будет

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 19:11 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
встроен в winmobile

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 19:17 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
под FT232?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 19:22 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
короч я ступил.
прст в факе по моему кпк на 4пда было упоминание про ком-порт - кабель. оказалось что он использует не юсб-хось и виртуальный компорт, а встроенный в асер хардварный

Добавлено спустя 1 минуту 33 секунды:
дрова для ft232 можно скачать здесь

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 23:31 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
кстате обычно в любом нармальном кпк есть хардварный компорт под именем com1

просто обычно нет шнурков родных распаяных под него...

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 23:43 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Можно открыть доку на мамку и посмотреть распиновку com-порта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 14 янв 2009, 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
на пинаутс есть

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 17 янв 2009, 12:47 
Не в сети

Зарегистрирован: 09 янв 2009, 13:02
Сообщения: 41
прог. языки: C/C++/Assembler/С#
вот что нашел в гугле на тему управления этой платы с кпк:
Код:
[spoiler]
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Collections;
using System.ComponentModel;
using System.IO.Ports;
using System.IO;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DeviceApplication4
{
    public partial class Form1 : Form
    {   
        //import the coredll.dll with the functions QueryPerformanceCounter
        //and QueryPerformanceFrequency
        [DllImport("coredll.dll")]
        extern static int QueryPerformanceCounter(ref long perfCounter);
        [DllImport("coredll.dll")]
        extern static int QueryPerformanceFrequency(ref long frequency);

        //initialize the parameters for the QueryPerformanceCounter
        long ctrStart = 0, ctrAkt = 0, ctrEnd = 0;
       
        //initialize the parameters for the SerialPort object
        public static String portName = "COM2";
        static int baudRate = 115200;
        public static Parity parity = Parity.None;
        static int dataBits = 7;
        public static StopBits stopBits = StopBits.One;
        SerialPort IR_COM = new SerialPort(portName, baudRate, parity, dataBits, stopBits);

        //initialize the char-array and variables for the function ManchesterCode and RohCodeToManchester
        char[] rohData = new char[14] { '1','1','0','0','0','0','0','0','0','0','0','1','0','0' }; 
        public char[] manchesterData = new char[29];
        int index = 0, md = 0;
       
        //initialize the byte-array for the function BurstOut
        byte[] bufferBurst = new byte[22] { 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B };
       
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetName();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //set the ToggleBit
            ToggleBit();

            //manchester coding
            RohCodeToManchester();

            //open the port and send data
            try
            {
                if (IR_COM.IsOpen == false)
                {
                    IR_COM.Open();
                }

                //message   
                statusBar2.Text = "port status: open";
                   
                //send data
                BurstOut(); 

                //reset the indices
                md = 0;
                index = 0;

                //message
                statusBar1.Text = "status: data has been sent";

                //close the port
                IR_COM.Close();
            }
            catch (ArgumentOutOfRangeException)
            {
                label1.Text = "Der ьbergebene Parity-Wert oder Stopbit-Wert ist kein gьltiger Wert in der Enumeration.";
            }
            catch (NullReferenceException nre)
            {
                label1.Text = nre.ToString();
            }
            catch (ArgumentNullException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist NULL (Nothing in Visual Basic).";
            }
            catch (ArgumentException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist eine leere Zeichenfolge!";
            }
            catch (IOException)   
            {
                label1.Text = "Der Port kann nicht geцffnet werden!";
            }
        }

        public void GetName()
        {
            StringBuilder s = new StringBuilder();
            String s1;

            //get a list of port names
            string[] ports = SerialPort.GetPortNames();

            //display port names
            foreach (string port in ports)
            {
                s.Append(port+" ");
            }

            s1 = s.ToString();
            label1.Text = "Port Names: "+s1;
        }

        public void ManchesterCode(char c)
        {   
             if (c == '1')
             {  // 1 -> 10
                 manchesterData[index] = '1';
                 manchesterData[++index] = '0';
             }
             if (c == '0')
             {  // 0 -> 01
                 manchesterData[index] = '0';
                 manchesterData[++index] = '1';
             }
             index++;   
        }

        public void RohCodeToManchester()
        {   
            for (int i=0; i < rohData.Length; i++)
            {   //the array rohData is passed to the function ManchesterCode
                ManchesterCode(rohData[i]);
            }

            //mark the end
            manchesterData[28] = 'e';
        }

        public void ToggleBit()
        {
            if (rohData[2] == '1') rohData[2] = '0';
            else { rohData[2] = '1'; }
        }

        public void QPC(long data)
        {   //start the counter
            QueryPerformanceCounter(ref ctrStart);
           
            //specified the end time
            ctrEnd = ctrStart + data;

            while (ctrAkt < ctrEnd)
            {   //wait until the counter reaches the end time
                QueryPerformanceCounter(ref ctrAkt);
            }
        }

        public void BurstOut()
        {
            while (manchesterData[md] != 'e')
            {   
                //pause of 889µs
                if (manchesterData[md] == '1' && manchesterData[md + 1] == '0')
                {
                    QPC(319);
                }

                //pause of 1,778ms
                if (manchesterData[md] == '1' && manchesterData[md + 1] == '1')
                {
                    QPC(766);
                    md++;
                }

                //burst of 889µs
                if (manchesterData[md] == '0' && manchesterData[md + 1] == '1')
                {
                    IR_COM.Write(bufferBurst, 0, 10);
                }

                //pause of 1,778ms
                if (manchesterData[md] == '0' && manchesterData[md + 1] == '0')
                {
                    IR_COM.Write(bufferBurst, 0, 22);
                    md++;
                }

                //the end
                if (manchesterData[md] == '0' && manchesterData[md + 1] == 'e')
                {
                    IR_COM.Write(bufferBurst, 0, 10);
                }

                md++;
            }
        }     
    }
}[/spoiler]

взял с http://www.codeproject.com/KB/miscctrl/UniversalRemoteControlPDA.aspx?fid=416965&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2038708
правда вопрос остается открытым: что в ней нужно изменить чтобы сей код на C# управлял этой платой?
спасибо за ответы!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 17 янв 2009, 20:01 
Не в сети

Зарегистрирован: 09 янв 2009, 13:02
Сообщения: 41
прог. языки: C/C++/Assembler/С#
Мой проект предназначен для НЕ танковой платформы,т.е. поворот осуществляется с помощью поворотного двигателя.
Вот первые программные наработки :интерфейс + реализация событий (т.е. написаны обработчики нажатий клавиш).

Осталось написать самые "вкусные вещи", а именно ф-ции:
-
Код:
private void controllOfFrontEngine(bool active,int rotation)

-
Код:
private void controllOfBackEngine(double speed, bool active, int rotation)

Они непосредственно будут работать с USB-интерфейсом КПК (т.е. отсылать "сигналы" на USB)

Вот проект ,созданный в MS Visual Studio 2008:http://rapidshare.com/files/184935980/PDA_and_robot1.rar.html.
Компилироваться все будет под платформу Windows Mobile 5.0
Язык -C#


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 17 янв 2009, 20:28 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
я канеш не спец в с# (если честно, то я его вообще не знаю :D ), но если прочитать имена функций, то видно, что это исходник для общения через IR - порт :) , что совершенно не нужно вам.
попробую написать исходничек (основан на чистой интуиции, если не запускается я не виноват :) )
Код:
[spoiler]
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Collections;
using System.ComponentModel;
using System.IO.Ports;
using System.IO;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DeviceApplication4
{
    public partial class Form1 : Form
    {       
        //initialize the parameters for the SerialPort object
        public static String portName = "COM1";  //хардварный порт - ком1, для юсб надо менять
        static int baudRate = 115200;
        public static Parity parity = Parity.None;  //конфигу порта см. в описании устройства
        static int dataBits = 7;                   //которое будете подключать
        public static StopBits stopBits = StopBits.One;
        SerialPort My_COM = new SerialPort(portName, baudRate, parity, dataBits, stopBits);//поменял имя

     
       
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetName();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            //open the port and send data
            try
            {
                if (My_COM.IsOpen == false)
                {
                    My_COM.Open();
                }

                //message   
                statusBar2.Text = "port status: open";
                   
                //send data
//здесь посылаем данные
//смотрите описание функции Write
//чтобы было понятно как записывать
//вам надо научится записывать строку
                My_COM.Write();

                //reset the indices
                md = 0;
                index = 0;

                //message
                statusBar1.Text = "status: data has been sent";

                //close the port
                My_COM.Close();
            }
//ловим ошибки
            catch (ArgumentOutOfRangeException)
            {
                label1.Text = "Der ьbergebene Parity-Wert oder Stopbit-Wert ist kein gьltiger Wert in der Enumeration.";
            }
            catch (NullReferenceException nre)
            {
                label1.Text = nre.ToString();
            }
            catch (ArgumentNullException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist NULL (Nothing in Visual Basic).";
            }
            catch (ArgumentException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist eine leere Zeichenfolge!";
            }
            catch (IOException)   
            {
                label1.Text = "Der Port kann nicht geцffnet werden!";
            }
        }
//получаем имена доступных портов
        public void GetName()
        {
            StringBuilder s = new StringBuilder();
            String s1;

            //get a list of port names
            string[] ports = SerialPort.GetPortNames();

            //display port names
            foreach (string port in ports)
            {
                s.Append(port+" ");
            }

            s1 = s.ToString();
            label1.Text = "Port Names: "+s1;
        }     
    }
}[/spoiler]

п.с. а эти самые ф-ии управления колесами делают только одну вещь - посылают в порт определенную строку. на контроллере вы уже будете это дело обрабатывать

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 17 янв 2009, 22:03 
Не в сети

Зарегистрирован: 09 янв 2009, 13:02
Сообщения: 41
прог. языки: C/C++/Assembler/С#
т.е правильно ли я понимаю ,нужно написать следующее для ф-ций управления двигателями
Код:
private void controllOfFrontEngine(bool active,int rotation)
{
       //initialize the parameters for the SerialPort object
        public static String portName = "COM1";  //хардварный порт - ком1, для юсб надо менять
        static int baudRate = 115200;
        public static Parity parity = Parity.None;  //конфигу порта см. в описании устройства
        static int dataBits = 7;                   //которое будете подключать
        public static StopBits stopBits = StopBits.One;
        SerialPort My_COM = new SerialPort(portName, baudRate, parity, dataBits, stopBits);//поменял имя

        try
            {
                if (My_COM.IsOpen == false)
                {
                    My_COM.Open();
                }

                //message   
                statusBar2.Text = "port status: open";
                   
                //send data
//здесь посылаем данные
//смотрите описание функции Write
//чтобы было понятно как записывать
//вам надо научится записывать строку
                My_COM.Write();

                //reset the indices
                md = 0;
                index = 0;

                //message
                statusBar1.Text = "status: data has been sent";

                //close the port
                My_COM.Close();
            }
//ловим ошибки
            catch (ArgumentOutOfRangeException)
            {
                label1.Text = "Der ьbergebene Parity-Wert oder Stopbit-Wert ist kein gьltiger Wert in der Enumeration.";
            }
            catch (NullReferenceException nre)
            {
                label1.Text = nre.ToString();
            }
            catch (ArgumentNullException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist NULL (Nothing in Visual Basic).";
            }
            catch (ArgumentException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist eine leere Zeichenfolge!";
            }
            catch (IOException)   
            {
                label1.Text = "Der Port kann nicht geцffnet werden!";
            }
        }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 17 янв 2009, 22:38 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
ненене :)
ещё раз: все что вам нужно сделать - это отправить строку(байт, массив и т.д, зависит от кода на платформе, управляющей движками) в порт.
Код:
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Collections;
using System.ComponentModel;
using System.IO.Ports;
using System.IO;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DeviceApplication4
{
    public partial class Form1 : Form
    {       
        //initialize the parameters for the SerialPort object
        public static String portName = "COM1";  //хардварный порт - ком1, для юсб надо менять
        static int baudRate = 115200;
        public static Parity parity = Parity.None;  //конфигу порта см. в описании устройства
        static int dataBits = 7;                   //которое будете подключать
        public static StopBits stopBits = StopBits.One;
        SerialPort My_COM = new SerialPort(portName, baudRate, parity, dataBits, stopBits);//поменял имя

     
       
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetName();
        }
//нажали на кнопку
        private void button1_Click(object sender, EventArgs e)
        {

            //открываю порт
            try
            {
                if (My_COM.IsOpen == false)
                {
                    My_COM.Open();
                }

                //оповещаю пользователя   
                statusBar2.Text = "port status: open";
                   
                //выполняю команду
//допустим при нажатии на эту кнопку я запускаю задний движок
                controllOfBackEngine(10,true,10);

                //reset the indices
                md = 0;
                index = 0;

                //message
                statusBar1.Text = "status: data has been sent";

                //close the port
                My_COM.Close();
            }
//ловим ошибки
            catch (ArgumentOutOfRangeException)
            {
                label1.Text = "Der ьbergebene Parity-Wert oder Stopbit-Wert ist kein gьltiger Wert in der Enumeration.";
            }
            catch (NullReferenceException nre)
            {
                label1.Text = nre.ToString();
            }
            catch (ArgumentNullException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist NULL (Nothing in Visual Basic).";
            }
            catch (ArgumentException)
            {
                label1.Text = "Der ьbergebene IsOpen-Wert ist eine leere Zeichenfolge!";
            }
            catch (IOException)   
            {
                label1.Text = "Der Port kann nicht geцffnet werden!";
            }
        }
//получаем имена доступных портов
        public void GetName()
        {
            StringBuilder s = new StringBuilder();
            String s1;

            //get a list of port names
            string[] ports = SerialPort.GetPortNames();

            //display port names
            foreach (string port in ports)
            {
                s.Append(port+" ");
            }

            s1 = s.ToString();
            label1.Text = "Port Names: "+s1;
        }
//вот функции управления движками
        private void controllOfBackEngine(double speed, bool active, int rotation)
        {//делаем одну простую вещь - отправляем команду
            My_COM.Write(здесь ваша команда, подробнее об использовании ф-ии см. справку);
        }
        private void controllOfBackEngine(double speed, bool active, int rotation)
        {//делаем одну простую вещь - отправляем команду
            My_COM.Write(здесь ваша команда, подробнее об использовании ф-ии см. справку);
        }     
    }
}

вот как-то так :)

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Плата с USB входом
СообщениеДобавлено: 21 фев 2009, 01:41 
Не в сети
Аватара пользователя

Зарегистрирован: 04 фев 2008, 13:18
Сообщения: 1060
Откуда: Москва
прог. языки: PHP
Господа, вот такая проблема у меня возникла с FT232RL.
Есть 2 устройства с FT232RL и я хочу их подключить одновременно.
Подключаю и появляется 2 COM порта.
Через терминальную программу пытаюсь общаться, но работает только с одним портом, а второй не работает.

Встречался ли кто с такой проблемой и как можно работать сразу с несколькими виртуальными портами на FT232RL ?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO