как засунуть сигналы управления stx, etx в string?
-
- interested
- Сообщения: 1
- Зарегистрирован: 05 июн 2008, 22:05
- Контактная информация:
как засунуть сигналы управления stx, etx в string?
Добрый вечер.
Как говорят, инициатива наказуема ;)
Я программировал до института роботы и когда институт купил нового робота от АББ, я предложил написать новый софт для робота и изменить старую Labview-программу на компьютере.
Старый робот был подсоединён через rs232.
Вначале хотел соединить через DeviceNet, так как он намного лучше поддерживается роботом. Но пришлось отказаться от идеи, так как не смог запустить бус. Искать причину нет ни времени ни желания.
Программу для робота почти написал, соединение с компьютером по rs232.
Схема будет примерно такая:
1. запуск вручную Labview-программы
2. Labview-программа ждёт запрос от робота через rs232
3. запуск вручную робота в автоматическом режиме
4. робот делает запрос/посылает string (stx)Aktion(etx)
5a. если никакого задания нет, то компьютер ждёт 10 секунд и посылает string (stx)000(etx)
5б. если есть одно задание, то компьютер посылает сразу (stx)001(etx) или (stx)099(etx).
Не подскажете, как засунуть сигналы управления stx, etx в string?
Зарание спасибо!
Как говорят, инициатива наказуема ;)
Я программировал до института роботы и когда институт купил нового робота от АББ, я предложил написать новый софт для робота и изменить старую Labview-программу на компьютере.
Старый робот был подсоединён через rs232.
Вначале хотел соединить через DeviceNet, так как он намного лучше поддерживается роботом. Но пришлось отказаться от идеи, так как не смог запустить бус. Искать причину нет ни времени ни желания.
Программу для робота почти написал, соединение с компьютером по rs232.
Схема будет примерно такая:
1. запуск вручную Labview-программы
2. Labview-программа ждёт запрос от робота через rs232
3. запуск вручную робота в автоматическом режиме
4. робот делает запрос/посылает string (stx)Aktion(etx)
5a. если никакого задания нет, то компьютер ждёт 10 секунд и посылает string (stx)000(etx)
5б. если есть одно задание, то компьютер посылает сразу (stx)001(etx) или (stx)099(etx).
Не подскажете, как засунуть сигналы управления stx, etx в string?
Зарание спасибо!
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: как засунуть сигналы управления stx, etx в string?
String можно представить в HEX-коде. Как я понимаю STX и RTX являются не ASCII-знаками, но их можно выразить в 16-тиричном коде.
Кликни на String-константу правой кнопкой и выбери HEX, а потом вписывай туда байты.
Кликни на String-константу правой кнопкой и выбери HEX, а потом вписывай туда байты.
Re: как засунуть сигналы управления stx, etx в string?
Вставлю свои 5 копеек. Мой вопрос к знатокам LabVIEW . Вот картинка
Пояснение . Коды служебных сигналов STX и ETX равны 02 и 03 цифры и буквы смещены на 30H в формате ASCII. Контрольная сумма не учитывает символ STX и заканчивается символом ETX. Обрезается до младшего байта и добавляется в конец строки в формате Hexadecimal, все это в порт СОМ. В СИ я могу показать, как это сделать, а как сделать это в LabVIEW?. Неужели проще(?), если да, займусь этим продуктом
Пояснение . Коды служебных сигналов STX и ETX равны 02 и 03 цифры и буквы смещены на 30H в формате ASCII. Контрольная сумма не учитывает символ STX и заканчивается символом ETX. Обрезается до младшего байта и добавляется в конец строки в формате Hexadecimal, все это в порт СОМ. В СИ я могу показать, как это сделать, а как сделать это в LabVIEW?. Неужели проще(?), если да, займусь этим продуктом
- Вложения
-
- stx.JPG (9.29 КБ) 6677 просмотров
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: как засунуть сигналы управления stx, etx в string?
В LabVIEW наверное так же просто как и в Си. Правда ничего обрезать не там не там не надо. Делаешь байтовый массив и заполняешь его байтами. А в LabVIEW можно даже и без массива, т.к. байтовый массив и является строкой. Хотя и в Си тоже. Может ты имеешь ввиду преобразование между ASCII и Binary?
Т.к. по таблице преобразования получается:
символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h
Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.
Т.к. по таблице преобразования получается:
символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h
Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.
Re: как засунуть сигналы управления stx, etx в string?
Я извиняюсь за назойливость, но меня интересовало не значение символов цифр (они показаны на рисунке), а как просто переслать на выход ( например СОМ порт) строку состоящую из управляющих символов + данных + контрольной суммы. Пожалуйста проанализируй картинку! Поясняю, первый символ проходит на выход и не подсчитывается в сумме, но он дает начало для подсчета. Далее подсчитывается сумма значений символов цифр данных и символа ETX. Заметь, его значение не 32H а 02H и оно присутствует в сумме. После этого символа добавляется два символа значений младшего байта. Если не обрезать, то в сумме учавствует два байта. Кстати, символы STX , ETX и другие, находятся в таблице ASCII кодов в самом начале до адресов символов цифр. Поэтому можно поставить опцию
Backslash ('\') Codes Display в String To Write control. Тогда строка будет проходить вместе с управляющими символами.
Все это только начало для протокола управления драйвером MELSERVO-J2-Super.
Комманд много и в зависимости от этого в драйвер поступают 5 форматов посылок. В ответ из него назад получаю 4 формата отклика драйвера. В каждом из них могут быть 8 пар сообщений. Хочу поробовать это сделать в LabVIEW. С драйвером я уже связался но пока в рукопашном варианте. Теперь надо постепенно автоматизировать процесс.
Backslash ('\') Codes Display в String To Write control. Тогда строка будет проходить вместе с управляющими символами.
Все это только начало для протокола управления драйвером MELSERVO-J2-Super.
Комманд много и в зависимости от этого в драйвер поступают 5 форматов посылок. В ответ из него назад получаю 4 формата отклика драйвера. В каждом из них могут быть 8 пар сообщений. Хочу поробовать это сделать в LabVIEW. С драйвером я уже связался но пока в рукопашном варианте. Теперь надо постепенно автоматизировать процесс.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: как засунуть сигналы управления stx, etx в string?
Уважаемый supermoderator " eg " если Вы взялись отвечать на вопросы по этой теме, то я хотел бы внести ясность в ваши ответы: Не понятнно, - но здорово. Видимо человеку, который открыл эту тему, так же стало не понятно, поэтому он и замолчал.
Я еще раз прочитал Ваши ответы и хочу Вас покритиковать за них.
Ваш ответ.
В LabVIEW наверное так же просто как и в Си. Правда ничего обрезать не там не там не надо. Делаешь байтовый массив и заполняешь его байтами. А в LabVIEW можно даже и без массива, т.к. байтовый массив и является строкой. Хотя и в Си тоже. Может ты имеешь ввиду преобразование между ASCII и Binary?
Т.к. по таблице преобразования получается:
символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h
Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.
Мой ответ на Ваш ответ таков:
Неточность 1: "т.к. байтовый массив и является строкой" - Байтовый массив не является строкой. Строку можно уложить в байтовый массив, поскольку размерность позволяет.
Неточность 2: "преобразование между ASCII и Binary"- в природе не существует. Есть представление одного числа в разных форматах или системах. Преобразование необходимо, когда одна сторона не понимает другую. Тогда нужна перекодировка.
Неточность 3: "Не надо путать символы с их значениями"- требут пояснения. Что такое значение?
Это его адресс в таблице ASCII : 4 бита – номер строки , 4 старших бита – номер столбца . В пересечении этих величин находится символ.
Человек, который открыл эту тему, видимо хотел узнать, как передать служебные символы в строке, если коды самих символов больше кодов служебных сигналов.
Поясняю : непонятно, как послать код символа STX в строке, если '0' (символ нуля) имеет код 30H, а это больше "значения " служебного символа STX[001] ? В моем случае STX [02].
В LabVIEW, если в строке есть символ '\' ,то следующая за ним цифра интерпретируется как HEX значение , а не символ . Т.е. \1 будет транслировано как 01H, а не символа '1' с кодом 31H.
Необходимо только выбрать правой кнопкой опцию Backslash ('\') Codes Display.
Последний пример с элементом Concatenate Strings мне не подходит в таком использовании, т.к. надо добавить сумму, которую надо пересчитывать автоматически. Меняются комманды, параметры комманды, данные, используемых регистров .
Я еще раз прочитал Ваши ответы и хочу Вас покритиковать за них.
Ваш ответ.
В LabVIEW наверное так же просто как и в Си. Правда ничего обрезать не там не там не надо. Делаешь байтовый массив и заполняешь его байтами. А в LabVIEW можно даже и без массива, т.к. байтовый массив и является строкой. Хотя и в Си тоже. Может ты имеешь ввиду преобразование между ASCII и Binary?
Т.к. по таблице преобразования получается:
символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h
Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.
Мой ответ на Ваш ответ таков:
Неточность 1: "т.к. байтовый массив и является строкой" - Байтовый массив не является строкой. Строку можно уложить в байтовый массив, поскольку размерность позволяет.
Неточность 2: "преобразование между ASCII и Binary"- в природе не существует. Есть представление одного числа в разных форматах или системах. Преобразование необходимо, когда одна сторона не понимает другую. Тогда нужна перекодировка.
Неточность 3: "Не надо путать символы с их значениями"- требут пояснения. Что такое значение?
Это его адресс в таблице ASCII : 4 бита – номер строки , 4 старших бита – номер столбца . В пересечении этих величин находится символ.
Человек, который открыл эту тему, видимо хотел узнать, как передать служебные символы в строке, если коды самих символов больше кодов служебных сигналов.
Поясняю : непонятно, как послать код символа STX в строке, если '0' (символ нуля) имеет код 30H, а это больше "значения " служебного символа STX[001] ? В моем случае STX [02].
В LabVIEW, если в строке есть символ '\' ,то следующая за ним цифра интерпретируется как HEX значение , а не символ . Т.е. \1 будет транслировано как 01H, а не символа '1' с кодом 31H.
Необходимо только выбрать правой кнопкой опцию Backslash ('\') Codes Display.
Последний пример с элементом Concatenate Strings мне не подходит в таком использовании, т.к. надо добавить сумму, которую надо пересчитывать автоматически. Меняются комманды, параметры комманды, данные, используемых регистров .
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: как засунуть сигналы управления stx, etx в string?
Строку можно уложить в байтовый массив, а так же байтовый массив можно преобразовать в строку добавив к нему нулевой байт. Я имею ввиду что это почти одно и то же и преобразовывается из одного в другое без каких либо проблем.IL@NOT писал(а): Мой ответ на Ваш ответ таков:
Неточность 1: "т.к. байтовый массив и является строкой" - Байтовый массив не является строкой. Строку можно уложить в байтовый массив, поскольку размерность позволяет.
Это точно. Преобразования на самом деле нет, но есть интерпретация.IL@NOT писал(а): Неточность 2: "преобразование между ASCII и Binary"- в природе не существует. Есть представление одного числа в разных форматах или системах. Преобразование необходимо, когда одна сторона не понимает другую. Тогда нужна перекодировка.
http://ru.wikipedia.org/wiki/ASCII
Через таблицу символов ASCII можно представить какое либо значение в виде символа (буква, цифра и т.д.)
Да, можно выбрать опцию визуализации (Display). Я в верхнем примере выбрал 16-тиричное представление и вписал туда значение символа STX и ETX, т.к. этих символов на клавиатуре не существует.IL@NOT писал(а): Неточность 3: "Не надо путать символы с их значениями"- требут пояснения. Что такое значение?
Это его адресс в таблице ASCII : 4 бита – номер строки , 4 старших бита – номер столбца . В пересечении этих величин находится символ.
Человек, который открыл эту тему, видимо хотел узнать, как передать служебные символы в строке, если коды самих символов больше кодов служебных сигналов.
Поясняю : непонятно, как послать код символа STX в строке, если '0' (символ нуля) имеет код 30H, а это больше "значения " служебного символа STX[001] ? В моем случае STX [02].
В LabVIEW, если в строке есть символ '\' ,то следующая за ним цифра интерпретируется как HEX значение , а не символ . Т.е. \1 будет транслировано как 01H, а не символа '1' с кодом 31H.
Необходимо только выбрать правой кнопкой опцию Backslash ('\') Codes Display.
Да как сделать контрольную сумму я в примере не показал, т.к. хотел наиболее просто обьяснить как создать пакет.IL@NOT писал(а): Последний пример с элементом Concatenate Strings мне не подходит в таком использовании, т.к. надо добавить сумму, которую надо пересчитывать автоматически. Меняются комманды, параметры комманды, данные, используемых регистров .
Большое спасибо за критику. Я тоже не всё знаю на 100% и иногда могу ошибится в своих обьяснениях. Хотя не считаю что именно в ответах в этой теме я где то ошибся. Может не точно выразился, может и непонятно.
Кстати если ты непротив, то можно в форуме общатся на "ты" независимо от возраста.
Re: как засунуть сигналы управления stx, etx в string?
Вот и отлично! Я очень рад, что мы поняли друг друга. Все делается для того чтобы расширить границы познания.
Вспомнился афоризм: " В то время, когда разум, с боем расширяет свои границы, для глупости вообще не существует преград"
Вспомнился афоризм: " В то время, когда разум, с боем расширяет свои границы, для глупости вообще не существует преград"
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 14 Ответы
- 705 Просмотры
-
Последнее сообщение Vladimir_T
-
- 12 Ответы
- 1433 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 19 Ответы
- 2637 Просмотры
-
Последнее сообщение Artem.spb
-
- 3 Ответы
- 1724 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 1208 Просмотры
-
Последнее сообщение Юрий