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

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

05.05.2011, 19:56. Показов 4479. Ответов 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 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru