Отговори на тема  [ 20 мнения ]  Отиди на страница Предишна  1, 2
Въпрос за Настройка на Сериен порт под стар Линукс 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 8:39 pm
Мнения: 1954
Мнение Re: Въпрос за Настройка на Сериен порт под стар Линукс
В какъв режим четеш данните - OVERLAPPED или non OVERLAPPED? Пусни парчето код, което върши работата. Правил съм комуникация на около 2mbps през RS-232 и не съм забелязвал закъснения.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!


Пет Май 20, 2022 6:59 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: Въпрос за Настройка на Сериен порт под стар Линукс
RM написа:
... Даже ми връща sizeof(buf) индекс а не бройя елементи ...

buf е указател - би трябвало да връща винаги 4 ако програмата е 32 битова :)

_________________
https://github.com/slav4ocom/


Пет Май 20, 2022 9:57 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 607
Мнение Re: Въпрос за Настройка на Сериен порт под стар Линукс
syscop написа:
В какъв режим четеш данните - OVERLAPPED или non OVERLAPPED? Пусни парчето код, което върши работата. Правил съм комуникация на около 2mbps през RS-232 и не съм забелязвал закъснения.


Асинхронен - има възможност да извикам ново предаване преди да е завършило предното

_________________
Вниманиене съмвишист....ИЙ.


Пет Май 20, 2022 12:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 8:39 pm
Мнения: 1954
Мнение Re: Въпрос за Настройка на Сериен порт под стар Линукс
Това закъснение дали има общо с SleepEx(1,false) от парчето код по-горе?
Ето ти пример (от преди 20-тина години :))

Код:
UINT SerialReadFunc(LPVOID lpParam)
{
DWORD   dwWait;
HANDLE   hEvents[3];
DWORD   dwRead;

   UNREFERENCED_PARAMETER(lpParam);
    hEvents[0] = CTRL.hStart;
    hEvents[1] = CTRL.hStop;
    hEvents[2] = CTRL.hFinishThrd;
    while(TRUE)
    {
      dwWait = WaitForMultipleObjects(3, hEvents, FALSE, 15); /* 15ms */
        switch(dwWait)
        {
            case WAIT_OBJECT_0: /* start */
                ResetEvent(CTRL.hStart);
            PurgeCommPort(&CTRL.port);
                break;
            case WAIT_OBJECT_0 + 1: /* stop */
            ResetEvent(CTRL.hStop);
                break;
            case WAIT_OBJECT_0 + 2: /* the end of the show */
            ResetEvent(CTRL.hFinishThrd);
            goto quit;
                break;
            case WAIT_TIMEOUT:
            if(!ReadCommPort(&CTRL.port,pbCommBuf,&dwRead))
            {
               PurgeCommPort(&CTRL.port);
                    /* error processing */
            }
            else
            {
                    /* incomming data may be with zero length */
                    /* process incomming data */
            }
                break;
        }
    }
quit:
   SetEvent(CTRL.hThrdFinished); /* signal the main app */
   return(0);
}


Фунцията ReadCommPort ползва ClearCommError, за да провери дали има някакви данни в опашката.

п.п.
Още нещо - серийният порт какъв е? Истински или usb2serial?

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!


Последна промяна syscop на Пет Май 20, 2022 1:54 pm, променена общо 1 път



Пет Май 20, 2022 12:55 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 607
Мнение Re: Въпрос за Настройка на Сериен порт под стар Линукс
syscop написа:
Това закъснение дали има общо с SleepEx(1,false) от парчето код по-горе?

Не няма махах го все същото. Но като пусна само изпращането на данни директно върви гладко.
Но с другия софт върви добре .USB Serial - Renesas Virtual UART
Това е Когато пращам данни към процесора ... при четене нямам проблем то е само потвърждение на верно приети данни и връщане на опциите. Там в процесора всичко е написано както трябва.

винаги става на всеки 60-64 mS . Ще го търся

_________________
Вниманиене съмвишист....ИЙ.


Пет Май 20, 2022 1:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

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


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

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