roboforum.ru

Технический форум по робототехнике.

проект "PDAonBoard"

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

Re: проект "PDAonBoard"

Сообщение statistic » 28 дек 2009, 23:07

Братья по роботоразуму ,подскажите .дальномеры Шарповские на постороннюю засветку реагируют?ну там лампы всякие, экраны ,пульты ДУ.
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: проект "PDAonBoard"

Сообщение D1mcon » 28 дек 2009, 23:26

statistic писал(а):
с т.з. программы это таки два ком порта

Я имею в виду мне для БТ тот же класс в C# использовать- SerialPort?Только ставить в конструкторе не один,а две штуки и потом один включать при передаче,а второй при приёме .Так?

Что-то я не понял о чем идет речь :( . В классе SerialPort нет перегруженного конструктора на 2 portName.
Если всеже нужно работать с 2-мя портами одновременно то нужно создать 2 объекта класса SerialPort. А чтоб совсем все было хорошо (избежать конфликтов при одновременном приеме) лучше сделать класс наследник от SerialPort, переопределить метод DataReceived (сделать проверку заполнения буфера по таймеру),создавать и работать с объектами класса наследника.

А разъем ты классный нашел :good: . Я из-за него покупал дата-кабель.
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Аватара пользователя
D1mcon
 
Сообщения: 700
Зарегистрирован: 08 фев 2009, 10:13
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий

Re: проект "PDAonBoard"

Сообщение statistic » 28 дек 2009, 23:40

то нужно создать 2 объекта класса SerialPort.

Именно это я и хотел сказать ,просто в терминологии не силён.
лучше сделать класс наследник от SerialPort

А вот здесь и дальше вы как то не понятно выругалися,что мне прям в угол встать захотелось.Ничо не понял ,новичок-с! :oops: Но учусь потихоньку.
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: проект "PDAonBoard"

Сообщение MiBBiM » 28 дек 2009, 23:43

D1mcon писал(а):создать 2 объекта класса SerialPort

об этом и речь
D1mcon писал(а):избежать конфликтов при одновременном приеме

поясните, пожалуйста, откуда там возьмутся конфликты.

Добавлено спустя 30 секунд:
P.S. statistic опередил чуток :D
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: проект "PDAonBoard"

Сообщение D1mcon » 28 дек 2009, 23:52

2statistic
Да нет я не ругался :) Просто у SerialPort есть реальный баг - при одновременной работе с несколькими открытыми портами возникают конфликты, поэтому забиваем на событие получение данных, создаем таймер в нем проверяем значение поля bytereceived, если не 0 читаем буфер. В итоге все нормально работает и нет необходимости создания делегата для извлечения данных из буфера SerialPort. Это все по собственному опыту.

2MiBBiM
При создании SerialPort он автоматически создает поток, в котором он читает и передает данные. Если много открытых портов возрастает вероятность одновременного использования некоторого объекта всеми объектами SerialPort -> всеми потоками, вот здесь и подводный камень, так просто данные из потока не извлекаются, и объкты в потоках если не Static (и не SingleTone) имеют локальные копии, следовательно либо:
1) Конфликт при обращении к разделяемым ресурсам
2) Неявное модифицирование некоторого объекта -> получения неожидаемого результата.

По опыту: конфликты могут проявиться и при 2 портах, особенно если данные одного нужно передать другому.
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Аватара пользователя
D1mcon
 
Сообщения: 700
Зарегистрирован: 08 фев 2009, 10:13
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий

Re: проект "PDAonBoard"

Сообщение statistic » 29 дек 2009, 00:57

Это как-то так должно выглядеть?
Код: Выделить всёРазвернуть
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace ПроверкаКом
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.BytesToRead != 0) textBox1.Text =""+ serialPort1.ReadByte();
        }
    }
}

и пожалуйста ,мож кто знает:
Братья по роботоразуму ,подскажите .дальномеры Шарповские на постороннюю засветку реагируют?ну там лампы всякие, экраны ,пульты ДУ.
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: проект "PDAonBoard"

Сообщение statistic » 29 дек 2009, 09:44

to D1mcon А если например обработка таймера начнётся как раз при приёме данных в буфер?От этого ошибки не будут происходить?
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: проект "PDAonBoard"

Сообщение D1mcon » 29 дек 2009, 13:42

Нет, у меня с этим не было проблем. :)
Про шарпы смотри по форуму, по-моему это уже много раз обсуждалось :)
Про приведенный выше код:
Логика правильная, но можно потом и целую строку читать.
Работа с таймером избавит вас от некоторых проблем. Для начала это лучшее решение.
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Аватара пользователя
D1mcon
 
Сообщения: 700
Зарегистрирован: 08 фев 2009, 10:13
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий

Re: проект "PDAonBoard"

Сообщение statistic » 29 дек 2009, 14:21

ОК.Опробую ваш вариант.Это у меня получится три порта в употреблении.Один на МК(rs232),и два на ВТ для связи с компом.
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: проект "PDAonBoard"

Сообщение D1mcon » 29 дек 2009, 15:16

Что-то не пойму, зачем Вам столько портов?:) Поясните. :)
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Аватара пользователя
D1mcon
 
Сообщения: 700
Зарегистрирован: 08 фев 2009, 10:13
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий

Re: проект "PDAonBoard"

Сообщение MiBBiM » 29 дек 2009, 16:39

в разъем от lg-600 5-ти контактный miniusb входит как родной, причем он ещё и с двух сторон зажимается защелками разъема. :)
а вот большой usb-a толстоват :( но напильничком можно попробовать.
наконец-то появилось решение компактного юсб-хост переходника :)
D1mcon, наверняка по одному управлять ботом, а двум другим - держать коннект по БТ с ББ
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: проект "PDAonBoard"

Сообщение Myp » 29 дек 2009, 17:09

а зачем два порта для обмена по блютусу?
там же только один используется для обмена

первый порт если устройство инициирует соединение, второй порт если компьютер инициализирует соединение.
один порт мастер второй порт слэйв.

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

Re: проект "PDAonBoard"

Сообщение MiBBiM » 29 дек 2009, 19:53

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

Re: проект "PDAonBoard"

Сообщение D1mcon » 29 дек 2009, 20:16

Что-то я вас совсем не понимаю :pardon: Зачем постоянно что-то открывать и закрывать :)
Не догоняю, поясните. :)
2MiBBiM что кроется за секретной аббревиатурой ББ
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Аватара пользователя
D1mcon
 
Сообщения: 700
Зарегистрирован: 08 фев 2009, 10:13
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий

Re: проект "PDAonBoard"

Сообщение Myp » 29 дек 2009, 20:22

MiBBiM писал(а):чтобы не иметь головняков с перманентным открыванием/закрыванием порта при двухстороннем обмене?

нет
2 порта используются для разделения мастер/слэйв


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

Пред.След.

Вернуться в Идеи

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

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