Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Custom baudrate за COM-овете...може ли?
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=5770
Страница 1 от 1

Автор:  tolstolob [ Сря Май 07, 2008 9:10 pm ]
Заглавие:  Custom baudrate за COM-овете...може ли?

Здравейте,
Възможно ли е да работя с моя стойност за бодрейта при комуникация по КОМ? Като задам крива стойност в моя апликейшън и при опит да се вържа с РС-то, гръмва с exeption. Предложения?

Автор:  [ Сря Май 07, 2008 9:17 pm ]
Заглавие:  Re: Custom baudrate за COM-овете...може ли?

tolstolob написа:
Здравейте,
Възможно ли е да работя с моя стойност за бодрейта при комуникация по КОМ? Като задам крива стойност в моя апликейшън и при опит да се вържа с РС-то, гръмва с exeption. Предложения?


Каква ОС използваш ?

Автор:  tolstolob [ Сря Май 07, 2008 9:38 pm ]
Заглавие: 

Win XP

Автор:  gicho [ Сря Май 07, 2008 11:07 pm ]
Заглавие: 

Много зор работата (под XP). Драйверът на виндоуса (serial.sys) не поддържа нестандартни бодове. За някаква диагностична програма за автомобили имаше пачнат този драйвер и поддържаше нещо повече, но не знам дали е било всякякъв бод рейт или просто са добавили и този, които им трябва на тях, мисля 41.6 kbps.

Можеш просто да ползваш един външен микроконтролер с два uart-а или с USB и UART и той да прави конверсия на скоростите.
Не знам как стои въпросът с УСБ към COM адаптерите - май FTDI чиповете (и техните драйвери) поддържаха повече скорости - някой дето ги е мъчил по-скоро да каже дали беше така.


Можеш да пробваш да прекомпилираш serial.sys-a ( в DDK-то му има сорса) и да добавиш тази функционалност - ако се навиеш да го правиш, разчитай на съпорт и определено ще е полезно на доста хора.


ЕДИТ:
Цитат от сорса на \kernel\serial\ioctl.c: (интересното е в края)

Код:
    switch (IrpSp->Parameters.DeviceIoControl.IoControlCode) {

        case IOCTL_SERIAL_SET_BAUD_RATE : {

            ULONG BaudRate;
            //
            // Will hold the value of the appropriate divisor for
            // the requested baud rate.  If the baudrate is invalid
            // (because the device won't support that baud rate) then
            // this value is undefined.
            //
            // Note: in one sense the concept of a valid baud rate
            // is cloudy.  We could allow the user to request any
            // baud rate.  We could then calculate the divisor needed
            // for that baud rate.  As long as the divisor wasn't less
            // than one we would be "ok".  (The percentage difference
            // between the "true" divisor and the "rounded" value given
            // to the hardware might make it unusable, but... )  It would
            // really be up to the user to "Know" whether the baud rate
            // is suitable.  So much for theory, *We* only support a given
            // set of baud rates.
           


Във файла initunlo.c са описани ( в кода на функцията SerialInitController() ) поддържаните бод рейтове, по-точно там се тестват дали са постижими и се маркират. Дефинирани са в ntddser.h.

Сега не ми се рови повече, но ако мога да помогна и варианта с подмяна на serial.sys те устройва, пиши.

Автор:  Lupus [ Сря Май 07, 2008 11:19 pm ]
Заглавие: 

какво налага ползване на нестандартни скорости?

Автор:  tolstolob [ Сря Май 07, 2008 11:35 pm ]
Заглавие: 

MIDI комуникация (31250 bps). Значи по-конкретно защо: имам два комуникационни канала, единия е MIDI (вход през оптрон), другия си е RS232, на същата скорост. Лошото е, че тези два канала са на един UART (щото нямам друг в наличност). Освен това, искам RS232-то да може да си говори и с РС, а то явно се оказва трудна задача при тези условия...

Автор:  Zdrav [ Чет Май 08, 2008 7:17 am ]
Заглавие: 

При виртуалния COM порт на FTDI, можеш да зададеш твоя стойност за baudrate.

Автор:  ps66 [ Чет Май 08, 2008 7:32 am ]
Заглавие: 

в 99.9% от случайте COM-а е реализиран с нещо от рода на 8250/16cX50 - което ще рече че могат да се се поддържат 65535 възможни стойности:
1.8432Mhz/16/i bps
или
115200/i bps
където i = 1...65535

така че всичко зависи от кварца (обикновенно нещо като 1.8432 MHz) някои UART ползеат 4/8/16 пъти по-висок клок - но това са нестандартни решения ...

мисля че е ясно че няма как да се поддържат други скорости освен физически възможните (с промени в serail.sys) :)

що се отняся до USB->RS232 - то и там е въпрос на кварц - но просто производителя може да сложи какъвто си иска (може дори да го направи софтуерен (пази боже :)) - така ще поддържа всички bps) !

Автор:  Реконструктор [ Чет Май 08, 2008 9:12 am ]
Заглавие: 

ps66 написа:
в 99.9% от случайте COM-а е реализиран с нещо от рода на 8250/16cX50 - което ще рече че могат да се се поддържат 65535 възможни стойности:
1.8432Mhz/16/i bps
или
115200/i bps
където i = 1...65535

така че всичко зависи от кварца (обикновенно нещо като 1.8432 MHz) някои UART ползеат 4/8/16 пъти по-висок клок - но това са нестандартни решения ...

мисля че е ясно че няма как да се поддържат други скорости освен физически възможните (с промени в serail.sys) :)

що се отняся до USB->RS232 - то и там е въпрос на кварц - но просто производителя може да сложи какъвто си иска (може дори да го направи софтуерен (пази боже :)) - така ще поддържа всички bps) !


Точно това си мислех и аз - май няма как да се направи универсален драйвер, който да работи на всякакъв хардуер...

Автор:  gicho [ Чет Май 08, 2008 3:24 pm ]
Заглавие: 

То ясно, че хардуерно непостижимите няма да станат, въпроса е че има доста възможни бод рейтове, които просто не са позволени в драйвера. Отделно макс допустимата грешка в проверката е 1%, в някои случаи може да си позволиш повече.

А за миди-то - ми то на на звуковите карти си има миди сериен порт, който обикновено е изведен на гейм (джойстик) конектора? Не може ли да се ползва той, сигурно поддържа тая скорост :-)

http://www.allpinouts.org/index.php/PC_MIDI_+_game_port - пинове 12 и 15 са TX и RX съответно.

Автор:  tolstolob [ Чет Май 08, 2008 4:15 pm ]
Заглавие: 

^ Идеята за модване на драйвера най ми допада, но за мен тези занимания минават в графата "висш пилотаж":) Междувременно се сетих как ще си реша проблема без да се налага нито една от предложените гимнастики, но е силно "платка-specific" и няма да представлява интерес за никого...
Благодаря за идеите и наздраве :prayer: :drinkers:

Автор:  juzisound [ Пет Май 09, 2008 12:26 am ]
Заглавие: 

Свържи се с мен на. Доста съм напред с мидито... Търси по името...

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/