Topic: [Скрипт] COM порт (чтение и запись)

COM порт (чтение и запись), работа с классом TComPort



Начиная с версии 3.0b


Проект с примером:

Post's attachments

Attachment icon COM port.zip 4.73 kb, 758 downloads since 2016-12-12 

Dmitry.

2 (edited by arturas1028 2017-08-23 18:01:57)

Re: [Скрипт] COM порт (чтение и запись)

Подскажите, как сделать так, что бы данные с порта отображались в одной строчке. Поясню. Хочу подключить весы и видеть информацию о весе. Примерно, как на рисунке. Спасибо.

Post's attachments

Attachment icon MAIN.jpg 32.61 kb, 414 downloads since 2017-08-23 

Re: [Скрипт] COM порт (чтение и запись)

Покажите пожалуйста, что именно передают весы через COM порт.

Dmitry.

Re: [Скрипт] COM порт (чтение и запись)

Примерно так:

hh,kk,pppppppp,uu<CR LF>

Где:

hh
ST Stability of the display
US Instability of the display
, Comma character
kk
NT Net Weight
GS Gross Weight
, Comma character
pppppppp
8 digits (including any sign and decimal point) which identify the weight. The insignificant digits are
filled with spaces. Through the MVOL and RAZF command the indicator transmits the relative
value on 10 digits instead of 8.
, Comma character
uu
Unit of measurement "kg" "bg" "bt" "lb" "mv" (microvolts) "vv" (converter points)
<CR LF>
Carriage Return + Line Feed (ASCII decimal character 13 and 10).

Отображаться должно pppppppp и uu
Спасибо.

Re: [Скрипт] COM порт (чтение и запись)

попробуйте так

procedure OnRecieveComData(Sender: TObject; Data: string);
var
    arrValues: array of string;
begin
  arrValues := SplitString(Data, ',');
  if Length(arrValues)=4 then
  begin
      if arrValues[0]='ST' then Form1.Edit1.Text := arrValues[2] +' '+ arrValues[3];
  end;

end;
Dmitry.

6 (edited by arturas1028 2017-08-29 17:19:32)

Re: [Скрипт] COM порт (чтение и запись)

Здравствуйте. Я заметил, что данные считываються только по нажатии окна ComboBox1. Если его быстро кликать, информация отображаеться в окне Edit1. Если не кликать, информация непринимаеться. Прилагаю изменённый проект и скриншоты. Подскажите, как это исправить. Зараннее благодарен.

Post's attachments

Attachment icon 1.png 138.51 kb, 343 downloads since 2017-08-29 

Re: [Скрипт] COM порт (чтение и запись)

Далее

Post's attachments

Attachment icon 2.png 119.84 kb, 333 downloads since 2017-08-29 

8 (edited by arturas1028 2017-08-29 17:18:14)

Re: [Скрипт] COM порт (чтение и запись)

И

Post's attachments

Attachment icon COM port.zip 326.63 kb, 575 downloads since 2017-08-29 

Re: [Скрипт] COM порт (чтение и запись)

Странно, нажатие на ComboBox не должно оказывать никакого влияния, т.к. у данного компонента нет привязанного действия на нажатие.


Возможно проблема с прорисовкой значения, чтобы проверить это, попробуй вместо нажатия на ComboBox, перетаскивать окно за пределы экрана, будет ли при этом обновляться значение?

Dmitry.

10 (edited by arturas1028 2017-08-30 14:40:20)

Re: [Скрипт] COM порт (чтение и запись)

Да, меняеться.. Что делать далее?

Re: [Скрипт] COM порт (чтение и запись)

arturas1028 wrote:

Да, меняеться.. Что делать далее?

К сожалению протестировать не могу, нет com устройства.


Добавил для компонента метод Repaint который должен его принудительно перерисовать.
Скачайте пожалуйста последнюю бета версию 3.6b
https://www.dropbox.com/s/4rfukqr2r1awq … b.zip?dl=0


попробуйте так

procedure OnRecieveComData(Sender: TObject; Data: string);
var
    arrValues: array of string;
begin
  arrValues := SplitString(Data, ',');
  if Length(arrValues)=4 then
  begin
     if arrValues[0]='ST' then
      Form1.Edit1.Text := arrValues[2] +' '+ arrValues[3];
      Form1.Edit1.Repaint;
  end;
  //begin
  //Form1.Memo1.Lines.Add(Data);
//end;

end;
Dmitry.

12 (edited by arturas1028 2017-09-01 15:34:13)

Re: [Скрипт] COM порт (чтение и запись)

Нет, к сожалению неработает.
Похоже, что функция Repaint или неработает, или не в ней проблема. Когда в скрипте, я отключаю её с помощью // , ничего не меняеться. Данные принимаються только во время нажатия мышки практически в любом месте открытого окна программы. То есть, если постоянно кликать левую кнопку мыши, желательно вверху окна, во время совпадения передачи данных и клика мыши, результат отображаеться. Если не кликать, горит последний полученный результат.
Кстати, дома в качестве Com устройства я использую плату Arduino. А на работе уже полноценный весовой индикатор.

Re: [Скрипт] COM порт (чтение и запись)

К сожалению настоящего COM устройства нет, протестировал работу с виртуальным COM портом, работает.


Если я правильно понял данная ошибка проявляется и на другом компьютере тоже?


попробуйте вместо

Form1.Edit1.Repaint;

написать

Form1.Edit1.Visible := False;
Application.ProcessMessages;
Form1.Edit1.Visible := True;
Dmitry.

Re: [Скрипт] COM порт (чтение и запись)

Незнаю, но у меня неработает. Всё тоже самое, что и было. Работает только по нажатию мышки. Завтра попробую на работе с другим компом и с весовым индикатором. Спасибо.

15 (edited by arturas1028 2017-09-05 10:03:02)

Re: [Скрипт] COM порт (чтение и запись)

И на рабочем компе неработает. Пробовал даже на Windows XP, всё тоже самое. Кстати, при работе с весовым индикатором, вообще трудно поймать момент, чтобы цифры высветились в окне Edit1.

Re: [Скрипт] COM порт (чтение и запись)

arturas1028 wrote:

И на рабочем компе неработает. Пробовал даже на Windows XP, всё тоже самое. Кстати, при работе с весовым индикатором, вообще трудно поймать момент, чтобы цифры высветились в окне Edit1.

ради интереса попробуйте данный вариант с таймером:

Post's attachments

Attachment icon COM port_fixed.zip 5.94 kb, 590 downloads since 2017-09-05 

Dmitry.

Re: [Скрипт] COM порт (чтение и запись)

Нет, неработает.

18 (edited by arturas1028 2017-09-11 15:15:24)

Re: [Скрипт] COM порт (чтение и запись)

Больше вариантов не будет? Хотелось-бы увидеть ещё какие-то решения этой проблемы. Спасибо.

Re: [Скрипт] COM порт (чтение и запись)

arturas1028 wrote:

Больше вариантов не будет? Хотелось-бы увидеть ещё какие-то решения этой проблемы. Спасибо.

к сожалению ничего другого не могу пока придумать, нужно для теста какое либо com устройство. Где то у меня был GPS приемник, попробую найти и протестировать.

Dmitry.

Re: [Скрипт] COM порт (чтение и запись)

Ок, буду с нетерпением ждать.

Re: [Скрипт] COM порт (чтение и запись)

Здравствуйте. Я никак неуспокоюсь. Скажите, а может можно проделать это через Ethernet TCP/IP сеть?