powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение данных с весов через rs232
25 сообщений из 96, страница 1 из 4
Получение данных с весов через rs232
    #37456112
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте Уважаемые !

Прошу не пинать если вопрос уже поднимался, лучше ткните носом :(

Суть задачи: Есть весы производства ФизТех с весовым терминалом Т3. Программа (серверOLE automation VES_CONTROL) предлагаемая производителем для получения веса на компе не устраивает. По этому очень чешутся руки написать самому внешнюю компоненту для 1С на Delphi.
Опыт программирования есть (хоть и не большой), но давно не занимался.

В документации к весам нашел следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
6.8 Связь с компьютером
Обмен осуществляется через последовательный порт RS-232.
Формат посылки: 8-N-1. Контроль потока нет.
Скорость обмена 9600 бод. В настройках терминала bt-003.
Скорость обмена 4800 бод. В настройках терминала bt-002.
Скорость обмена 2400 бод. В настройках терминала bt-001.
Информация передается 6 байтами.
Первый байт ASCII символ LF (0AH)
Следующие 3 байта передаваемой информации -  число в двоично-десятичном  коде, отображаемое на индикаторе.
Четвертый байт - байт состояния:

Номер бита         Содержимое бита
D0                     Три младших бита
D1                     определяют положение
D2                     десятичной точки
D3                     Флаг счетного режима
D4                     Флаг переполнения
D5                     Весы успокоены
D6                     Произведено тарирование
D7                     Знак числа

Шестой байт - ASCII символ CR (0DH)

Пример: на индикаторе:   -10,74 ru gjrfpfybz cnf,bkmys
            в порт:              0A 74 10 00 A2 0D

Хотелось бы сразу спросить может у кого есть исходники, былоб вообще шоколадно ;)

А так застопорился на мысли как эту строку (0A 74 10 00 A2 0D) преобразовать в человеческий вид.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456120
Фотография demian111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*keeper*,

0A 74 10 00 A2 0D = 10.74 классика

а лучше себе не взрывать мозг, а использовать их родной драйвер, в случае косячков будет на кого свалить :)
поверь, я тож в свое время такой фигней занимался :))
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456131
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Так вопрос-то в чём ? Ты не умеешь работать с байтами/битами ?


Складируешь принятые байты в буфер, пока не встретишь 0D, а дальше смотришь, что там лежит.

Преобразовать двоично-десятичное значение "74 10 00" в 10.74 сумеешь ? ))))
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456136
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
demian111*keeper*,

0A 74 10 00 A2 0D = 10.74 классика

а лучше себе не взрывать мозг, а использовать их родной драйвер, в случае косячков будет на кого свалить :)
поверь, я тож в свое время такой фигней занимался :))

Ну, задачка-то простая. Только тебе ещё нужно анализировать и предпоследний байт, бит D7 - там знак числа


Я в 2004 году делал интерфейс к весам CAS, работают до сих пор.
А их COM-объект глючил по страшному.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456144
Фотография demian111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorА их COM-объект глючил по страшному.
Странно, обычно на косяки производитель реагирует.
хотя в данном случае протокол обмена простой, и тем более документирован, может ты и прав.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456164
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorА их COM-объект глючил по страшному.
Спрашивается: задлянафига их вообще делают?
Для асинхронного (a-la RS232) обмена ничего лучше непосредственной работы с портом вроде бы нет...
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456207
Jude
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисdefecatorА их COM-объект глючил по страшному.
Спрашивается: задлянафига их вообще делают?
Для асинхронного (a-la RS232) обмена ничего лучше непосредственной работы с портом вроде бы нет...
у нас сейчас похожая задача, но надо данные как-то выгрызать после запроса на апач (т.е. тынца в ссылку на страничке).
а сервер и машина с сомпортом - разные. пхп говорят можно сом/оле юзать = при определенных насторойках и т.п.
пока идея есть поставить дельфовый ехе, который будет слушать сом-порт (локально) и порт - в машине. шоб по запросу с сервера мочь отдать данные (через сокеты).
вроде если дрова умеют сом - можно тоже самое реализовывать и через пхп.

может на этот случай и делают?
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456245
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вау! Не ожидал , что так быстро ответите. Спасибо!

defecatorТак вопрос-то в чём ? Ты не умеешь работать с байтами/битами ?


Складируешь принятые байты в буфер, пока не встретишь 0D, а дальше смотришь, что там лежит.

Преобразовать двоично-десятичное значение "74 10 00" в 10.74 сумеешь ? ))))

Хотелось хоть одним глазком увидеть наглядный примерчик. Получения этой самой строки и её дальнейшего разбора.

(с чужими велосипедами всегда легче ;))
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456247
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
demian111*keeper*,

0A 74 10 00 A2 0D = 10.74 классика

а лучше себе не взрывать мозг, а использовать их родной драйвер, в случае косячков будет на кого свалить :)
поверь, я тож в свое время такой фигней занимался :))

Их родной очень не устраивает. Его бы доработать, добавить универсальности и ошибки исправить.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456249
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecatordemian111*keeper*,

0A 74 10 00 A2 0D = 10.74 классика

а лучше себе не взрывать мозг, а использовать их родной драйвер, в случае косячков будет на кого свалить :)
поверь, я тож в свое время такой фигней занимался :))

Ну, задачка-то простая. Только тебе ещё нужно анализировать и предпоследний байт, бит D7 - там знак числа


Я в 2004 году делал интерфейс к весам CAS, работают до сих пор.
А их COM-объект глючил по страшному.

Может поделитесь своим ноу-хау?
Буду премного благодарен.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456294
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*keeper*Хотелось хоть одним глазком увидеть наглядный примерчик.
А в чём проблема? В MSDN приведён очень даже наглядный пример...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456329
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov*keeper*Хотелось хоть одним глазком увидеть наглядный примерчик.
А в чём проблема? В MSDN приведён очень даже наглядный пример...


Ткните носом пожалуйста.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456362
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
*keeper*defecatorпропущено...


Ну, задачка-то простая. Только тебе ещё нужно анализировать и предпоследний байт, бит D7 - там знак числа


Я в 2004 году делал интерфейс к весам CAS, работают до сих пор.
А их COM-объект глючил по страшному.

Может поделитесь своим ноу-хау?
Буду премного благодарен.

Код исключительно под весы CAS, там совсем другой протокол обмена.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456396
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*keeper*Ткните носом пожалуйста.
http://msdn.microsoft.com/en-us/library/aa363196%28v=VS.85%29.aspx
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456666
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

спасибо конечно, но думаю самостоятельно не разберусь. Там примеры на C
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456771
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
*keeper*Dimitry Sibiryakov,

спасибо конечно, но думаю самостоятельно не разберусь. Там примеры на C

Берешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456869
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

Там примеров очень много, но они все по моему не в тему.
Я вот нашел компонент TComPort вот пытаюсь что-то получить.

Никак не пойму как работать с получеными данными.
Открываю пример , который шел вместе с компонентой.
Есть исходники приложения ComExample
Вижу PortMon'ом вот такое
102319 10:47:15 ComExample.exe IRP_MJ_READ Serial0 Length 6
102319 10:47:15 SUCCESS Length 6: 0A 45 40 01 A2 0D
на табло терминала -140,50 кг
вроде все так

но как мне с этими данными работать не пойму
в терминал валятся символы
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456897
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorБерешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.Можно даже фришный TcomPort.
Успешно использовал для работы с весами CAS.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456932
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
LSVdefecatorБерешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.Можно даже фришный TcomPort

TurboPower AsyncPro на 300% фришный ))))
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456934
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
*keeper*defecator,

Там примеров очень много, но они все по моему не в тему.
Я вот нашел компонент TComPort вот пытаюсь что-то получить.

Никак не пойму как работать с получеными данными.
Открываю пример , который шел вместе с компонентой.
Есть исходники приложения ComExample
Вижу PortMon'ом вот такое
102319 10:47:15 ComExample.exe IRP_MJ_READ Serial0 Length 6
102319 10:47:15 SUCCESS Length 6: 0A 45 40 01 A2 0D
на табло терминала -140,50 кг
вроде все так

но как мне с этими данными работать не пойму
в терминал валятся символы

В общем, мне кажется, что, наверное, пора в форум работа или нанять программиста....
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456947
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

Мне хочется самому разобраться.
Но знаний и практики не хватает. По этому и обратился за помощью к Вам.
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456960
*keeper*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,
Хотя бы подскажите как работать с получеными данными.
Ну вот получил я строку из порта, что с ней дальше надо сделать, чтоб разложить по байтам и по битам (на сколько я понял надо четвертый байт разбирать по битам)
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456976
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*keeper*102319 10:47:15 SUCCESS Length 6: 0A 45 40 01 A2 0D
на табло терминала -140,50 кг
вроде все так

но как мне с этими данными работать не пойму
в терминал валятся символы

Перевести из BCD формата в двоичный, поставить правильно десятичную точку и знак:

(dat[1]+dat[2]*100+dat[3]*10000)*exp(-(dat[4] and $07)*ln(10))*(1-((dat[4] and $80) shr 6 ))

где dat:array[0..5] of byte - данные из порта. Примерно так - не проверял
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37456983
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
*keeper*defecator,
Хотя бы подскажите как работать с получеными данными.
Ну вот получил я строку из порта, что с ней дальше надо сделать, чтоб разложить по байтам и по битам (на сколько я понял надо четвертый байт разбирать по битам)

Ты получаешь не строку, а просто отдельные байты.
Складируешь их в некий буфер, пока не встретишь $0D.
Не забывать, что буфер может переполняться - мало ли, какая ошибка будет.
Если переполнение - сбрасываешь буфер, и копишь заново.

НУ я не знаю, как тебе ещё объяснить.....Как работать с массивами ? С индексами массивов ?
Могу ещё посоветовать начать читать книжки по Object Pascal....
...
Рейтинг: 0 / 0
Получение данных с весов через rs232
    #37458192
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064*keeper*102319 10:47:15 SUCCESS Length 6: 0A 45 40 01 A2 0D
на табло терминала -140,50 кг
вроде все так

но как мне с этими данными работать не пойму
в терминал валятся символы

Перевести из BCD формата в двоичный, поставить правильно десятичную точку и знак:

(dat[1]+dat[2]*100+dat[3]*10000)*exp(-(dat[4] and $07)*ln(10))*(1-((dat[4] and $80) shr 6 ))

где dat:array[0..5] of byte - данные из порта. Примерно так - не проверял

Sorry, формула преобразования bcd-bin содержит ошибку, но я уверен, что Вы разберетесь.
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 1 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение данных с весов через rs232
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]