Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 21:48   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

- свойство Port текстовое, забейте в combobox список и выбирайте на здоровье...

- по нажатию кнопки отсылайте то, что в memo1, например последнюю строку - memo1.lines[memo1.lines.count-1] с проверкой не пуста-ли...

- принятые данные выводите в событии onRXchar... скрины зачем приведены? смотрите на них.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.01.2010, 22:26   #12
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
BComPort1.Port:=combobox1.Text;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
EnumComPorts(ComboBox1.Items);
BComPort1.Port := ComboBox1.Text;
if ComboBox1.Items.Text = '' then
showmessage('Port not found')
end;

procedure TForm1.BComPort1RxChar(Sender: TObject; Count: Integer);
begin
Memo1.Lines.Add();
end;
как заставить BComPort1RxChar выводить текст в мемо?
fize вне форума Ответить с цитированием
Старый 04.01.2010, 23:28   #13
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
procedure TForm1.BComPort1RxChar(Sender: TObject; Count: Integer);
var str: string;
    buf: array[1..255] of Byte;
    i: integer;
begin
 BComPort1.Read(buf, count);
 str:= '';
 for i:= 1 to Count do str:= str + Chr(buf[i]);
 memo1.lines.add(str)
ммм... и посмотрите как это реализовано в <io.pas> поста #12, многое станет понятно.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.01.2010, 00:14   #14
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 EnumComPorts(ComboBox1.Items);
 BComPort1.Port := ComboBox1.Text;
if ComboBox1.Items.Text = '' then
 showmessage('Port not found')
end;

procedure TForm1.BComPort1RxChar(Sender: TObject; Count: Integer);
var
 s: string;
 buf: array[1..255] of Byte;
 i: integer;
begin
 BComPort1.Read(buf, count);
 s:= '';
for i:= 1 to Count do s:= s + Chr(buf[i]);
 memo1.lines.add(s)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 BComPort1.Port := ComboBox1.Text;
 BComPort1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if BComPort1.Connected then
  begin
    BComPort1.WriteStr(Edit1.Text);
    Edit1.Text := '';
    Edit1.SetFocus;
  end;
end;
вроде коннект есть, но при посылке ат команды в мемо1 появляется эта команда а ответа нету.
p.s в гипертерминале ответ есть.
fize вне форума Ответить с цитированием
Старый 05.01.2010, 00:20   #15
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

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


procedure TForm1.Button1Click(Sender: TObject);
begin
bcomport1.Open;
bcomport1.WriteStr(s);
memo1.Lines.Add(s);
end;

а принимаю команды вот так

procedure TForm1.BComPort1RxChar(Sender: TObject; Count: Integer);
var str: string;
buf: array[1..255] of Byte;
i: integer;
begin
BComPort1.Read(buf, count);
str:= '';
for i:= 1 to Count do begin str:= str + Chr(buf[i]); end;
memo1.lines.add(str)
end;

подскажите чё я зделал нетак. Пллиз!!!!!
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 05.01.2010, 00:51   #16
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

попробуйте так...
Код:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var str: string;
begin
 comport1.ReadStr(str, count); 
 memo1.lines.add(str)
end;
не забывайте настроить таймауты, размер буфера и скорость... для адекватного сравнения сделайте так как в гипертерминале.
зы: загляните еще >>> сюда <<< тема достаточно обсуждалась.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 05.01.2010 в 00:56.
raxp вне форума Ответить с цитированием
Старый 05.01.2010, 01:35   #17
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

подскажите. вот так не работает-
Цитата:
procedure TForm1.Button2Click(Sender: TObject);
begin
BComPort1.WriteStr(edit1.Text);
end;
а вот так работает-
Цитата:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then
begin
BComPort1.WriteStr(Edit1.Text + Key);
end;
end;
что ей надо?
fize вне форума Ответить с цитированием
Старый 05.01.2010, 03:07   #18
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

до сих пор причина непонятна
fize вне форума Ответить с цитированием
Старый 05.01.2010, 03:11   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
BComPort1.WriteStr(edit1.Text+#13);
end;
а если так?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2010, 03:14   #20
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

нда.. 2 часа просидел а решение было близко.
raxp и Пепел Феникса огромное спасибо.
p.s всетаки интерестно что дает #13?
fize вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог try. beemoto Общие вопросы Delphi 16 16.12.2009 18:33
Подскажите пожалуйста аналог в 2007 Microsoft Office Spreadsheet 10.0 vladtr Microsoft Office Access 0 05.11.2009 09:06
Аналог Sleep() Ants Общие вопросы Delphi 2 18.11.2008 13:11
Аналог with на С++. Иллидан Общие вопросы C/C++ 1 16.05.2008 21:41
Подскажите как сделать аналог Felix Zeraim Свободное общение 2 07.03.2008 17:55