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

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

Суть задачи: Есть весы производства ФизТех с весовым терминалом Т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
26.09.2011, 17:36
    #37456120
demian111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
*keeper*,

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

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


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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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


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

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


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


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


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

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

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

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

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

Берешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.
...
Рейтинг: 0 / 0
27.09.2011, 10:54
    #37456869
*keeper*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
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
27.09.2011, 11:17
    #37456897
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
defecatorБерешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.Можно даже фришный TcomPort.
Успешно использовал для работы с весами CAS.
...
Рейтинг: 0 / 0
27.09.2011, 11:35
    #37456932
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
LSVdefecatorБерешь TurboPower AsyncPro, там есть компонент для работы с последовательным портом.
Изучаешь примеры и начинаешь принимать поток данных от весов.Можно даже фришный TcomPort

TurboPower AsyncPro на 300% фришный ))))
...
Рейтинг: 0 / 0
27.09.2011, 11:36
    #37456934
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
*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
27.09.2011, 11:42
    #37456947
*keeper*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
defecator,

Мне хочется самому разобраться.
Но знаний и практики не хватает. По этому и обратился за помощью к Вам.
...
Рейтинг: 0 / 0
27.09.2011, 11:46
    #37456960
*keeper*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
defecator,
Хотя бы подскажите как работать с получеными данными.
Ну вот получил я строку из порта, что с ней дальше надо сделать, чтоб разложить по байтам и по битам (на сколько я понял надо четвертый байт разбирать по битам)
...
Рейтинг: 0 / 0
27.09.2011, 11:52
    #37456976
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
*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
27.09.2011, 11:54
    #37456983
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
*keeper*defecator,
Хотя бы подскажите как работать с получеными данными.
Ну вот получил я строку из порта, что с ней дальше надо сделать, чтоб разложить по байтам и по битам (на сколько я понял надо четвертый байт разбирать по битам)

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

НУ я не знаю, как тебе ещё объяснить.....Как работать с массивами ? С индексами массивов ?
Могу ещё посоветовать начать читать книжки по Object Pascal....
...
Рейтинг: 0 / 0
28.09.2011, 00:32
    #37458192
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных с весов через rs232
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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение данных с весов через rs232 / 25 сообщений из 96, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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