Тонкости работы с COM портом

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Сообщение swa1 » 13.12.2007 16:53:16

Attid писал(а):поставь вместо {$mode objfpc} - {$mode delphi}

Теперь вобще едентично....
Attid писал(а):и пока без потоков не проверишь

Я не ахти какой программист, уже писал об этом. Поэтому вопрос:
Как организовать опрос состояния без потоков?
Аватара пользователя
swa1
новенький
 
Сообщения: 80
Зарегистрирован: 25.09.2007 11:04:08
Откуда: Ялта

Сообщение Attid » 13.12.2007 17:08:25

ну блин это даже не програмист может просто убераешь поток и все
а все что делаешь в потоке переносишь в действие по кнопке
не вчитываясь в твой пример примерно так

Код: Выделить всё
procedure TForm1.Start1Click(Sender: TObject);
begin
  if Start1.Checked then
  begin
     ser1:=TBlockserial.Create;
     if ser1.InstanceActive then Memo1.Lines.Add('1-1True') else Memo1.Lines.Add('1-1False');
     ser1.Connect(Form1.NamePort1.Text);
     Memo1.Lines.Add(IntToStr(ser1.LastError)+'-'+ser1.LastErrorDesc);
     if ser1.LastError<>0 then
     begin
       Start1.Checked:=False;
     Exit;
     end;
     ser1.Config(115200,8,'N',0,false,false);
     if ser1.InstanceActive then Memo1.Lines.Add('1-2True') else Memo1.Lines.Add('1-2False');
     Memo1.Lines.Add('открыт порт - '+ser1.Device);
     //--------------------------------
     ser1.Free;
     ser2:=TBlockserial.Create;
     if ser2.InstanceActive then Form1.Memo1.Lines.Add('2-1True') else Form1.Memo1.Lines.Add('2-1False');
    ser2.RaiseExcept:=true;
     ser2.Connect(Form1.NamePort2.Text);
     Form1.Memo1.Lines.Add(IntToStr(ser2.LastError)+'-'+ser2.LastErrorDesc);
     ser2.EnableRTSToggle(true);
     ser2.Config(115200,8,'N',0,false,false);
     if ser2.InstanceActive then Form1.Memo1.Lines.Add('2-2True') else Form1.Memo1.Lines.Add('2-2False');
     Form1.Memo1.Lines.Add('открыт порт - '+ser2.Device);
     repeat
     if ser2.CTS then Form1.CTS2.Color:=clteal else Form1.CTS2.Color:=clcream ;
     if ser2.DSR then Form1.DSR2.Color:=clteal else Form1.DSR2.Color:=clcream ;
     if Form1.P2.Color<>clLime then Form1.P2.Color:=clLime else Form1.P2.Color:=clRed ;
    Application.progressMessage;
     sleep(50);
     until Form1.Start2.Checked=False;
     Form1.Memo1.Lines.Add(IntToStr(ser2.LastError)+'-'+ser2.LastErrorDesc);
     ser2.Free;
     if ser2.InstanceActive then Form1.Memo1.Lines.Add('2-3True') else Form1.Memo1.Lines.Add('2-3False');
     //---------------------------------
  end
  else
  begin
     ser1.Free;
     Memo1.Lines.Add(IntToStr(ser1.LastError)+'-'+ser1.LastErrorDesc);
     if ser1.InstanceActive then Memo1.Lines.Add('1-3True') else Memo1.Lines.Add('1-3False');
     Memo1.Lines.Add(IntToStr(ser1.LastError)+'-'+ser1.LastErrorDesc);
  end;
     
end;
Последний раз редактировалось Attid 13.12.2007 20:54:14, всего редактировалось 1 раз.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение swa1 » 13.12.2007 20:13:50

Типа кликнул и проверил :) ?
Завтра попробую.
Аватара пользователя
swa1
новенький
 
Сообщения: 80
Зарегистрирован: 25.09.2007 11:04:08
Откуда: Ялта

Сообщение swa1 » 24.12.2007 18:28:25

Опять отвлекают работой :)

Немного попытался разобраться с потоками в lazarus и fpc и понял , что там что то недоделано. Глубже копать не позволяют знания.

К слову, я обнаружил компоненту, кому интересно:
TComport Lazarus
От автора:
This project is the conversion of the Comport Package of dejancrn and dybdahl, for lazarus pascal project. It just work on windows but in the future, I traduce it to work under lazarus for linux.

Ходить сюда:
http://sourceforge.net/projects/cportlaz/
Аватара пользователя
swa1
новенький
 
Сообщения: 80
Зарегистрирован: 25.09.2007 11:04:08
Откуда: Ялта

Сообщение Attid » 24.12.2007 19:53:50

swa1
чем тебя TBlockserial не устроил ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение swa1 » 25.12.2007 11:06:12

Attid писал(а):чем тебя TBlockserial не устроил ?
:)
Это так...к слову, увидел и решил рассказать :) , а вобще устраивает.
Хотя опять же, CPort - визуальный, для таких как я удобнее :) .

К стати, о выше решаемой проблеме, если без потоков то все работает, т.е. ошибки обрабатываются.
Последний раз редактировалось swa1 25.12.2007 12:17:01, всего редактировалось 1 раз.
Аватара пользователя
swa1
новенький
 
Сообщения: 80
Зарегистрирован: 25.09.2007 11:04:08
Откуда: Ялта

Сообщение Attid » 25.12.2007 11:46:42

swa1
мне казалось в начале топика ты что-то под линукс говорил, а он тебе в этом не поможет.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение swa1 » 25.12.2007 12:21:44

Attid писал(а):мне казалось в начале топика ты что-то под линукс говорил, а он тебе в этом не поможет.

А я и не отрекаюсь от своих слов...
Вот с http://sourceforge.net/projects/cportlaz/

Operating System: All 32-bit MS Windows (95/98/NT/2000/XP), Linux


Attid, к стати, о выше решаемой проблеме, если без потоков то все работает, т.е. ошибки обрабатываются.
Аватара пользователя
swa1
новенький
 
Сообщения: 80
Зарегистрирован: 25.09.2007 11:04:08
Откуда: Ялта

Сообщение Attid » 26.12.2007 01:18:12

swa1
ну я с первой сранице предлогал это проверить =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Тонкости работы с COM портом

Сообщение dionic » 10.07.2009 12:27:41

Привет народ! А никто не подскажет вот по такому вопросу. Как работать с com портом при помощи synaser я вроде разобрался. Сначала попробовал под win, а затем под linux. А как мне устройсво ,например, счетчик э\э через оптопорт прикрепить к com -порту=) под linux? Мне дрова под него нужны или что вообще?
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Тонкости работы с COM портом

Сообщение Mr.Smart » 10.07.2009 14:13:28

dionic писал(а):Привет народ! А никто не подскажет вот по такому вопросу. Как работать с com портом при помощи synaser я вроде разобрался. Сначала попробовал под win, а затем под linux. А как мне устройсво ,например, счетчик э\э через оптопорт прикрепить к com -порту=) под linux? Мне дрова под него нужны или что вообще?

1. Оптопорт - это просто преобразователь интерфейса.
2. Бывает 2х (покрайней мере которые я встречал) типов: USB и RS-232

В случае с RS-232 проблем с подключением небудет вообще.
Вот с USB будет интересней. В виндоус нужны будут драйверы, а под линукс скорее всего нет (он определится как устройство ttyUSB*).
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Тонкости работы с COM портом

Сообщение dionic » 10.07.2009 14:18:17

У меня оптопорт USB.
Под виндой я его подключил, да там драйвера установил и все готово, он подцепился к com3 и я с ним работаю. А вот в linux как? Я его подключаю к usb, а дальше то что? Мне нужно обращаться что ли к usb (ttyUSB), чтобы общаться с ним программно? или как?
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Тонкости работы с COM портом

Сообщение Mr.Smart » 10.07.2009 14:21:41

В линукс (если оптопорт подключился) он будет доступен как устройство ttyUSB* где * - это номер (ttyUSB1).

Добавлено спустя 1 минуту 3 секунды:
Подключи оптопорт и выполни команду
Код: Выделить всё
ls /dev/ttyUSB*
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Тонкости работы с COM портом

Сообщение dionic » 10.07.2009 14:23:58

Т. е мне необходимо посылать запросы именно на это устройство ttyUSB*? А synaser будет сним работать или нет?
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Тонкости работы с COM портом

Сообщение Mr.Smart » 10.07.2009 14:31:01

В линуксе если у утройства есть префикс tty то это значит что устройство терминальное т.е. ты можешь как читать так и писать в него.
В данном случае разници между COM портом и получунным портом для программиста нет!

п.с. Счётчик случайно не ПСЧ? :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru