1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Подсчет Вероятности Ошибки

Тема в разделе "С и С++", создана пользователем sunni, 9 июл 2014.

Статус темы:
Закрыта.
  1. sunni

    sunni New Member

    Репутация:
    0
    Регистрация:
    4 июл 2014
    Сообщения:
    2
    Симпатии:
    0
    Нужно написать тест-программу для подсчета ошибки на бит. Передающая программа формирует последовательность Баркера или м-последовательность и передает эту последовательность по Com-порту в течении какого-то времени( например в течении минуты). Принимающая программа производит синхронизацию и подсчет ошибки. Т.е принимающая программа сравнивает эталонную последовательность(которая д.б уже задана) с входящей последовательностью. Для сравнения эти две последовательность складываются, если сумма равна 0,то они равны, если сумма равна 1,то не совпадают. При сравнении следует учитывать время задержки прихода сигнала, т.е чтобы выровнять сигнал, надо сначала рассчитать задержку, после чего сдвинуть входящую последовательность на эту величину и уже потом сравнивать. Так же необходимо учитывать длину последовательностей, эталонная и кусок входящей последовательность д.б одинаковыми.
    Как это реализовать?
    У меня пока мысли только в передающей программе сформировать последовательность, а в принимающей считать эту последовательность и сравнить с данной.
    Формирую последовательность, в передающей программе
    Код:
    void Copen_comDlg::OnBnClickedRadio6()
    {
    DWORD d;
    int arr[11]={1,1,1,-1,-1,-1,1,-1,-1,1,-1};
    int i;
    
    for( i=0; i<11; i++)
    {
    sprintf(buffer,"%d",arr[i]);	
    WriteFile(h,buffer,strlen(buffer),&d, NULL); 
    }
    }
    в принимающей:
    Код:
    void CpriemDlg::OnBnClickedButton2()
    {
    DWORD d;
    char buf_in[20];
    char arr[2]={1,-1};
    int i;
    if(ReadFile(h,&buf_in,sizeof(buf_in)-1,&d,NULL)==0)
    {
    for(i=0; i<2; i++)
    { 
    for(d=0; d<sizeof(buf_in); d++)
    {
    if (arr[i] != buf_in[d]) 
    {
    myfile.open ("d:/my_file_name1.txt");
    myfile<< "ошибка";
    myfile.close();
    }
    else 
    {
    myfile.open ("d:/my_file_name1.txt");
    myfile<<"совпали";
    myfile.close();
    }
    }
    }
    }
    
    else
    {
    buf_in[d]='\0';
    command_word1+=buf_in;
    UpdateData(false);
    }
    Последовательность из 1 и -1 просто передается и принимается, сравнения массивов не происходит. Ну и как что делать дальше с временем, подсчетом ошибки мыслей нет((((
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей