Создавал я недавно подобную темку:
http://radiokot.ru/forum/viewtopic.php?t=21002
Но та тема была про другие весы.
Сейчас в моем распоряжении весы CAS AD
Нашел к ним описание протокола обмена:
_______________________
I. Протокол передачи по стабилизации веса.
1) ПЕРЕДАЧА ДАННЫХ ПОСЛЕ ВКЛЮЧЕНИЯ ВЕСОВ. После выключения весов и прохождения начального теста весы посылают в порт 2 байта, шестнадцатиричные значения которых : 18 0D.
2) ПЕРЕДАЧА ДАННЫХ ПОСЛЕ СТАБИЛИЗАЦИИ ВЕСА. После обнулений показаний веса (обязательно), установить груз на платформу. После стабилизации веса в порт уходит 48 байт, если производилось первое измерение (после включения или после обнуления отчетов) или 24 байта (начиная со второго измерения). В случае 48-ми байтной посылки первые 24 байта – « Count Weight/kg» в кодах ASCII. Следующие 24 байта – как во всех следующих посылках, где первые 6 байт – номер измерения, с 7 по 23 байт – вес, 24 байт – 0D (hex). Номер измерения и вес передаются в кодах ASCII.
Пример.
После стабилизации веса весы передают в порт следующие данные (в шестнадцатиричном виде):
20 20 20 20 30 32 20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 2E 35 0D
В кодах ASCII это « 02 12.5». Измерение №02, вес – 12.5 кг.
3) ПЕРЕДАЧА ИТОГОВЫХ ДАННЫХ ПОСЛЕ КРАТКОВРЕМЕННОГО НАЖАТИЯ КЛАВИШИ «*».
После нажатия на весах клавиши «*», в порт передаются итоги всех взвешиваний (с момента включения весов в сеть или с момента последнего нажатия клавиши «*»). После передачи итоги взвешиваний обнуляются. В порт передается 52 байта.
ASCII : «………………..Sum Total 104.5»
II. Протокол передачи по внешнему запросу PC.
ВЕСЫ КОМПЬЮТЕР
1. Компьютер посылает байт ENQ
ENQ(05 hex)
<2>
приходит ответ, запрос
аннулируется
DC1(11 hex) или DC2(12 hex) 3. Компьютер посылает запрос DC1
<--------------------------- или DC2
4. Весы передают блок данных
Состав данных при запросе DC1
SOH STX STA SIGN W5 W4 W3 W2 W1 W0 UN1 UN0 BCC ETX EOT
команды блок данных команды
STA - признак стабильности веса. Если вес стабилен - значение "S", если нестабилен - "U".
SIGN - знак веса: отрицательный вес: "-", нулевой или положительный вес: " ", перегрузка: "F"
от W5 до W0 - значение веса, при перегрузке - значения "F"
UN1 и UN0 - единица измерения kg или lb
BCC - контрольный байт
Состав данных при запросе DC2
SOH STX P7 P6 P5 P4 P3 P2 P1 P0 BCC ETX
STX STA SIGN W5 W4 W3 W2 W1 W0 UN1 UN0 BCC ETX
STX P7 P6 P5 P4 P3 P2 P1 P0 BCC ETX EOT
STA - признак стабильности веса. Если вес стабилен - значение "S", если нестабилен - "U".
SIGN - знак веса: отрицательный вес: "-", нулевой или положительный вес: " ", перегрузка: "F"
от W5 до W0 - значение веса, при перегрузке - значения "F"
от P7 до P0 - в верхней таблице - цена, в нижней - стоимость, при переполнение - значения "F"
UN1 и UN0 - единица измерения kg или lb
BCC - контрольный байт
_______________
А теперь что вышло на практике
1. Запускаю терминалку, выключаю весы, включаю.
Вместо значения
18 0D
почему-то весы посылают 18пробел
2. Пытаюсь команду на считывание веса послать - ничего не получается.
Уж что я только не посылал:
ENQ
05
И так и этак...
Где засада?
P.S.
Одно могу сказать, что распайку кабеля для подключения весов я сделал правильно.
Т.к. тестовая программа считывания веса по команде с компа вес выводит правильно (эта прога скачана с просторов инета).
http://radiokot.ru/forum/viewtopic.php?t=21002
Но та тема была про другие весы.
Сейчас в моем распоряжении весы CAS AD
Нашел к ним описание протокола обмена:
_______________________
I. Протокол передачи по стабилизации веса.
1) ПЕРЕДАЧА ДАННЫХ ПОСЛЕ ВКЛЮЧЕНИЯ ВЕСОВ. После выключения весов и прохождения начального теста весы посылают в порт 2 байта, шестнадцатиричные значения которых : 18 0D.
2) ПЕРЕДАЧА ДАННЫХ ПОСЛЕ СТАБИЛИЗАЦИИ ВЕСА. После обнулений показаний веса (обязательно), установить груз на платформу. После стабилизации веса в порт уходит 48 байт, если производилось первое измерение (после включения или после обнуления отчетов) или 24 байта (начиная со второго измерения). В случае 48-ми байтной посылки первые 24 байта – « Count Weight/kg» в кодах ASCII. Следующие 24 байта – как во всех следующих посылках, где первые 6 байт – номер измерения, с 7 по 23 байт – вес, 24 байт – 0D (hex). Номер измерения и вес передаются в кодах ASCII.
Пример.
После стабилизации веса весы передают в порт следующие данные (в шестнадцатиричном виде):
20 20 20 20 30 32 20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 2E 35 0D
В кодах ASCII это « 02 12.5». Измерение №02, вес – 12.5 кг.
3) ПЕРЕДАЧА ИТОГОВЫХ ДАННЫХ ПОСЛЕ КРАТКОВРЕМЕННОГО НАЖАТИЯ КЛАВИШИ «*».
После нажатия на весах клавиши «*», в порт передаются итоги всех взвешиваний (с момента включения весов в сеть или с момента последнего нажатия клавиши «*»). После передачи итоги взвешиваний обнуляются. В порт передается 52 байта.
ASCII : «………………..Sum Total 104.5»
II. Протокол передачи по внешнему запросу PC.
ВЕСЫ КОМПЬЮТЕР
1. Компьютер посылает байт ENQ
ENQ(05 hex)
<2>
приходит ответ, запрос
аннулируется
DC1(11 hex) или DC2(12 hex) 3. Компьютер посылает запрос DC1
<--------------------------- или DC2
4. Весы передают блок данных
Состав данных при запросе DC1
SOH STX STA SIGN W5 W4 W3 W2 W1 W0 UN1 UN0 BCC ETX EOT
команды блок данных команды
STA - признак стабильности веса. Если вес стабилен - значение "S", если нестабилен - "U".
SIGN - знак веса: отрицательный вес: "-", нулевой или положительный вес: " ", перегрузка: "F"
от W5 до W0 - значение веса, при перегрузке - значения "F"
UN1 и UN0 - единица измерения kg или lb
BCC - контрольный байт
Состав данных при запросе DC2
SOH STX P7 P6 P5 P4 P3 P2 P1 P0 BCC ETX
STX STA SIGN W5 W4 W3 W2 W1 W0 UN1 UN0 BCC ETX
STX P7 P6 P5 P4 P3 P2 P1 P0 BCC ETX EOT
STA - признак стабильности веса. Если вес стабилен - значение "S", если нестабилен - "U".
SIGN - знак веса: отрицательный вес: "-", нулевой или положительный вес: " ", перегрузка: "F"
от W5 до W0 - значение веса, при перегрузке - значения "F"
от P7 до P0 - в верхней таблице - цена, в нижней - стоимость, при переполнение - значения "F"
UN1 и UN0 - единица измерения kg или lb
BCC - контрольный байт
_______________
А теперь что вышло на практике
1. Запускаю терминалку, выключаю весы, включаю.
Вместо значения
18 0D
почему-то весы посылают 18пробел
2. Пытаюсь команду на считывание веса послать - ничего не получается.
Уж что я только не посылал:
ENQ
05
И так и этак...
Где засада?
P.S.
Одно могу сказать, что распайку кабеля для подключения весов я сделал правильно.
Т.к. тестовая программа считывания веса по команде с компа вес выводит правильно (эта прога скачана с просторов инета).
