Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91

Как сделать так, чтобы в список Combobox выводились только рабочие ком порты

10.02.2014, 17:10. Показов 4702. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно интересует такой вопрос, как сделать так, чтобы в список Combobox выводились только рабочие ком порты, если необходимо, то использую компонент CommPortDriver для работы с портами.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2014, 17:10
Ответы с готовыми решениями:

Как сделать так чтобы выводились только те элементы, которые встречаются только 2 раза?
Как сделать так чтобы выводились только те элементы, которые встречаются только 2 раза? Scanner scan = new Scanner(System.in); ...

Как сделать так, чтобы на 1 графике выводились и точки и фигура
Здравствуйте! Не могли бы помочь, дело в том, что я написал 2 закона распределения точек и не могу сделать так, чтобы на 1 графике...

Как сделать так, чтобы выводились заголовки столбцов в отчете?
Есть экспорт в Excel, но он выводит отчет без заголовков столбцов. Как сделать так, чтобы заголовки столбцов тоже выводились в отчете. ...

28
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91
18.02.2014, 14:40  [ТС]
Студворк — интернет-сервис помощи студентам
снова здравствуйте, вот вроде с передачей данных посидел и разобрался, спасибо всем огромное, теперь вопрос с приемом данных тоже через ком порт, что посоветуете почитать, может у кого завалялись простенькие программы по приему данных, буду благодарен)
0
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
18.02.2014, 19:15
Цитата Сообщение от alex198704 Посмотреть сообщение
теперь вопрос с приемом данных тоже через ком порт
вы же используете компонент
Цитата Сообщение от alex198704 Посмотреть сообщение
использую компонент CommPortDriver для работы с портами.
у него есть событие OnReceiveData: TReceiveDataEvent
Delphi
1
2
3
// Event to raise when there is data available (input buffer has data) 
    property OnReceiveData: TReceiveDataEvent read FComPortReceiveData 
                                              write FComPortReceiveData;
обработчик которого вызывается, когда что-то приходит в порт, в нем и обрабатывайте приходящие данные
1
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91
25.02.2014, 12:34  [ТС]
спасибо за помощь, но немного не получается, вообщем замкнул кабелем два компорта, посылаю команду с одного ком порта, ну и соответственно ожидаю ответа, но ничего не приходит, правильно ли я настроил прием?
вот код
Delphi
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
procedure Tform1.CommPortDriver1ReceiveData(Sender: TObject;
 DataPtr: Pointer; DataSize: Cardinal);
var
 st : String;
 p : PChar;
 mas : array[0..1000] of char;
 i : Cardinal;
begin
 i:=0;
 st:='';
 CommPortDriver1.PausePolling;
 
 p:=DataPtr;
 Move(p^,mas,DataSize);
 
for i:=0 to DataSize-1 do
begin
 st:=st+mas[i];
end;
 CommPortDriver1.FlushBuffers(true,true);
 CommPortDriver1.ContinuePolling;
For i:=1 to length(st) do
begin
Memo3.Text := Memo3.Text + st[i];
memo2.lines.add(DateTimeToStr(Now)+' ñ óñòðîéñòâà ïðèíÿòî '+memo3.text);
end;
end;
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
25.02.2014, 13:43
Цитата Сообщение от alex198704 Посмотреть сообщение
вообщем замкнул кабелем два компорта
Каким кабелем?
Цитата Сообщение от alex198704 Посмотреть сообщение
правильно ли я настроил прием?
А где код "настройки" приема?
Цитата Сообщение от alex198704 Посмотреть сообщение
procedure Tform1.CommPortDriver1ReceiveData
А программа вообще в эту процедуру заходит?
0
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91
25.02.2014, 14:16  [ТС]
кабель http://domotex.com.ua/cache/65... 007441.jpg
Delphi
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPDrv, ExtCtrls;
 
type
  TForm1 = class(TForm)
    CommPortDriver1: TCommPortDriver;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    GroupBox2: TGroupBox;
    GroupBox4: TGroupBox;
    Memo3: TMemo;
    Edit1: TEdit;
    Button4: TButton;
    ComboBox3: TComboBox;
    Timer1: TTimer;
    Label1: TLabel;
    Memo1: TMemo;
    Button2: TButton;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure CommPortDriver1ReceiveData(Sender: TObject; DataPtr: Pointer;
      DataSize: Cardinal);
    procedure Button4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// îòñåèâàåò ëèøíèå ïîðòû
 
procedure TForm1.Button1Click(Sender: TObject);
begin
CommPortDriver1.Disconnect;
CommPortDriver1.BaudRateValue:=StrToInt(ComboBox2.Text);
CommPortDriver1.PortName:=ComboBox1.Text;
CommPortDriver1.DataBits:=db8BITS;
CommPortDriver1.Connect;
if CommPortDriver1.Connect=true then begin
combobox3.Items.add(combobox1.text);
combobox1.ItemIndex:=combobox1.ItemIndex+1;
end
else
combobox1.ItemIndex:=combobox1.ItemIndex+1;
end;
 
 
procedure Tform1.CommPortDriver1ReceiveData(Sender: TObject;
 DataPtr: Pointer; DataSize: Cardinal);
var
 st : String;
 p : PChar;
 mas : array[0..1000] of char;
 i : Cardinal;
begin
 i:=0;
 st:='';
 CommPortDriver1.PausePolling;
 
 p:=DataPtr;
 Move(p^,mas,DataSize);
 
for i:=0 to DataSize-1 do
begin
 st:=st+mas[i];
end;
 CommPortDriver1.FlushBuffers(true,true);
 CommPortDriver1.ContinuePolling;
For i:=1 to length(st) do
begin
Memo3.Text := Memo3.Text + st[i];
memo2.lines.add(DateTimeToStr(Now)+' ñ óñòðîéñòâà ïðèíÿòî '+memo3.text);
end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var
f:System.Text;
begin
CommPortDriver1.Disconnect;
CommPortDriver1.BaudRateValue:=StrToInt(ComboBox2.Text);
CommPortDriver1.PortName:=ComboBox3.Text;
CommPortDriver1.DataBits:=db8BITS;
CommPortDriver1.Connect;
CommPortDriver1.SendString(Edit1.Text + #13#10);
memo2.lines.add(DateTimeToStr(Now)+' íà ïîðò '+ComboBox3.Text+' îòïðàâëåíî '+edit1.text);
//memo2.lines.add(DateTimeToStr(Now)+' ñ óñòðîéñòâà ïðèíÿòî '+memo3.text);
AssignFile(f,'log_'+DateToStr(Now)+'.txt');
Rewrite(f);
WriteLn(f, memo2.text);
closefile(f);
 
 
end;
 
//ïðîâåðÿåò ðàáî÷èå êîì ïîðòû
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Click;
if combobox1.ItemIndex=9 then
timer1.Enabled:=false;
end;
 
 
 
 
end.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
25.02.2014, 14:26
Цитата Сообщение от alex198704 Посмотреть сообщение
Кабель-то надеюсь кроссовый, а не обычный удлинитель.
Цитата Сообщение от alex198704 Посмотреть сообщение
Код Delphi
Чего-то я не понял. Это что один и тот же компонент и посылает данные и принимает?
0
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91
25.02.2014, 14:37  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Чего-то я не понял. Это что один и тот же компонент и посылает данные и принимает?
угумс, один и тот же...
кажись начинаю понимать к чему клоните) необходимо два компонента, и соответственно настройки для каждого должны быть разные?)
а в случае если подключить на другой конец кабеля устройство, то для приема от него сигнала необходимо тоже 2 компонента?
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
25.02.2014, 15:29
Цитата Сообщение от alex198704 Посмотреть сообщение
кажись начинаю понимать к чему клоните) необходимо два компонента, и соответственно настройки для каждого должны быть разные?)
Настройки должны быть одинаковые. Но порты то разные! Не может же один компонент одновременно работать и с СОМ1 и с СОМ2 например.
Цитата Сообщение от alex198704 Посмотреть сообщение
а в случае если подключить на другой конец кабеля устройство, то для приема от него сигнала необходимо тоже 2 компонента?
Нет.
0
3 / 3 / 2
Регистрация: 10.02.2014
Сообщений: 91
25.02.2014, 17:24  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Настройки должны быть одинаковые. Но порты то разные! Не может же один компонент одновременно работать и с СОМ1 и с СОМ2 например.
исправил, но что-то все равно нету никакого приема...наверное как оыбчно что-то забыл исправить)

Добавлено через 1 час 21 минуту
Delphi
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPDrv, ExtCtrls;
 
type
  TForm1 = class(TForm)
    CommPortDriver1: TCommPortDriver;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    GroupBox2: TGroupBox;
    GroupBox4: TGroupBox;
    Memo3: TMemo;
    Edit1: TEdit;
    Button4: TButton;
    ComboBox3: TComboBox;
    Timer1: TTimer;
    Label1: TLabel;
    Memo1: TMemo;
    Button2: TButton;
    Memo2: TMemo;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    CommPortDriver2: TCommPortDriver;
    procedure Button1Click(Sender: TObject);
    procedure CommPortDriver2ReceiveData(Sender: TObject; DataPtr: Pointer;           //
      DataSize: Cardinal);
    procedure Button4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// îòñåèâàåò ëèøíèå ïîðòû
 
procedure TForm1.Button1Click(Sender: TObject);
begin
CommPortDriver1.Disconnect;
CommPortDriver1.BaudRateValue:=StrToInt(ComboBox2.Text);
CommPortDriver1.PortName:=ComboBox1.Text;
CommPortDriver1.DataBits:=db8BITS;
CommPortDriver1.Connect;
if CommPortDriver1.Connect=true then begin
combobox3.Items.add(combobox1.text);
 
combobox4.Items.add(combobox1.text);                  //
 
combobox1.ItemIndex:=combobox1.ItemIndex+1;
 
 
end
else
combobox1.ItemIndex:=combobox1.ItemIndex+1;
end;
 
 
procedure Tform1.CommPortDriver2ReceiveData(Sender: TObject;        //
 DataPtr: Pointer; DataSize: Cardinal);
var
 st : String;
 p : PChar;
 mas : array[0..1000] of char;
 i : Cardinal;
begin
 i:=0;
 st:='';
 CommPortDriver2.PausePolling;                                      //
 
 p:=DataPtr;
 Move(p^,mas,DataSize);
 
for i:=0 to DataSize-1 do
begin
 st:=st+mas[i];
end;
 CommPortDriver2.FlushBuffers(true,true);                       //
 CommPortDriver2.ContinuePolling;                              //
For i:=1 to length(st) do
begin
Memo3.Text := Memo3.Text + st[i];
memo2.lines.add(DateTimeToStr(Now)+' ñ óñòðîéñòâà ïðèíÿòî '+memo3.text);
end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var
f:System.Text;
begin
 
CommPortDriver2.Disconnect;                                               //
CommPortDriver2.BaudRateValue:=StrToInt(ComboBox5.Text);                   //
CommPortDriver2.PortName:=ComboBox4.Text;                                  //
CommPortDriver2.DataBits:=db8BITS;                                         //
CommPortDriver2.Connect;                                                   //
 
CommPortDriver1.Disconnect;
CommPortDriver1.BaudRateValue:=StrToInt(ComboBox2.Text);
CommPortDriver1.PortName:=ComboBox3.Text;
CommPortDriver1.DataBits:=db8BITS;
CommPortDriver1.Connect;
CommPortDriver1.SendString(Edit1.Text + #13#10);
memo2.lines.add(DateTimeToStr(Now)+' íà ïîðò '+ComboBox3.Text+' îòïðàâëåíî '+edit1.text);
 
//memo2.lines.add(DateTimeToStr(Now)+' ñ óñòðîéñòâà ïðèíÿòî '+memo3.text);
AssignFile(f,'log_'+DateToStr(Now)+'.txt');
Rewrite(f);
WriteLn(f, memo2.text);
closefile(f);
 
 
end;
 
//ïðîâåðÿåò ðàáî÷èå êîì ïîðòû
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Click;
if combobox1.ItemIndex=9 then
timer1.Enabled:=false;
end;
 
 
 
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2014, 17:24

Как сделать так чтобы при нажатии клавиш выводились цифры на рисунке?
Здравствуйте, дорогие читатели! У нас в этой четверти идет проект по информатике и нам нужно создать собственную программу в паскале, так...

Сделать так, чтобы ComboBox отображал Список Учителей ФИО
всем привет, у меня такой вопрос, у меня на 1ой форме есть DBComboBox1, и DBGrid1 на 2ой форме(База данных на ней) не могу сделать так,...

Как сделать так чтобы считывался пробел и не выводились несколько раз повторенные символы
Как сделать так чтобы считывался пробел и не выводились несколько раз повторенные символы Вот код программы: ...

Как сделать так, чтобы при клике на рубрику выводились все записи, что в этой рубрике
На страницу выводятся рубрики. Как сделать так, чтобы при клике на рубрику выводились все записи, что в этой рубрике?

Как в VB сделать так, чтобы, если у юзера больше одного мыла, то они выводились бы в столбик в ТЕХТ'е?
Есть база, в ней две таблицы, где 1) FRIEND с полями: id_user, user_name 2) EMAIL, с полями: id, id_user1, email. В полях FRIEND – id_user...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru