Вверх ↑
Этот топик читают: Гость
Ответов: 109
Рейтинг: 1
#16: 2025-07-23 17:51:08 ЛС | профиль | цитата
Gunta писал(а):
2

Нет. Это я уже пробовал. Hex в Int а элемент "Com порт" конвертирует потом всё в ASCII и получается ерунда на выходе, т.е. на кабеле порта.

--- Добавлено в 2025-07-23 17:56:38

Поскольку данные в Int и данные в ASCII, даже если это одинаковые цифры,это разные вещи.

Редактировалось 1 раз(а), последний 2025-07-23 17:56:38
карма: 1

0
Ответов: 933
Рейтинг: 197
#17: 2025-07-23 18:39:21 ЛС | профиль | цитата
Andrej77rv писал(а):
Нет. Это я уже пробовал. Hex в Int а элемент "Com порт" конвертирует потом всё в ASCII и получается ерунда на выходе, т.е. на кабеле порта.


Add(Label,8931604,70,56)
{
Width=384
Height=30
Align=2
Caption=""
AutoSize=1
}
Add(MainForm,2953706,210,91)
{
Point(onClose)
link(onCreate,12485417:doOpen,[])
link(onClose,12485417:doClose,[])
}
Add(Edit,2189383,119,56)
{
Left=20
Top=5
Width=195
Text="45 52 00 1E 84 80 00 1E 84 80 01 01"
}
Add(COMEX,12485417,287,105)
{
Port=2
BaudRate=19
link(onRead,55900:doAdd,[])
}
Add(Button,9912329,70,126)
{
Left=280
Top=5
Caption="Send"
link(onClick,1310233:doReplace,[])
}
Add(Memo,55900,364,112)
{
Top=30
Width=384
Height=231
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(Replace,1310233,119,126)
{
SubStr=" "
link(onReplace,5814995:doConvert,[])
link(Str,2189383:Text,[])
}
Add(StreamConvertor,5814995,168,126)
{
Mode=3
link(onResult,12485417:doWrite,[(249,132)(249,125)])
}

карма: 19

0
Ответов: 109
Рейтинг: 1
#18: 2025-07-23 18:59:13 ЛС | профиль | цитата
Gunta писал(а):
Add(Label,8931604,70,56)....

Получилось! Спасибо. Но почему только через "Str" ?
карма: 1

0
Ответов: 933
Рейтинг: 197
#19: 2025-07-23 19:06:24 ЛС | профиль | цитата
Andrej77rv писал(а):
Получилось! Спасибо. Но почему только через "Str" ?

Хорошо. Ты должен понять, что у нас у всех нет твоего прибора и нам не на чём тестировать.
Возможно схему можно сделать и по-другому.
карма: 19

0
Ответов: 109
Рейтинг: 1
#20: 2025-07-23 19:20:51 ЛС | профиль | цитата
Gunta писал(а):
Andrej77rv писал(а):
Получилось! Спасибо. Но почему только через "Str" ?

Хорошо. Ты должен понять, что у нас у всех нет твоего прибора и нам не на чём тестировать.
Возможно схему можно сделать и по-другому.

Да прибор здесь как бы и не причем. Я смотрю Hex данные в программе перехватчике com порта.

--- Добавлено в 2025-07-23 19:23:07

Хотя Ардуино тоже заработала после этой команды и начала присылать данные с ПЗС.

Редактировалось 1 раз(а), последний 2025-07-23 19:23:07
карма: 1

0
Ответов: 8961
Рейтинг: 824
#21: 2025-07-23 22:36:03 ЛС | профиль | цитата
Andrej77rv писал(а):
почему только через "Str"
Потому, что СОЬ порт работает с БАЙТАМИ и смотреть на череду"0" и "1" совсем не информативно, а 256 символов нет ни в одном алфавите, даже в чеченском, разве что в китайском. поэтому и пользуются Первоначальным (от 1950-ых годов) набором символов. А HEX был придуман для этой цели исключительно для человеческого глаза, внутри компьютера нет никаких щестнадцатиричных символов.
Поэтому примите факт: СОМ порт принимает и передаёт СТРОКИ и больше не спрашивайте
карма: 19

0
Ответов: 109
Рейтинг: 1
#22: 2025-07-25 13:43:34 ЛС | профиль | цитата
Вывел значения на график. Одному пикселю ПЗС соотвествует 2 байта. Т.е. в Int это от 0 до 65535. Вроде всё получилось, но не понятно почему есть линии "позитива" и "негатива". Начинаешь прибавлять мощность излучения линии переходят из "негатива" в "позитив" (номер пикселя не меняется). Порог перехода пока не понял. Может кто что подскажет?



--- Добавлено в 2025-07-25 13:44:55

Сигнал подавал с ртутной лампы.

Редактировалось 2 раз(а), последний 2025-07-25 14:01:23
карма: 1

0
Ответов: 933
Рейтинг: 197
#23: 2025-07-25 14:43:50 ЛС | профиль | цитата
Andrej77rv писал(а):
Т.е. в Int это от 0 до 65535. Вроде всё получилось, но не понятно почему есть линии "позитива" и "негатива". Начинаешь прибавлять мощность излучения линии переходят из "негатива" в "позитив" (номер пикселя не меняется). Порог перехода пока не понял. Может кто что подскажет?

Скорее всего ты преобразуешь 2-байтовое число в знаковое целое число, также известное как 16-битное целое число, может представлять значения в диапазоне от -32768 до 32767
Если выложишь схему или получаемые данные то, возможно, помогут.
карма: 19

0
Ответов: 109
Рейтинг: 1
#24: 2025-07-25 14:54:41 ЛС | профиль | цитата
Gunta писал(а):
Andrej77rv писал(а):
Т.е. в Int это от 0 до 65535. Вроде всё получилось, но не понятно почему есть линии "позитива" и "негатива". Начинаешь прибавлять мощность излучения линии переходят из "негатива" в "позитив" (номер пикселя не меняется). Порог перехода пока не понял. Может кто что подскажет?

Скорее всего ты преобразуешь 2-байтовое число в знаковое целое число, также известное как 16-битное целое число, может представлять значения в диапазоне от -32768 до 32767
Если выложишь схему или получаемые данные то, возможно, помогут.


Ответ от программиста чью прогу хочу заменить

"Я не могу помочь вам с программным обеспечением, которое вы написали сами. Если вы получаете значения, выходящие за пределы диапазона 0–4095, вы делаете что-то неправильно."

Схема
https://disk.yandex.ru/d/__6vhBb6wiD0Ng

--- Добавлено в 2025-07-25 15:11:44

Понятно. Надо просто от минусового значения избавится и -32768 приравнять к нулю?

Редактировалось 1 раз(а), последний 2025-07-25 15:11:44
карма: 1

0
Ответов: 933
Рейтинг: 197
#25: 2025-07-25 15:36:42 ЛС | профиль | цитата
Пока попробуй так
https://disk.yandex.ru/d/CjWM40sPHSUuSA
Если не получится сделаю по-другому

Andrej77rv писал(а):
Понятно. Надо просто от минусового значения избавится и -32768 приравнять к нулю?

Возможно там получаемые данные BigEndian

Редактировалось 1 раз(а), последний 2025-07-25 15:37:00
карма: 19

0
Ответов: 109
Рейтинг: 1
#26: 2025-07-25 16:01:44 ЛС | профиль | цитата
Gunta писал(а):
Пока попробуй так

Нет). "Негативные" значения так же остались. Более того вы укоротили число пикселей до 2047. Не зря же у меня там таймеры стоят возле элемента "com порт". За один раз всё с него не считаваеться. Приходится за 2 захода а потом строки соединять.
карма: 1

