roboforum.ru

Технический форум по робототехнике.
Текущее время: 06 апр 2025, 03:08

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Терминал Help !!
СообщениеДобавлено: 30 июл 2011, 21:08 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Взялся написать терминал,буду задавать очень много глупых вопросов,по мере накопления :oops:
1.Какими средствами лучше воспользоваться при работе с СОМ портом: функциями API или средствами языка С++?
2.Какая версия С++ builder удобна в использовании?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 30 июл 2011, 21:24 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
На хабре был цикл статей по терминалам, ищи-читай. Два твоих вопроса, насколько я понимаю в теме, к терминалу вообще никакого отношения не имеют.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 30 июл 2011, 23:12 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
для тренировки взялся за такую затею?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 30 июл 2011, 23:14 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Korbofos писал(а):
Взялся написать терминал
2.Какая версия С++ builder удобна в использовании?

Записывайте:
1. Скачать исходники отсюда - http://slydiman.narod.ru/rus/index.htm
2. Изучить
3. Написать свой аналогичный
4. Бинго! :crazy:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 11 авг 2011, 22:58 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Как отправить массив? вроде так должно отправиться, но нет только один байтик уходит...

Код:
void Write_Port (byte* BufWrite,DWORD index)
{
DWORD dwWritten;
for(unsigned i=0;i<index;i++)
{
   //Может сюда добавить какую-то api функцию ожидаю отчисти буфера???
   WriteFile(hCom,&(BufWrite[i]),sizeof(char),&dwWritten,NULL);
   Sleep(1);
  }
}

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 12 авг 2011, 00:49 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
А если приглядеться к параметрам WriteFile()?
Вот я из этого кусочка кода вижу что она сама принимает буфер. Зачем пихать по байтику не понятно.

Код:
ssize_t writep(char *buf, size_t len)
{
   DWORD dwWritten;
   WriteFile(hCom, buf, len, &dwWritten, NULL);
   return dwWritten;
}

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 12 авг 2011, 01:22 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Тогда вот так?
Код:
char buf[3];

void Write_Port (byte* BufWrite, size_t raz )
{
DWORD dwWritten;
WriteFile(hCom,BufWrite,raz,&dwWritten,NULL);
}

Write_Port(buf,3);

Как-то так?
Всёравно один байт уходит(

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 12 авг 2011, 08:54 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Как определяете, что уходит 1 байт?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 12 авг 2011, 20:48 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
А проверка на ошибки не нужна чтоль? Обычно сверяют len2 = write(buf, len); if (len2 != len) err("write");

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 13 авг 2011, 05:48 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
=DeaD= писал(а):
Как определяете, что уходит 1 байт?

Подцепил терминал к протеусу(compim) там оно и видно.

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 14 авг 2011, 16:52 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Всё ровно уходит 1 байт :(
Код:
unsigned char tx_bufer[3];

//Функция
char Write_Port (unsigned char *buf, size_t raz)
{
DWORD dwWritten;
WriteFile(hCom,buf,raz,&dwWritten,NULL);
if(raz==dwWritten)
{return 1;}
else
{return 0;}
}

//Отправляем три байта с проверкой
tx_buffer[3]=1,2,150;

if(Write_Port(tx_buffer,3)==0)
{ShowMessage("error write_port");}
//Ошибку почемуто не показывает


На мк прилетает один байт FF

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 18 авг 2011, 11:41 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Вот так уходит три байта, но и то с не тем содержанием.
Код:
char Write_Port (unsigned char *buf, size_t raz)
{
DWORD dwWritten;
for(char i=0;i<raz;i++)
{
WriteFile(hCom,buf+i,1,&dwWritten,NULL);
Sleep(200);
}

Почему WriteFile(hCom,buf,3,&dwWritten,NULL); Так не работает?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 18 авг 2011, 13:27 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Что вот это такое: tx_buffer[3]=1,2,150; ???

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 18 авг 2011, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
tx_buffer[3]=1,2,150; - Это означает:
первая цифра означает, какую функцию на мк нужно запустить...
Две следующие цифры аргументы для этой функции...

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Терминал Help !!
СообщениеДобавлено: 18 авг 2011, 14:28 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
не, я не про это. я про инициализацию массива - разве не должно быть так:

tx_buffer[3]={1,2,150};

Дальше, тебе выше указали, что write file кушает буффер. А ты его опять байтами кормишь. Соответственно ты проблему свою не решаешь, а повторяешь ее три раза.

Добавлено спустя 6 минут 31 секунду:
кинь полностью листинг - скорее всего ты криво парамеры порта задаешь и у тебя скорость порта раза в четыре выше скорости терминала.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


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

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


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

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


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

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