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

 
 
> AT90S2313-10PI(пробелема с получением данных по..., RS-232(COM PORT)
mejia
сообщение Jun 12 2005, 13:57
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 12-06-05
Пользователь №: 5 952



вопрос такой, кто-нибудь сталкивался с проблемой получния даннах с компа по RS-232?

Идея в том, что отсылка вроде понятно как осуществить, то есть когда сам захочешь.... а вот принять не понятно.... надо постоянно сканировать RxD?

может кто-нибудь помочь в этом деле, или предоставить исходник.... ?

задача: получить 4 байта(AnsiString из C++) с COM и записать их в
массив
тоесть что-то типа такого
char b[10];

b[0]=RxD1;
b[1]=RxD2;
b[2]=RxD3;

b[3]=RxD4;

я уже с месяц парюсь ничего придумать не могу.... помогите пожалуста

maniac.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
phantom
сообщение Jun 16 2005, 08:42
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Цитата
осталась проблемка не касающаяся кодинга....

А что, это все работает? Не верю!! w00t.gif
Я, конечно, могу сильно проезжать (со мной это что-то часто в последнее время), но все же:
1) что-то не могу уловить, где вызываются функции sort() и work();
2)
Цитата
short int temp;
itoa(&x[0],temp,10); // v a xranitsa maska bitov
komanda=temp;

всегда думал, что itoa преобразует число в строку(Int TO Alpha)...
или в ICC наоборот? тогда сорри! blink.gif
В нормальном С строку в число преобразует atoi (в CodeVision например есть int atoi(char *str), IСС сейчас не пользуюсь, было дело несколько лет назад, но кряка к trial-версии не нашлось, пришлось выкинуть)
думаю, было бы что-то вроде
x[4]=0; // чтоб atoi знал, где конец строки, объявлять надо char х[5]
prinataya_stroka=atoi(x+1); // раскодируем начиная с х[1]
а команда, если это тоже число в формате ASCII
komanda=x[0]&0x0F; // стирает 3 из старшей тетрады
см. также 5)

3)
Цитата
for (i=0;i<8;i++)
{
b=prinataya_stroka;
b<<=i;
b>>=i;
if (b==1) svetodiodon(nojkas[i]);
if (b==0) svetodiodoff(nojkas[i]);
}

huh.gif ohmy.gif mellow.gif
трудно даже проанализировать, когда выполняютя условия b==1, b==0...
Давайте на примере:
представим, что "принятая строка"=11100001.
і=0: после b<<=i; b>>=i; получаем b=11100001, ничего не происходит
і=1: b=01100001, ничего не происходит
i=2: b=00100001, ничего не происходит
i=3: b=00000001, зажигается светодиод №3
i=4: b=00000001, зажигается светодиод №4
i=5: b=00000001, зажигается светодиод №5
i=6: b=00000001, зажигается светодиод №6
i=7: b=00000001, зажигается светодиод №7
итог: хотели зажечь 11100001, зажгли 00011111 sad.gif

Вопрос: почему бы не написать просто
PORTB=prinataya_stroka ???

4)
Цитата
void svetodiodon(char nojka)
{
PORTB &=~BIT (nojka);
}

кажется, выключает, а не включает
Цитата
void svetodiodoff(char nojka)
{
PORTB ^= BIT (nojka);
}

^ - операция "исключающее ИЛИ", т.е. светодиод не выключается, а меняет состояние на противоположное

5) Кстати, а нельзя сразу с компьютера посылать 1 байт, кодирующий, чего включить и выключить, вместо того чтобы посылать 3, а потом их разгребать?

6)
Цитата
void get_result()
{
x[cou]=UDR;cou++;
if (cou==4) {cou=0;}
}

warning smile.gif : будеть корректно работать только если компьютер будет посылать каждый раз строго 4 байта


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mejia   AT90S2313-10PI(пробелема с получением данных по...   Jun 12 2005, 13:57
- - at90   Цитата(mejia @ Jun 12 2005, 16:57)вопрос тако...   Jun 12 2005, 18:18
- - andk   Какой исходник нужен - Асм или С ?   Jun 14 2005, 03:11
- - Laksus   Цитата(mejia @ Jun 12 2005, 16:57)вопрос тако...   Jun 14 2005, 04:27
|- - yung   Я пользуюсь компилятором от ImageCraft, там в Appl...   Jun 14 2005, 04:39
- - phantom   Фраза "//uart has received a character in UDR...   Jun 14 2005, 07:20
|- - yung   А какой смысл висеть в ожидании четырех принятых б...   Jun 14 2005, 07:41
|- - yung   И еще одна мысль. Чем заниматься длительными рассу...   Jun 14 2005, 07:49
|- - mejia   Цитата(yung @ Jun 14 2005, 10:49)И еще одна м...   Jun 14 2005, 10:45
|- - mejia   а вот сам код, но у меня какая-то странная проблем...   Jun 14 2005, 10:49
|- - mejia   а может кто-нибудь выложить кряк к Image Craft?( у...   Jun 14 2005, 10:54
|- - yung   Сначала о кряке. Он в прицепе(если прицепится).Раб...   Jun 14 2005, 11:24
|- - yung   И что это у тебя за версия ICC, что русских коммен...   Jun 14 2005, 11:38
|- - yung   Там почему-то в двух кусках разные требования. Сде...   Jun 14 2005, 12:41
- - KRS   Если пока не получишь 4 байта из уарта делать ничг...   Jun 14 2005, 07:32
- - mejia   хорошо прогу написал и после урезания жрет 47% of ...   Jun 15 2005, 13:16
- - mejia   Цитата(phantom @ Jun 16 2005, 11:42)Цитатаост...   Jun 16 2005, 09:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016