0
Ответов: 933
Рейтинг: 197
#27: 2025-07-25 16:18:26 ЛС | профиль | цитата
Запусти программу и выложи файл – receive_data.txt
Add(MainForm,16112679,196,42)
{
Width=553
Height=117
Point(onClose)
link(onCreate,11516863:doOpen,[])
link(onClose,11516863:doClose,[])
}
Add(Button,9912329,133,154)
{
Left=5
Top=15
Width=130
Caption="Получить днные"
link(onClick,6462497:doEvent1,[])
}
Add(StreamConvertor,5814995,273,91)
{
Mode=3
link(onResult,11516863:doWrite,[(312,97)(312,76)])
}
Add(Timer,9432040,140,63)
{
Interval=3000
Enable=1
AutoStop=1
link(onTimer,16112679:doClose,[])
}
Add(Hub,6462497,182,154)
{
OutCount=5
link(onEvent1,5865439:doData,[(207,160)(207,97)])
link(onEvent5,9432040:doTimer,[(207,188)(207,202)(116,202)(116,69)])
}
Add(StreamConvertor,6062037,378,63)
{
Mode=2
link(onResult,10570596:doEnum,[])
}
Add(DoData,5865439,224,91)
{
Data=String(4552001E8480001E84800001)
link(onEventData,5814995:doConvert,[])
}
Add(Str_Enum,10570596,427,63)
{
Delimiter=""
Step=4
link(onEnum,15294039:doAdd,[])
link(onEndEnum,15294039:doSave,[(480,76)(480,97)])
}
Add(COMEX,11516863,329,56)
{
BaudRate=19
link(onRead,6062037:doConvert,[])
}
Add(StrList,15294039,490,63)
{
FileName="receive_data.txt"
Point(doSave)
}


--- Добавлено в 2025-07-25 16:23:46

Andrej77rv писал(а):
олее того вы укоротили число пикселей до 2047. Не зря же у меня там таймеры стоят возле элемента "com порт". За один раз всё с него не считаваеться.

В обычном COM ограничен размер буфера
  len := ToInteger(_Data);
if len > 4096 then len := 4096;
SetLength(Buffer, 4096);

Редактировалось 2 раз(а), последний 2025-07-25 16:34:27
карма: 19

0
Ответов: 109
Рейтинг: 1
#28: 2025-07-25 16:57:24 ЛС | профиль | цитата
Наверно снова половина данных считалась с порта. Или в асинхронном полностью читает?

https://disk.yandex.ru/d/-TopsqhO5ed31A

Редактировалось 1 раз(а), последний 2025-07-25 17:18:52
карма: 1

0
Ответов: 933
Рейтинг: 197
#29: 2025-07-25 17:32:59 ЛС | профиль | цитата
Andrej77rv писал(а):
Наверно снова половина данных считалась с порта. Или в асинхронном полностью читает?

Не половина но что-то потерялось.

Пожалуйста запусти эту схему и выложи файл - receive_data.dat

Add(MainForm,16112679,196,84)
{
Width=553
Height=117
Point(onClose)
link(onCreate,11516863:doOpen,[])
link(onClose,11516863:doClose,[])
}
Add(Button,9912329,133,196)
{
Left=5
Top=15
Width=130
Caption="Получить днные"
link(onClick,6462497:doEvent1,[])
}
Add(StreamConvertor,5814995,273,133)
{
Mode=3
link(onResult,11516863:doWrite,[(312,139)(312,118)])
}
Add(Timer,9432040,140,105)
{
Interval=3000
Enable=1
AutoStop=1
link(onTimer,16112679:doClose,[])
}
Add(Hub,6462497,182,196)
{
OutCount=5
link(onEvent1,5865439:doData,[(207,202)(207,139)])
link(onEvent5,9432040:doTimer,[(207,230)(207,244)(116,244)(116,111)])
}
Add(StreamConvertor,6062037,385,112)
{
Mode=7
link(onResult,8970819:doCopyFromStream,[])
}
Add(DoData,5865439,224,133)
{
Data=String(4552001E8480001E84800001)
link(onEventData,5814995:doConvert,[])
}
Add(COMEX,11516863,329,98)
{
Port=2
BaudRate=19
link(onSyncRead,6062037:doConvert,[])
}
Add(FileStream,8970819,441,98)
{
FileName="receive_data.dat"
Mode=1
AutoCopy=0
Point(doCopyFromStream)
}

карма: 19

0
Ответов: 109
Рейтинг: 1
#30: 2025-07-25 17:58:54 ЛС | профиль | цитата
https://disk.yandex.ru/d/hKqQY-qCOjVatA

--- Добавлено в 2025-07-25 18:01:01

Для сравнения как у меня



И как должно быть



Редактировалось 3 раз(а), последний 2025-07-25 18:27:25
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)