Что такое CMIString4096 и как я могу извлечь данные в нем? - PullRequest
4 голосов
/ 03 июня 2009

У меня есть эта строка, которую я получаю из Adobe Presenter 7. Она называется suspend_data и имеет тип CMIString4096 (по документам)

CMIString4096 Набор символов ASCII с максимальной длиной из 4096 символов.

Это строка:

aG1111111000000000BB001EC% 2EacC% 7E% 24GS% 2AayjHm110BKCBBB0B0EBAB1B1ED% 2EicC% 7E% 24GS% 2AlfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE% 2EwcC% 7E% 24GS% 2ACBlHm100BKDB2BCBCDB1BABBDB0BBBADF% 2E7cC% 7E% 24GS% 2A4GmHm110BKBB0Ebl% C3% A1rRbl% C3% A1R% 3Bgr% C3% A6nn % 3Brau% C3% B0urB

Похоже на base64 с некоторыми символами в кодировке urlencoded. Когда я urldecode () строки, последние несколько символов напоминают некоторые данные, но они находятся в utf8, тогда я utf8_decode и вижу это.

aG1111111000000000BB001EC.acC~$GS*ayjHm110BKCBBB0B0EBAB1B1ED.icC~$GS*
lfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE.wcC~$GS*CBlHm100BKDB2BCBCDB1BABBDB0BBBADF.
7cC~$GS*4GmHm110BKBB0EblárRblár;grænn;rauðurB

Хорошо, я ближе к некоторым данным (в конце), но похоже, что это беспорядок. Когда я использую base64_decode (), я получаю некоторый двоичный беспорядок, но я не знаю, что это такое.

Кто-нибудь знает, что это за данные и как я могу в них разобраться? Я использую PHP, кстати, только функции внутри него применимы.

Ответы [ 3 ]

4 голосов
/ 03 июня 2009

Данные, хранящиеся в поле cmi.suspend_data, представляют собой просто набор данных, которые SCO (содержимое) может использовать для сохранения своего текущего состояния. Нет никакого семантического значения или определенной структуры данных. Во многих случаях значение данных может быть угадано или изменено, но это не относится к контенту, созданному Adobe Presenter.

Поле suspend_data ограничено 4096 символами ASCII. Для некоторых SCO это не обеспечивает достаточно места для полного сохранения текущего состояния. Во многих случаях разработчик контента, сталкивающийся с этим затруднительным положением, применяет алгоритм сжатия к данным состояния, чтобы сжать их до ограниченного размера. Похоже, это то, что Adobe Presenter делает здесь. Я предполагаю, что они сжимали свои данные в найденное вами незакодированное состояние, а затем применили кодировку url, чтобы гарантировать, что все полученные символы были безопасны для отправки в LMS.

Строка из 1 и 0 в начале данных приостановки может быть чем-то значимым. Вероятно, это может соответствовать тому, какие из слайдов в курсе были ранее просмотрены учеником. Чтобы убедиться в этом, может быть полезно провести курс с помощью такого инструмента, как SCORM TestTrack (свободно доступен по адресу scorm.com ), и использовать сгенерированные журналы отладки, чтобы посмотреть, как изменяются данные приостановки по мере прохождения пользователем курс.

SCORM предоставляет довольно много других элементов модели данных, которые имеют конкретное значение, относящееся к текущему состоянию курса. Вот список всех доступных элементов модели данных . Журналы отладки SCORM TestTrack также покажут, какой из этих элементов модели данных используется в представлении Adobe Presented.

1 голос
/ 03 июня 2009

Найдено

13. cmi.suspend_data

Чтение / запись

Предназначен для хранения любая информация, которую хотела бы ШОС сохраняться до следующего сеанса.

в здесь . Так как Martin писал, SCORM определяет только тип данных, а не кодировку или содержимое cmi.suspend_data . Возможно, этот может помочь вам в определении кодировки.

1 голос
/ 03 июня 2009

Я не думаю, что SCORM определяет, что содержит поле suspend_data или в каком формате. Это полностью зависит от содержания / урока (Adobe Presenter в вашем случае), но он может быть только текстовым и ограничен 4096 символами.

Это поле может использоваться контентом для хранения любого состояния, которое должно быть передано обратно контенту при следующем запуске.

...