Управление роботом через bluetooth

В разделе рассматриваются вопросы информационного обмена в робототехнике.
Аппаратный уровень, протоколы.

Управление роботом через bluetooth

Сообщение @vlad@ » 29 май 2010, 11:51

Здравствуйте. Хочу написать программу для кпк с использованием bluetooth. Может у кого нибудь есть исходники или сами помогут?Буду благодарен любой помощи
Спасибо
Последний раз редактировалось @vlad@ 01 июн 2010, 20:38, всего редактировалось 1 раз.
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Помогите программа с bluetooth для кпк

Сообщение =DeaD= » 29 май 2010, 12:04

Вы для начала укажите операционку вашего КПК и среду разработки в которой работать умеете.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Помогите программа с bluetooth для кпк

Сообщение @vlad@ » 29 май 2010, 14:03

Кпк asus p535 WM6. Работаю в Visual studio 2008 C#
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Помогите программа с bluetooth для кпк

Сообщение @vlad@ » 01 июн 2010, 20:37

И так написал прогу, получается что действую через виртуальный ком порт.Вот программа:
private void config()
{
port.PortName = "COM7";
port.WriteTimeout = 500;
port.ReadTimeout = 500;
port.BaudRate = 115200;
port.Open();
}
private void forward()
{
port.WriteLine("0x01");
}
private void Form1_Load(object sender, EventArgs e)
{
config();
}

Но не работает((Виртуальный кпк гооворит что порт закрыт. В риальном вот что выдает:
в
System.IO.Ports.SerialPort.ThrowIfClose
d()
в
System.IO.Ports.SerialPort.Write(String text)
в
System.IO.Ports.SerialPort.WriteLine(string text)
в robot.Form1.pitureBox1_click(object sender, EventArgs e)
в
System.Windows.Forms.Control.WnProc(WM wm, Int32 lParam)
в
System.Windows.Forms.Control._Intern alWmProc(WM wm, Int32 wParam, Int32 lParam)
в
Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
в
System.Windows.Forms.Application.Run(Form fm)
в robot.Program.Main()
Все com порты перебрал...В чем может быть причина?
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Управление роботом через bluetooth

Сообщение =DeaD= » 01 июн 2010, 20:43

А на КПК нет утилиты по обзору СОМ-портов? Чтобы глянуть где что? Модуль вообще подружить не забыли с КПК?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом через bluetooth

Сообщение Angel71 » 02 июн 2010, 03:18

System.IO.Ports.SerialPort.GetPortNames() возвращает string[] со всеми портами в системе.
:) если он хоть какие-то порты вернул, значит деле в настройках (BaudRate, DataBits, StopBits,...)
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Управление роботом через bluetooth

Сообщение @vlad@ » 02 июн 2010, 15:12

В моей программе есть небольшая утила по обзору com портов. Попробовал все-ничего...Блютуз включал, но нисчем не соеденял. ЧТо делать дальше-вообще не знаю

Добавлено спустя 3 минуты 14 секунд:
Angel71 да имеется такая сточка какк string[] ports = System.IO.Ports.SerialPort.GetPortNames(); Возратила несколько портов, пробовал все-прога всеравно вылетает при попытке передать число.
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Управление роботом через bluetooth

Сообщение =DeaD= » 02 июн 2010, 15:13

Так ничего и не должно работать. Сначала с КПК найдите в окружении этот модуль, законнектитесь с ним, введите пин код, как только два устройства подружатся - у вас должен появится СОМ-порт новый, "Исходящее соединение", если как на винде будет. Вот через него и работайте. А поиск новых устройств и пин-коды через службу СОМ-порта конечно никогда не будут работать :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом через bluetooth

Сообщение @vlad@ » 02 июн 2010, 15:22

Angel71 все настройки имеются-хотя не факт что правильные.
port.PortName = "COM7";
port.WriteTimeout = 500;
port.ReadTimeout = 500;
port.BaudRate = 115200;
port.Open();

=DeaD= спасибо, щас проверим...

Добавлено спустя 2 минуты 35 секунд:
Правдо блютуза еще нету(модуля) щас попробую с другим кпк соедениться. Но потом конечно куплю=)

Добавлено спустя 4 минуты 1 секунду:
Неа, новый com порт при сопряжении 2 кпк не появился...Щас попробую через старые работать. 1,7,6,4,2,9
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Управление роботом через bluetooth

