Терминал Help !!

В этом разделе обсуждаются вопросы по использованию ПК и КПК в робототехнике.
Программирование, настройка, аппаратная часть.

Терминал Help !!

Сообщение Korbofos » 30 июл 2011, 21:08

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

Re: Терминал Help !!

Сообщение dccharacter » 30 июл 2011, 21:24

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

Re: Терминал Help !!

Сообщение setar » 30 июл 2011, 23:12

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

Re: Терминал Help !!

Сообщение =DeaD= » 30 июл 2011, 23:14

Korbofos писал(а):Взялся написать терминал
2.Какая версия С++ builder удобна в использовании?

Записывайте:
1. Скачать исходники отсюда - http://slydiman.narod.ru/rus/index.htm
2. Изучить
3. Написать свой аналогичный
4. Бинго! :crazy:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Терминал Help !!

Сообщение Korbofos » 11 авг 2011, 22:58

Как отправить массив? вроде так должно отправиться, но нет только один байтик уходит...

Код: Выделить всё
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);
  }
}
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: Терминал Help !!

Сообщение Vooon » 12 авг 2011, 00:49

А если приглядеться к параметрам WriteFile()?
Вот я из этого кусочка кода вижу что она сама принимает буфер. Зачем пихать по байтику не понятно.

Код: Выделить всё
ssize_t writep(char *buf, size_t len)
{
   DWORD dwWritten;
   WriteFile(hCom, buf, len, &dwWritten, NULL);
   return dwWritten;
}
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Терминал Help !!

Сообщение Korbofos » 12 авг 2011, 01:22

Тогда вот так?
Код: Выделить всё
char buf[3];

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

Write_Port(buf,3);

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

Re: Терминал Help !!

Сообщение =DeaD= » 12 авг 2011, 08:54

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

Re: Терминал Help !!

Сообщение Vooon » 12 авг 2011, 20:48

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

Re: Терминал Help !!

Сообщение Korbofos » 13 авг 2011, 05:48

=DeaD= писал(а):Как определяете, что уходит 1 байт?

Подцепил терминал к протеусу(compim) там оно и видно.
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: Терминал Help !!

Сообщение Korbofos » 14 авг 2011, 16:52

Всё ровно уходит 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
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: Терминал Help !!

Сообщение Korbofos » 18 авг 2011, 11:41

Вот так уходит три байта, но и то с не тем содержанием.
Код: Выделить всё
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); Так не работает?
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: Терминал Help !!

Сообщение dccharacter » 18 авг 2011, 13:27

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

Re: Терминал Help !!

Сообщение Korbofos » 18 авг 2011, 13:40

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

Re: Терминал Help !!

Сообщение dccharacter » 18 авг 2011, 14:28

не, я не про это. я про инициализацию массива - разве не должно быть так:

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

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

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

След.

Вернуться в Компьютеры в роботостроении

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

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

cron