roboforum.ru

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

Управление роботом через OR-BT20-115.2

Правила форума
Правила раздела OpenRobotics

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 22 июл 2011, 15:05

А точно в C# задержка? Рядом в терминале без задержки работает всё? Может там какая-то буферизация?

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 22 июл 2011, 15:17

Ну мой предыдущий проект на дельфи с модулем дружит отлично, данные ушли-тутже пришли. А тут не так...
насчет буферизации не знаю... Щас кусок кода предоставлю если найду.

Добавлено спустя 5 минут 44 секунды:
Кусок кода для записи в ком.
Использую:
System.IO.Ports.SerialPort COM = new System.IO.Ports.SerialPort();
System.IO.Ports;

Код: Выделить всёРазвернуть
            COM.PortName = "COM8";
            COM.BaudRate = 115200;
            COM.Parity = Parity.None;
            COM.StopBits = StopBits.One;
            COM.Open();
            COM.WriteLine("l40" + System.Environment.NewLine + (char)(26));
            COM.WriteLine("S40 13 0E 0500 S40 13 0F 07D0 P");
            //COM.WriteLine("S40 13 0E 0500 S40 13 0F 07D0 P" + System.Environment.NewLine + (char)(26));
            //COM.Close();

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 22 июл 2011, 15:24

WriteLine - Writes the specified string and the NewLine value to the output buffer.


Добавлено спустя 3 минуты 30 секунд:
А вот как отправить уже этот буфер - я почему-то не нашел :pardon:

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 22 июл 2011, 15:26

Т.е. он помимо моих данных(S40 13 0E 0500 S40 13 0F 07D0 P) запихивает туда содержимое буфера ? Если так то как без WriteLine записать данные в порт ?

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 22 июл 2011, 15:28

В том то и дело, что он похоже все твои данные сначала складывает в буфер, а потом в одному ему известный момент времени наконец-то отправляет буфер в синий зуб. Как это отключить - не знаю, обычно всякие flush() есть, а тут только "очистить выходной буфер" и всё, очень странно, может я какую-то неполную документацию нашел...

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 22 июл 2011, 15:32

На cybeforume тоже молчат... Блин, это печально. Делал по примерам, но в примерах всегда "все работает"...
Может найдется рабочий проект на шарпе терминальной программы ? Мнеб только код глянуть, там все ясно будет.

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 14 сен 2011, 01:42

Может кто напомнить, все забыл уже пока не работал с орфой, как выставлять порты в 1 или 0 ?
Пример смотрел, но не вспоминаю как это делал. Были записи в тетради, тетради нет (

Помню что так S40 06 01 S40 02 01 P выставляем 1ку на порте А0. Но не помню что за 06, 01, 02, 01. (пример не вкурил из орфы)

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 14 сен 2011, 07:37

06, 02 - номера регистров, вроде DDRA и PORTA соотв., ну или наоборот :)
01 - битовая маска

Re: Управление роботом через OR-BT20-115.2

MiBBiM » 14 сен 2011, 07:40

S-T-A-L-K-E-R писал(а):Ну мой предыдущий проект на дельфи с модулем дружит отлично, данные ушли-тутже пришли. А тут не так...
насчет буферизации не знаю... Щас кусок кода предоставлю если найду.


http://msdn.microsoft.com/ru-ru/library ... lport.aspx
http://msdn.microsoft.com/ru-ru/library ... tream.aspx
не пробовал, но возможно документация говорит делать это так:
Код: Выделить всёРазвернуть
serialPort.BaseStream.Flush()
второй способ - сделать буфер малым для любой посылки
serialPort.WriteBufferSize = 1
serialPort.WriteBufferSize = 0

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 14 сен 2011, 10:24

=DeaD= писал(а):06, 02 - номера регистров, вроде DDRA и PORTA соотв., ну или наоборот :)
01 - битовая маска


- как установить 1 на Порте а1 ?

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 14 сен 2011, 10:27

взять битовую маску не 00000001b (=0x01), а 00000010b (=0x02)

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 14 сен 2011, 10:50

Вот так получается: S40 06 02 P ?

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 14 сен 2011, 10:57

Угу, выставить 1 на порту A0 это S40 06 01 S40 02 01 P, а выставить 1 на порту А1 это S40 06 02 P, где логика? :)

Re: Управление роботом через OR-BT20-115.2

S-T-A-L-K-E-R » 14 сен 2011, 11:01

Пардон, я не с той ноги встал -
Выставить на А1 - лог 1: S40 06(DDR) 01 S40 02(PORTA) 02 P
Так ?

Re: Управление роботом через OR-BT20-115.2

=DeaD= » 14 сен 2011, 11:09

S40 06 02 S40 02 02 P

Иначе, если как у тебя, DDRA будет для 0 порта, а PORTA для 1 порта.


cron
Rambler\'s Top100 Mail.ru counter