Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11

Программа для роботы с устройством через RS-232

05.05.2011, 19:56. Показов 4523. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток.

Есть устройство, а точнее сканирующий приёмник, которое может обменивается данными через порт RS-232. Все команды и данные выглядят в виде ASCII кодов.

Нужно написать программу которая управляет этим приёмником, а также может считывать данные о частотах в который ведется поиск.

Отправлять данные я уже научился, кое как он их принимает и сразу пишет в файл.

Но в процессе разработки появилось много вопросов, на которые хотелось бы услышать ответы опытных программистов.

1. Как сделать так чтоб данные которые исходят из приёмника могли обрабатывается в реальном времени, а не через файл?
2. При запуске приемника в поиск, он сканирует заданий диапазон с заданным шагом перестройки частоты, соответственно мгновенно передает данные в порт, как организовать эти данные так чтоб они заносились в своеобразную базу и по ним строилась одновременно панорама (диаграмма), по иксу частоты, а игреку значения уровня (0-255).

Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2011, 19:56
Ответы с готовыми решениями:

Управление устройством через COM (RS-232)
Помогите пожалуйста . Имеется Пк и подключенная к нему плата через rs-232 . На плате уже стоит прошивка , и через Serial inpu/out put...

Программа для связи с устройством через СОМ порт.Фиаско(
Друзья, всем добрый день. Решил написать программу для передачи и приема данных через СОМ порт. Писал всё с нуля не зная ни языка ни среды...

Программа для роботы с сайтом
Здравствуйте раскажите какими компонентамы можно сделать программу для роботы с сайтом. Например залогинитса, зделать каки это дествия...

14
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 21:24
1. StringList
2. двумерный массив
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 21:36  [ТС]
По поводу первого объясните детально.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class ReadThread : public TThread
{
 private:
        void __fastcall Printing();
 protected:
        void __fastcall Execute();
 public:
        __fastcall ReadThread(bool CreateSuspended);
};
//---------------------------------------------------------------------------
class WriteThread : public TThread
{
private:
    void __fastcall Printing();
protected:
        void __fastcall Execute();
public:
        __fastcall WriteThread(bool CreateSuspended);
};
 
ReadThread *reader;
 
__fastcall ReadThread::ReadThread(bool CreateSuspended) : TThread(CreateSuspended)
{}
 
void __fastcall ReadThread::Execute()
{
 COMSTAT comstat;
 DWORD btr, temp, mask, signal;
 
 overlapped.hEvent = CreateEvent(NULL, true, true, NULL);
 SetCommMask(COMport, EV_RXCHAR);
 while(!Terminated)
  {
   WaitCommEvent(COMport, &mask, &overlapped);
   signal = WaitForSingleObject(overlapped.hEvent, INFINITE);
   if(signal == WAIT_OBJECT_0)
    {
     if(GetOverlappedResult(COMport, &overlapped, &temp, true))
      if((mask & EV_RXCHAR)!=0)
       {
        ClearCommError(COMport, &temp, &comstat);
        btr = comstat.cbInQue;
        if(btr)
        {
         ReadFile(COMport, bufrd, btr, &temp, &overlapped);
         counter+=btr;
         Synchronize(Printing);
        }
       }
    }
  }
 CloseHandle(overlapped.hEvent);
 }
 
void __fastcall ReadThread::Printing()
{
 Form1->Memo1->Lines->Add((char*)bufrd);
 Form1->StatusBar1->Panels->Items[2]->Text = "Âñåãî ïðèíÿòî " + IntToStr(counter) + " áàéò";
 
 if(Form1->CheckBox3->Checked == true)
  {
   write(handle, bufrd, strlen(bufrd));
  }
 memset(bufrd, 0, BUFSIZE);
}
Как его здесь задействовать?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 21:42
добавляете в СтрингЛист строки с кодами, потом используете нужную строку по ее индексу в списке.
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 21:56  [ТС]
Можно пример для наглядности?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 22:10
C++
1
2
3
4
5
6
7
8
9
TStringList * list = new TStringList;
list->Add("Первая строка");
list->Add("Вторая строка");
list->Add("Третья строка");
for (int i = 0; i < list->Count(); i++) {
  if (list->Strings[1]) {
    ShowMessage("Это вторая строка списка: "+list->Strings[1]);
  }
}
про StringList очень много информации, главное, не ленится
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 22:25  [ТС]
а как вызвать последнюю строку, не зная ее индекса?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 22:28
все индексы известны, индекс последней строки соответствует количеству строк в списке
C++
1
2
3
4
int cnt = list->Count();
if (list->Strings[cnt]...
// предпоследней :
list->Strings[cnt-1] // и т.д.
1
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 22:43  [ТС]
Count() не хочет работать
[C++ Error] Unit1.cpp(490): E2314 Call of nonfunction
Что не так, может нужна доп.библиотека в инклудах?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 22:45
может, там скобок не надо
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 23:18  [ТС]
Спасибо за совет с StringList но все-же мои кривые руки не могут ее прилепить(((
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.05.2011, 23:45
и что не получается?
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
06.05.2011, 00:23  [ТС]
байты приходят из порта с определённой задержкой , и поэтому Стринг не успевает сформироваться к тому моменту как я к нему обращаюсь
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
06.05.2011, 00:31
смотрите свой супер-пупер код и заносите данные в список , когда данные полностью получены: if и т.д.
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
06.05.2011, 00:35  [ТС]
Если интересно и есть время, можно посмотреть исходники. Коментарии и замечания приветствуются
Вложения
Тип файла: 7z AOR86II.7z (674.7 Кб, 35 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2011, 00:35
Помогаю со студенческими работами здесь

Программа для дипломной роботы
нужно придумать тему дипломной роботы, тоесть сделать какую-то программу, подскажите или скиньте программу которую вы делали на курсовой...

Программа для работы с локальной сетью аудитории
в аудитории 12 пк Часто приходиться с одного пк по локальной сети передать на остальные пк файлики, папки. Мне интересно есть ли прога...

Можно ли через VB организовать связь (через паралельный порт) с отдельным устройством?
Вот хотелось бы узнать можно ли через VB организовать связь (через паралельный порт) с отделным устройством кто знает подскажите пожалуйста...

Работа через RS-232
Посоветуйте литературу, нужно передать на железку инфу и забрать её оттуда через компорт. Не знаю, как написать программы для загрузки и...

Подключение видеокамеры к ПК через Com-232
Народ, если кто знает возможно ли подключение видеокамеры к компу через com232c чтобы фотографии перекидывать. Именно Видеокамеры, а не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru