Отговори на тема  [ 11 мнения ] 
Windows Hardware Flow Control? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение Windows Hardware Flow Control?
Опитваме се да пратим данни по RS232 към устройство, което има определен буфер за данни. Тъй като данните се обработват бавно, реализираме контрол на потока. Xon/Xoff работи без проблем.
Хардуерния обаче има проблеми - след като се забрани CTS сигнала, Windows продължава да праща данни още известно време.
Питам аз - що за хардуерен контрол е това, след като хич не се държи като такъв?
Проблема в Windows ли е, някой сблъсквал ли се е с него и може ли да се реши?


PS Буфера на PC UART-a (хардуерния) е само 16 байта, а данните които получаваме в излишък са около 1к...


Пон Мар 12, 2007 7:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
8O
за каква серийна порта става въпрос?
на чипсета, на PCI или на USB?
моя опит се изчерпва с проблеми при приемане (към win)


Пон Мар 12, 2007 9:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение 
PC - COM1 (RS232) -> RS232 - MCU

TX -> RX
RX <- TX
CTS <- CTS

CTS би трябвало да паузира предаването (поне според мен)...

ЕDIT:
Офф, сега разбрах какво ме питаш - порта е на дъното (чипсета може би?)


Вто Мар 13, 2007 10:56 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
@ex-man
мисля, че не е точно така. Смисъла на RTS - CTS e че едното устройство подава
заявка за предавне към другото и то му отговаря, когато е готово, но това
касае само началото на предаването, т.е. след като веднъж е казало - "Готов съм, давай"
то трябва да си приеме пакета, а не да си спира когато му скимне.
Предполагам, че ти липсва дотатъчно буфер. Пробвай със сигналите DSR и/или DCD.


Вто Мар 13, 2007 11:21 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
Изключи хардуерния буфер и ще се оправи.
(ХР иска да си с администраторски права.)

///(Често ми се е случвало при връзване машини с ЦПУ към комп, примерно.)
///DSR и DCD не може да са причината. От тях може да не тръгне комуникацията, ако се изискват
от устройството, но не може да се следят по-бързо от CTS. Не се занимавай с тях.


Вто Мар 13, 2007 8:06 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение 
Ако говориш за това (картинката долу) - изключен е ...


Прикачени файлове:
Clipboard01.gif
Clipboard01.gif [ 28.03 KiB | Прегледано 3404 пъти ]
Сря Мар 14, 2007 10:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
странно... би трябвало да работи нормално, т.е. да ти даде най-много още 2-3 знака при големите скорости
не е хардуерен проблема, нещо във софтуеризъма е.
мога да ти препоръчам да поекспериментираш с други видове порти - PCI, USB и ако има същия резултат да го умуваме пак


Чет Мар 15, 2007 9:33 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение 
Преди мисля съм пробвал с USB към сериен (преходник) и ситуацията беше същата (по спомени). За момента изделието е замразено, та експерименти - по-нататък...
Скоростта при която пробвахме беше 115200..
Според мен е проблем на прозорците - вероятно управляват софтуерно серийния порт, съответно регистъра на състоянията се чете през някакъв интервал и т.н..


Чет Мар 15, 2007 11:24 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Проблемът е прозоръчен и май няма решение при по-високите скорости. Flow Ctrl се прави софтуерно, независимо че сигналните линии се наричат "хардуерен контрол". Би следвало всяка промяна на такъв вход да генерира прекъсване на OS и тя да си знае какво се случва и съответно да престане на праща повече знаци за предаване. Да ама не. Явно й трябват няколко десетки микросекунди, докато се усети, а дотогава си приказва като папагал.
Възможните решения на твоя проблем са:
1. Да ползваш по-ниска скорост на предаване.
2. Да казваш, че устройството ти се е напълнило с няколко знака по-рано.
3. Да експериментираш с някои USB преходници. Има модели, които при съответна настройка правят контрола с фърмуер, независимо от ОС.


Съб Мар 17, 2007 5:24 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
Преди известно време и аз имах подобен проблем, само че в обратна посока.
Предавах към PС - то переодично (0.1s) пакети на 115200, които малко
надхврляха хардуерния му буфер. бат Бил се задъхваше и тук-таме изтърваше
нещо. Сложих USB-RS232 и нещата заспаха. Както знаете, те си имат буфери,
в моя случай не си спомням точно колко бяха, но свършиха работа.


Пон Мар 19, 2007 10:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
хардуерния flow-control не може да забранява данните които са вече в Tx фифото!
щото на асиа-то това си е просто един сигнал нямащ нищо общо с фифото!

между другото Xon/Xoff също не може да забранява данните в Tx-buffera - тъй че най-вероятно проблема е че твоето у-во НЕ работи с hard-control (а само с Xon/Xoff) :D

другото е да пращаш байт по байс с времезадръжка (1ms) - бавно но сигурно!


Пон Мар 19, 2007 10:21 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни