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

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

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

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

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

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

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

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

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

Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2011, 19:56
Ответы с готовыми решениями:

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

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

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

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

14
LK
Заблокирован
05.05.2011, 21:24 2
1. StringList
2. двумерный массив
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 21:36  [ТС] 3
По поводу первого объясните детально.
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
LK
Заблокирован
05.05.2011, 21:42 4
добавляете в СтрингЛист строки с кодами, потом используете нужную строку по ее индексу в списке.
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 21:56  [ТС] 5
Можно пример для наглядности?
0
LK
Заблокирован
05.05.2011, 22:10 6
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  [ТС] 7
а как вызвать последнюю строку, не зная ее индекса?
0
LK
Заблокирован
05.05.2011, 22:28 8
все индексы известны, индекс последней строки соответствует количеству строк в списке
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  [ТС] 9
Count() не хочет работать
[C++ Error] Unit1.cpp(490): E2314 Call of nonfunction
Что не так, может нужна доп.библиотека в инклудах?
0
LK
Заблокирован
05.05.2011, 22:45 10
может, там скобок не надо
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
05.05.2011, 23:18  [ТС] 11
Спасибо за совет с StringList но все-же мои кривые руки не могут ее прилепить(((
0
LK
Заблокирован
05.05.2011, 23:45 12
и что не получается?
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
06.05.2011, 00:23  [ТС] 13
байты приходят из порта с определённой задержкой , и поэтому Стринг не успевает сформироваться к тому моменту как я к нему обращаюсь
0
LK
Заблокирован
06.05.2011, 00:31 14
смотрите свой супер-пупер код и заносите данные в список , когда данные полностью получены: if и т.д.
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 11
06.05.2011, 00:35  [ТС] 15
Если интересно и есть время, можно посмотреть исходники. Коментарии и замечания приветствуются
Вложения
Тип файла: 7z AOR86II.7z (674.7 Кб, 35 просмотров)
0
06.05.2011, 00:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2011, 00:35
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru