Страница 3 из 9
Добавлено: 13.12.2007 15:53:16
swa1
Attid писал(а):поставь вместо {$mode objfpc} - {$mode delphi}
Теперь вобще едентично....
Attid писал(а):и пока без потоков не проверишь
Я не ахти какой программист, уже писал об этом. Поэтому вопрос:
Как организовать опрос состояния без потоков?
Добавлено: 13.12.2007 16:08:25
Attid
ну блин это даже не програмист может просто убераешь поток и все
а все что делаешь в потоке переносишь в действие по кнопке
не вчитываясь в твой пример примерно так
Код: Выделить всё
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;
Добавлено: 13.12.2007 19:13:50
swa1
Типа кликнул и проверил

?
Завтра попробую.
Добавлено: 24.12.2007 17:28:25
swa1
Опять отвлекают работой
Немного попытался разобраться с потоками в 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/
Добавлено: 24.12.2007 18:53:50
Attid
swa1
чем тебя TBlockserial не устроил ?
Добавлено: 25.12.2007 10:06:12
swa1
Attid писал(а):чем тебя TBlockserial не устроил ?
Это так...к слову, увидел и решил рассказать

, а вобще устраивает.
Хотя опять же, CPort - визуальный, для таких как я удобнее

.
К стати, о выше решаемой проблеме, если без потоков то все работает, т.е. ошибки обрабатываются.
Добавлено: 25.12.2007 10:46:42
Attid
swa1
мне казалось в начале топика ты что-то под линукс говорил, а он тебе в этом не поможет.
Добавлено: 25.12.2007 11:21:44
swa1
Attid писал(а):мне казалось в начале топика ты что-то под линукс говорил, а он тебе в этом не поможет.
А я и не отрекаюсь от своих слов...
Вот с
http://sourceforge.net/projects/cportlaz/Operating System: All 32-bit MS Windows (95/98/NT/2000/XP), Linux
Attid, к стати, о выше решаемой проблеме, если без потоков то все работает, т.е. ошибки обрабатываются.
Добавлено: 26.12.2007 00:18:12
Attid
swa1
ну я с первой сранице предлогал это проверить =)
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 12:27:41
dionic
Привет народ! А никто не подскажет вот по такому вопросу. Как работать с com портом при помощи synaser я вроде разобрался. Сначала попробовал под win, а затем под linux. А как мне устройсво ,например, счетчик э\э через оптопорт прикрепить к com -порту=) под linux? Мне дрова под него нужны или что вообще?
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 14:13:28
Mr.Smart
dionic писал(а):Привет народ! А никто не подскажет вот по такому вопросу. Как работать с com портом при помощи synaser я вроде разобрался. Сначала попробовал под win, а затем под linux. А как мне устройсво ,например, счетчик э\э через оптопорт прикрепить к com -порту=) под linux? Мне дрова под него нужны или что вообще?
1. Оптопорт - это просто преобразователь интерфейса.
2. Бывает 2х (покрайней мере которые я встречал) типов: USB и RS-232
В случае с RS-232 проблем с подключением небудет вообще.
Вот с USB будет интересней. В виндоус нужны будут драйверы, а под линукс скорее всего нет (он определится как устройство ttyUSB*).
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 14:18:17
dionic
У меня оптопорт USB.
Под виндой я его подключил, да там драйвера установил и все готово, он подцепился к com3 и я с ним работаю. А вот в linux как? Я его подключаю к usb, а дальше то что? Мне нужно обращаться что ли к usb (ttyUSB), чтобы общаться с ним программно? или как?
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 14:22:44
Mr.Smart
В линукс (если оптопорт подключился) он будет доступен как устройство ttyUSB* где * - это номер (ttyUSB1).
Добавлено спустя 1 минуту 3 секунды:Подключи оптопорт и выполни команду
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 14:23:58
dionic
Т. е мне необходимо посылать запросы именно на это устройство ttyUSB*? А synaser будет сним работать или нет?
Re: Тонкости работы с COM портом
Добавлено: 10.07.2009 14:31:01
Mr.Smart
В линуксе если у утройства есть префикс
tty то это значит что устройство терминальное т.е. ты можешь как читать так и писать в него.
В данном случае разници между COM портом и получунным портом для программиста нет!
п.с. Счётчик случайно не ПСЧ?