Сообщение =DeaD= » 02 июн 2010, 15:24

Тяжело без модуля искать ком-порт на котором этот модуль зацеплен :crazy:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом через bluetooth

Сообщение @vlad@ » 02 июн 2010, 15:36

ну я имею ввиду блютуза для кпк нет
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Управление роботом через bluetooth

Сообщение Angel71 » 02 июн 2010, 16:16

:) ну... про все эт вы сильно горячитесь. из основных ещё есть DataBits, StopBits, Parity, Handshake. есть и другие параметры, но на них споткнуться при попытке открыть порт кажись нереально.
второй нюанс, а вы случаем не забыли в кэтчь закинуть:
InvalidOperationException
ArgumentOutOfRangeException
ArgumentException
IOException
UnauthorizedAccessException
тогда и к гадалке ходить не прийдётся, сразу будет понятно чего не соединяет, да и прога отучится вылетать
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Управление роботом через bluetooth

Сообщение @vlad@ » 03 июн 2010, 00:58

Спасибо уезжал на весь день-с портами пока что не успел попробовать. За ваш кусочек кода тоже спасибо, не пробовал=)ЗАвтро все постараюсь проверить
@vlad@
 
Сообщения: 14
Зарегистрирован: 18 апр 2010, 11:04

Re: Управление роботом через bluetooth

Сообщение Angel71 » 03 июн 2010, 01:19

:) ну код выглядел бы примерно так, а то был список эксэпшинов из msdn`а
Код: Выделить всё
try
{
    if (!port.IsOpen && "" != port.PortName) port.Open();
}
catch (InvalidOperationException)
{
    //The specified port is open.
}
catch (ArgumentOutOfRangeException)
{
    //One or more of the properties for this instance are invalid.
    //For example, the Parity, DataBits, or Handshake properties are not valid values;
    //the BaudRate is less than or equal to zero;
    //the ReadTimeout or WriteTimeout property is less than zero and is not InfiniteTimeout.
}
catch (ArgumentException)
{
    //The port name does not begin with "COM".
    //- or -
    //The file type of the port is not supported.
}
catch (IOException)
{
    //The port is in an invalid state.
    //- or -
    //An attempt to set the state of the underlying port failed. For example, the parameters passed from this SerialPort object were invalid.
}
catch (UnauthorizedAccessException)
{
    //Access is denied to the port.
}
finally { //... }

при закрытии может только вот этот нарисоваться InvalidOperationException (The specified port is not open)
Последний раз редактировалось Vooon 03 июн 2010, 18:22, всего редактировалось 1 раз.
Причина: [code=cs]
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Управление роботом через bluetooth

Сообщение ToniPizecato » 03 июн 2010, 11:36

очень очень давно делал для ИК, когда они еще были.

Код: Выделить всё
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.Net;


namespace IrDa
{
    public partial class Form1 : Form
    {
        System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();

        public Form1()
        {
            InitializeComponent();
            button1.Enabled = false;
            try
            {
                Cursor.Current = Cursors.WaitCursor;
               
                sp.PortName = "COM6";
                sp.BaudRate = 115200;
                sp.Parity = System.IO.Ports.Parity.None;
                sp.StopBits = System.IO.Ports.StopBits.One;
                sp.DataBits = 8;
                sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(sp_DataReceived);
                sp.Open();
                button1.Enabled = true;
                Cursor.Current = Cursors.Default;
            }
            catch (Exception ex)
            {
                if (sp.IsOpen) { sp.Close(); }
                MessageBox.Show(ex.Message);
            }
        }

        void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            label1.Text = sp.ReadExisting();
        }

        private void Form1_Closing(object sender, CancelEventArgs e)
        {
            if (sp.IsOpen) { sp.Close(); }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            sp.WriteLine("hello");

            Cursor.Current = Cursors.Default;
        }

       
    }
}
Последний раз редактировалось Vooon 03 июн 2010, 18:21, всего редактировалось 1 раз.
Причина: [code=cs]
Аватара пользователя
ToniPizecato
 
Сообщения: 108
Зарегистрирован: 19 фев 2007, 19:18
Откуда: msk

След.

Вернуться в Коммуникации

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

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