Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о SMH-2G(i)

Вопросы о SMH-2G(i) Здесь всё, что касается работы контроллера SMH-2G(i).

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.06.2013, 12:55   #1
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Работа с Shared Memory в PHP

А не подскажете где прочитать про работу PHP с распределяемой памятью?

Последний раз редактировалось Arsie, 24.07.2013 в 13:47
Max2114 вне форума   Ответить с цитированием
Старый 21.06.2013, 13:16   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата
Сообщение от Max2114 Посмотреть сообщение
А не подскажете где прочитать про работу PHP с распределяемой памятью?
Самое доступное - в интернете. Я обычно использую Гугл. Но можно использовать абсолютно любой поисковик.

Механизм разделяемой памяти не мы придумали.

Чуть подробнее в английской версии.

Но вообще вне конкуренции домен PHP.su


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 24.06.2013, 14:46   #3
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата:
Сообщение от Arsie Посмотреть сообщение
Самое доступное - в интернете. Я обычно использую Гугл. Но можно использовать абсолютно любой поисковик.

Механизм разделяемой памяти не мы придумали.

Чуть подробнее в английской версии.

Но вообще вне конкуренции домен PHP.su
раз уж об этом заговорили:
как я понял для обращения в Shared memory средствами php Нужно:
1. Открыть Shared Memory для чтения типа того:
<?php
$shm_id = shmop_open(0x0fff, "c", 0644, 100);
?>
где 0х0fff key системный id для блока shared memory, этот параметр может передаваться как 10-ричный или 16-ричный
2. прочитать переменную:
<?php
$shm_data = shmop_read($shm_id, 0, 50);
?>
где 0 - стартовый адрес, 50 - количество байт
У вас в файле «load_files.srv» появляется перечень переменных Shared Memory с информацией наподобии:
var1=0x134,4,3,8,Parameter
где:
0x134 – адрес переменной в адресном пространстве ядра «logix»
4 – размер переменной в байтах
3 – тип данных переменной в среде «SMLogix» - float (real)
В среде « SMLogix » встречаются типы данных:
• 0 – bool
• 1 – int (тип short int – 2 байта в «C/С++»)
• 2 – long
• 3 – real (тип float в «C/С++»)
8 – адрес переменной в адресном пространстве разделяемой памяти контроллера «/dev/shm/wsi»
Parameter – имя (идентификатор) переменной
таким образом я "встал в тупик". Где мне взять системный id для блока shared memory (для PHP)?
Max2114 вне форума   Ответить с цитированием
Старый 24.06.2013, 15:01   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата
Сообщение от Max2114 Посмотреть сообщение
раз уж об этом заговорили:
как я понял для обращения в Shared memory средствами php Нужно:
[...]
таким образом я "встал в тупик". Где мне взять системный id для блока shared memory (для PHP)?
http://forum.segnetics.com/showthread.php?t=646 - это возможно

http://forum.segnetics.com/showthread.php?t=995 - а тут похоже ответ на ваш вопрос.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 24.06.2013, 15:12   #5
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата:
Сообщение от Arsie Посмотреть сообщение
http://forum.segnetics.com/showthread.php?t=646 - это возможно

http://forum.segnetics.com/showthread.php?t=995 - а тут похоже ответ на ваш вопрос.
Нет там ответа на мой вопрос!
Я не хочу писать данные в еще один файл на С++ и брать потом их оттуда при помощи HTML (как сделано у вас в примере)... я хочу забрирать напрямую из Shared Memory при помощи функциц PHP и застопорился я на том, что не знаю как найти key (идентификатор) переменной...
Попробова найти KEY при помощи ftok вот так
$shm_key = ftok('/dev/shm/wsi', 'temp_vnesh');
получил в ответ -1
Перменную по этому ключу в ответ естественно не получил.
а если попросить вот так:
$shm_key = ftok('/dev/shm/wsi', 't');
то возвращает
1947205880

Последний раз редактировалось Max2114, 24.06.2013 в 15:33
Max2114 вне форума   Ответить с цитированием
Старый 24.06.2013, 15:48   #6
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата
Сообщение от Max2114 Посмотреть сообщение
Нет там ответа на мой вопрос!
Я не хочу писать данные в еще один файл на С++ и брать потом их оттуда при помощи HTML (как сделано у вас в примере)... я хочу забрирать напрямую из Shared Memory при помощи функциц PHP и застопорился я на том, что не знаю как найти key (идентификатор) переменной...
Попробова найти KEY при помощи ftok вот так
$shm_key = ftok('/dev/shm/wsi', 'temp_vnesh');
получил в ответ -1
Перменную по этому ключу в ответ естественно не получил.
а если попросить вот так:
$shm_key = ftok('/dev/shm/wsi', 't');
то возвращает
1947205880
Разбираюсь дальше... понял что второй аргумент в функции ftok - это однобайтовый ID переменной. Подвился вопрос где брать его (т.е. если пишу один символ типа a, 6, 8 - то возвращает какой-то Key) а вот какой, и как вернуть нужный - пока непонятно.
Max2114 вне форума   Ответить с цитированием
Старый 24.06.2013, 16:02   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: 2Gi и жизнь EEPROM

Цитата
Сообщение от Max2114 Посмотреть сообщение
Разбираюсь дальше... понял что второй аргумент в функции ftok - это однобайтовый ID переменной. Подвился вопрос где брать его (т.е. если пишу один символ типа a, 6, 8 - то возвращает какой-то Key) а вот какой, и как вернуть нужный - пока непонятно.
Для того чтобы получить ключ, надо передавать символ 'b' в качестве второго параметра, т.е. так:

$shm_key = ftok('/dev/shm/wsi', 'b');


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 24.07.2013 в 13:48
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Shared memory - Web sinkevich Связь с внешним миром 24 25.02.2020 20:11
Logix: Работа на порту невозможна Arsie ЧаВо - Часто задаваемые Вопросы 0 09.06.2018 11:51
Как получить доступ к FBD-журналу на PHP tuxnsk Вопросы о Trim5 19 20.06.2017 11:09


Часовой пояс GMT +4, время: 03:59.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023