Size: a a a

2020 May 12

AS

Alexey Shumkin in Delphi & Lazarus
PTyTb
то есть при инициализации каждого модуля мне нужно будет передавать компонент с портом, я все верно понял?
я не уверен.. я не в курсе твоей терминологии и проблематики
источник

P

PTyTb in Delphi & Lazarus
type
 TCorzina = class(TObject)
   serial: TSdpoSerial;
   timeDelay: integer;
 private

 public
   procedure setTimeDelay(timed: integer);
   function CheckLRC(ins: string): string;
   function MyHexToBin(Hexadecimal: string): string;
 end;

 TModul = class(TCorzina)
   adress: integer;
   CheckSum: boolean;
   MyName: string;
 private

 public
   procedure getMyName();
 end;

 Tm87017 = class(TModul) // чтение 8-и аналоговых датчиков

 private

 public
   function ReadChanelString(ch:integer):string;
   function ReadChanelFloat(ch:integer):double;
   procedure ReadAll(var res: array of double);
 end;

 Tm87064 = class(TModul)  // модуль на 4 реле

 private

 public
   function ReadChanel(ch:integer):boolean;
   function SetChanel(ch:integer; state:boolean);
   procedure ReadAll(var res: array of boolean);
 end;
источник

AS

Alexey Shumkin in Delphi & Lazarus
PTyTb
что бы передать компонент порта всем модулям Tm87017..Tm87064
зачем?..

какую бизнес-задачу ты решаешь?
источник

AS

Alexey Shumkin in Delphi & Lazarus
PTyTb
type
 TCorzina = class(TObject)
   serial: TSdpoSerial;
   timeDelay: integer;
 private

 public
   procedure setTimeDelay(timed: integer);
   function CheckLRC(ins: string): string;
   function MyHexToBin(Hexadecimal: string): string;
 end;

 TModul = class(TCorzina)
   adress: integer;
   CheckSum: boolean;
   MyName: string;
 private

 public
   procedure getMyName();
 end;

 Tm87017 = class(TModul) // чтение 8-и аналоговых датчиков

 private

 public
   function ReadChanelString(ch:integer):string;
   function ReadChanelFloat(ch:integer):double;
   procedure ReadAll(var res: array of double);
 end;

 Tm87064 = class(TModul)  // модуль на 4 реле

 private

 public
   function ReadChanel(ch:integer):boolean;
   function SetChanel(ch:integer; state:boolean);
   procedure ReadAll(var res: array of boolean);
 end;
лучше на pastebin.com
источник

P

PTyTb in Delphi & Lazarus
автоматизация центральных тепловых пунктов
источник

GB

George Bakhtadze in Delphi & Lazarus
PTyTb
автоматизация центральных тепловых пунктов
модуль разве является корзиной?
источник

P

PTyTb in Delphi & Lazarus
источник

P

PTyTb in Delphi & Lazarus
нет
источник

GB

George Bakhtadze in Delphi & Lazarus
PTyTb
нет
если ответ на мой вопрос, то  тогда нефиг его наследовать от корзины
источник

P

PTyTb in Delphi & Lazarus
George Bakhtadze
если ответ на мой вопрос, то  тогда нефиг его наследовать от корзины
что бы у всех кто наследует TModul был доступ к serial: TSdpoSerial
источник

GB

George Bakhtadze in Delphi & Lazarus
PTyTb
что бы у всех кто наследует TModul был доступ к serial: TSdpoSerial
ну так в TModul и положи ссылку на это
источник

P

PTyTb in Delphi & Lazarus
George Bakhtadze
ну так в TModul и положи ссылку на это
Corzina: TCorzina; так? но разве не придется каждые раз создавая модуль создавать и корзину?
источник

GB

George Bakhtadze in Delphi & Lazarus
PTyTb
Corzina: TCorzina; так? но разве не придется каждые раз создавая модуль создавать и корзину?
если надо что-то из корзины, то да, ссылку на корзину. один раз ее создал и раздал модулям ссылки. это ж основы
источник

P

PTyTb in Delphi & Lazarus
George Bakhtadze
если надо что-то из корзины, то да, ссылку на корзину. один раз ее создал и раздал модулям ссылки. это ж основы
через create передавать TModul уже созданный экземпляр класса TCorzina. логично, спасибо
источник

SB

Sergey Bodrov in Delphi & Lazarus
TChannelData = record
 ID: Integer;
 RxData: array of Byte;
 TxData: array of Byte;
end;

TI87017Module = class
public
 ComPort: TComPort;
 Channels: array[0..19] of TChannelData;
 procedure ReadData(ChanID: Integer; var Data: array of Byte);
 procedure WriteData(ChanID: Integer; const Data: array of Byte);
end;
источник

SB

Sergey Bodrov in Delphi & Lazarus
В модуле 1 последовательный порт и 10 (или 20) каналов. Так и делай.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Периодически нужно читать ком-порт, разгребать полученные данные и раскидывать по каналам в свойство RxData. И заодно собирать данные для отправки из свойств TxData, трансформировать в протокол модуля и отправлять в порт.
источник

SB

Sergey Bodrov in Delphi & Lazarus
А, это же модуль ввода, TxData не нужно.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Я обычно создаю метод класса Tick(), который вызывается с маленькими интервалами по таймеру или в цикле фонового процесса. И в нем происходит чтение из порта, отправка команд и данных.
источник

P

PTyTb in Delphi & Lazarus
Sergey Bodrov
Я обычно создаю метод класса Tick(), который вызывается с маленькими интервалами по таймеру или в цикле фонового процесса. И в нем происходит чтение из порта, отправка команд и данных.
ну я читаю ответ после паузы сразу для каждого модуля свои методы которые возвращают уже сформированные данные
источник