Topic: [Скрипт] COM порт (чтение и запись)
COM порт (чтение и запись), работа с классом TComPort
Начиная с версии 3.0b
Проект с примером:
My Visual Database → FAQ → [Скрипт] COM порт (чтение и запись)
COM порт (чтение и запись), работа с классом TComPort
Начиная с версии 3.0b
Проект с примером:
Подскажите, как сделать так, что бы данные с порта отображались в одной строчке. Поясню. Хочу подключить весы и видеть информацию о весе. Примерно, как на рисунке. Спасибо.
Покажите пожалуйста, что именно передают весы через 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
Спасибо.
попробуйте так
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;
Здравствуйте. Я заметил, что данные считываються только по нажатии окна ComboBox1. Если его быстро кликать, информация отображаеться в окне Edit1. Если не кликать, информация непринимаеться. Прилагаю изменённый проект и скриншоты. Подскажите, как это исправить. Зараннее благодарен.
Далее
И
Странно, нажатие на ComboBox не должно оказывать никакого влияния, т.к. у данного компонента нет привязанного действия на нажатие.
Возможно проблема с прорисовкой значения, чтобы проверить это, попробуй вместо нажатия на ComboBox, перетаскивать окно за пределы экрана, будет ли при этом обновляться значение?
Да, меняеться.. Что делать далее?
Да, меняеться.. Что делать далее?
К сожалению протестировать не могу, нет 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;
Нет, к сожалению неработает.
Похоже, что функция Repaint или неработает, или не в ней проблема. Когда в скрипте, я отключаю её с помощью // , ничего не меняеться. Данные принимаються только во время нажатия мышки практически в любом месте открытого окна программы. То есть, если постоянно кликать левую кнопку мыши, желательно вверху окна, во время совпадения передачи данных и клика мыши, результат отображаеться. Если не кликать, горит последний полученный результат.
Кстати, дома в качестве Com устройства я использую плату Arduino. А на работе уже полноценный весовой индикатор.
К сожалению настоящего COM устройства нет, протестировал работу с виртуальным COM портом, работает.
Если я правильно понял данная ошибка проявляется и на другом компьютере тоже?
попробуйте вместо
Form1.Edit1.Repaint;
написать
Form1.Edit1.Visible := False;
Application.ProcessMessages;
Form1.Edit1.Visible := True;
Незнаю, но у меня неработает. Всё тоже самое, что и было. Работает только по нажатию мышки. Завтра попробую на работе с другим компом и с весовым индикатором. Спасибо.
И на рабочем компе неработает. Пробовал даже на Windows XP, всё тоже самое. Кстати, при работе с весовым индикатором, вообще трудно поймать момент, чтобы цифры высветились в окне Edit1.
И на рабочем компе неработает. Пробовал даже на Windows XP, всё тоже самое. Кстати, при работе с весовым индикатором, вообще трудно поймать момент, чтобы цифры высветились в окне Edit1.
ради интереса попробуйте данный вариант с таймером:
Нет, неработает.
Больше вариантов не будет? Хотелось-бы увидеть ещё какие-то решения этой проблемы. Спасибо.
Больше вариантов не будет? Хотелось-бы увидеть ещё какие-то решения этой проблемы. Спасибо.
к сожалению ничего другого не могу пока придумать, нужно для теста какое либо com устройство. Где то у меня был GPS приемник, попробую найти и протестировать.
Ок, буду с нетерпением ждать.
Здравствуйте. Я никак неуспокоюсь. Скажите, а может можно проделать это через Ethernet TCP/IP сеть?
My Visual Database → FAQ → [Скрипт] COM порт (чтение и запись)
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi